/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};

/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {

/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId])
/******/ 			return installedModules[moduleId].exports;

/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			exports: {},
/******/ 			id: moduleId,
/******/ 			loaded: false
/******/ 		};

/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);

/******/ 		// Flag the module as loaded
/******/ 		module.loaded = true;

/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}


/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;

/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;

/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";

/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ({

/***/ 0:
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;
	__webpack_require__.p = (function getPath() {

	    /**
	     * This is a port of make_url from js/util.js
	     */
	    function make_url() {
	        var output = '', seg, len;
	        for (var i=0,l=arguments.length; i<l; i++) {
	            seg = arguments[i].toString();
	            len = seg.length;
	            if (len > 1 && seg.charAt(len-1) == '/') {
	                seg = seg.substring(0, len-1);
	            }
	            if (seg.charAt(0) != '/') {
	                output += '/' + seg;
	            } else {
	                output += seg;
	            }
	        }

	        // augment static dirs with build number
	        if (output!='/') {
	            var segments = output.split('/');
	            var firstseg = segments[1];
	            if (firstseg=='static' || firstseg=='modules') {
	                var postfix = output.substring(firstseg.length+2, output.length);
	                output = '/' + firstseg;
	                if (window.$C['BUILD_NUMBER']) output += '/@' + window.$C['BUILD_NUMBER'];
	                if (window.$C['BUILD_PUSH_NUMBER']) output += '.' + window.$C['BUILD_PUSH_NUMBER'];
	                if (segments[2] == 'app')
	                    output += ':'+ getConfigValue('APP_BUILD', 0);
	                output += '/' + postfix;
	            }
	        }

	        var root = getConfigValue('MRSPARKLE_ROOT_PATH', '/');
	        var djangoRoot = getConfigValue('DJANGO_ROOT_PATH', '');
	        var locale = getConfigValue('LOCALE', 'en-US');

	        var combinedPath = "";
	        if (djangoRoot && output.substring(0, djangoRoot.length) === djangoRoot) {
	            combinedPath = output.replace(djangoRoot, djangoRoot + "/" + locale.toLowerCase());
	        } else {
	            combinedPath = "/" + locale + output;
	        }

	        if (root == '' || root == '/') {
	            return combinedPath;
	        } else {
	            return root + combinedPath;
	        }
	    }

	    function getConfigValue(key, defaultValue) {
	        if (window.$C && window.$C.hasOwnProperty(key)) {
	            return window.$C[key];
	        } else {
	            if (defaultValue !== undefined) {
	                return defaultValue;
	            }

	            throw new Error('getConfigValue - ' + key + ' not set, no default provided');
	        }
	    }

	    return make_url('static/build/js') + '/';
	})();
	!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require) {
	    var requirejs = __webpack_require__("shim/requirejs");
	    var define = __webpack_require__("shim/requirejsDefine");
	    var splunkUtil = __webpack_require__("shim/splunk.util")
	    var _ = __webpack_require__("require/underscore");

	    __webpack_require__(4);

	    requirejs.config({
	        baseUrl: splunkUtil.make_url('static/js')
	    });

	    var exposedModules = __webpack_require__(263);

	    _.forEach(exposedModules, function(mod, key) {
	        define(key, function() {
	            return mod;
	        });
	    });
	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ 1:
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(2)(__webpack_require__(3))

/***/ }),

/***/ 2:
/***/ (function(module, exports) {

	/*
		MIT License http://www.opensource.org/licenses/mit-license.php
		Author Tobias Koppers @sokra
	*/
	module.exports = function(src) {
		if (typeof execScript === "function")
			execScript(src);
		else
			eval.call(null, src);
	}

/***/ }),

/***/ 3:
/***/ (function(module, exports) {

	module.exports = "/** vim: et:ts=4:sw=4:sts=4\n * @license RequireJS 2.1.15 Copyright (c) 2010-2014, The Dojo Foundation All Rights Reserved.\n * Available via the MIT or new BSD license.\n * see: http://github.com/jrburke/requirejs for details\n */\n//Not using strict: uneven strict support in browsers, #392, and causes\n//problems with requirejs.exec()/transpiler plugins that may not be strict.\n/*jslint regexp: true, nomen: true, sloppy: true */\n/*global window, navigator, document, importScripts, setTimeout, opera */\n\nvar requirejs, require, define;\n(function (global) {\n    var req, s, head, baseElement, dataMain, src,\n        interactiveScript, currentlyAddingScript, mainScript, subPath,\n        version = '2.1.15',\n        commentRegExp = /(\\/\\*([\\s\\S]*?)\\*\\/|([^:]|^)\\/\\/(.*)$)/mg,\n        cjsRequireRegExp = /[^.]\\s*require\\s*\\(\\s*[\"']([^'\"\\s]+)[\"']\\s*\\)/g,\n        jsSuffixRegExp = /\\.js$/,\n        currDirRegExp = /^\\.\\//,\n        op = Object.prototype,\n        ostring = op.toString,\n        hasOwn = op.hasOwnProperty,\n        ap = Array.prototype,\n        apsp = ap.splice,\n        isBrowser = !!(typeof window !== 'undefined' && typeof navigator !== 'undefined' && window.document),\n        isWebWorker = !isBrowser && typeof importScripts !== 'undefined',\n        //PS3 indicates loaded and complete, but need to wait for complete\n        //specifically. Sequence is 'loading', 'loaded', execution,\n        // then 'complete'. The UA check is unfortunate, but not sure how\n        //to feature test w/o causing perf issues.\n        readyRegExp = isBrowser && navigator.platform === 'PLAYSTATION 3' ?\n                      /^complete$/ : /^(complete|loaded)$/,\n        defContextName = '_',\n        //Oh the tragedy, detecting opera. See the usage of isOpera for reason.\n        isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]',\n        contexts = {},\n        cfg = {},\n        globalDefQueue = [],\n        useInteractive = false;\n\n    function isFunction(it) {\n        return ostring.call(it) === '[object Function]';\n    }\n\n    function isArray(it) {\n        return ostring.call(it) === '[object Array]';\n    }\n\n    /**\n     * Helper function for iterating over an array. If the func returns\n     * a true value, it will break out of the loop.\n     */\n    function each(ary, func) {\n        if (ary) {\n            var i;\n            for (i = 0; i < ary.length; i += 1) {\n                if (ary[i] && func(ary[i], i, ary)) {\n                    break;\n                }\n            }\n        }\n    }\n\n    /**\n     * Helper function for iterating over an array backwards. If the func\n     * returns a true value, it will break out of the loop.\n     */\n    function eachReverse(ary, func) {\n        if (ary) {\n            var i;\n            for (i = ary.length - 1; i > -1; i -= 1) {\n                if (ary[i] && func(ary[i], i, ary)) {\n                    break;\n                }\n            }\n        }\n    }\n\n    function hasProp(obj, prop) {\n        return hasOwn.call(obj, prop);\n    }\n\n    function getOwn(obj, prop) {\n        return hasProp(obj, prop) && obj[prop];\n    }\n\n    /**\n     * Cycles over properties in an object and calls a function for each\n     * property value. If the function returns a truthy value, then the\n     * iteration is stopped.\n     */\n    function eachProp(obj, func) {\n        var prop;\n        for (prop in obj) {\n            if (hasProp(obj, prop)) {\n                if (func(obj[prop], prop)) {\n                    break;\n                }\n            }\n        }\n    }\n\n    /**\n     * Simple function to mix in properties from source into target,\n     * but only if target does not already have a property of the same name.\n     */\n    function mixin(target, source, force, deepStringMixin) {\n        if (source) {\n            eachProp(source, function (value, prop) {\n                if (force || !hasProp(target, prop)) {\n                    if (deepStringMixin && typeof value === 'object' && value &&\n                        !isArray(value) && !isFunction(value) &&\n                        !(value instanceof RegExp)) {\n\n                        if (!target[prop]) {\n                            target[prop] = {};\n                        }\n                        mixin(target[prop], value, force, deepStringMixin);\n                    } else {\n                        target[prop] = value;\n                    }\n                }\n            });\n        }\n        return target;\n    }\n\n    //Similar to Function.prototype.bind, but the 'this' object is specified\n    //first, since it is easier to read/figure out what 'this' will be.\n    function bind(obj, fn) {\n        return function () {\n            return fn.apply(obj, arguments);\n        };\n    }\n\n    function scripts() {\n        return document.getElementsByTagName('script');\n    }\n\n    function defaultOnError(err) {\n        throw err;\n    }\n\n    //Allow getting a global that is expressed in\n    //dot notation, like 'a.b.c'.\n    function getGlobal(value) {\n        if (!value) {\n            return value;\n        }\n        var g = global;\n        each(value.split('.'), function (part) {\n            g = g[part];\n        });\n        return g;\n    }\n\n    /**\n     * Constructs an error with a pointer to an URL with more information.\n     * @param {String} id the error ID that maps to an ID on a web page.\n     * @param {String} message human readable error.\n     * @param {Error} [err] the original error, if there is one.\n     *\n     * @returns {Error}\n     */\n    function makeError(id, msg, err, requireModules) {\n        var e = new Error(msg + '\\nhttp://requirejs.org/docs/errors.html#' + id);\n        e.requireType = id;\n        e.requireModules = requireModules;\n        if (err) {\n            e.originalError = err;\n        }\n        return e;\n    }\n\n    if (typeof define !== 'undefined') {\n        //If a define is already in play via another AMD loader,\n        //do not overwrite.\n        return;\n    }\n\n    if (typeof requirejs !== 'undefined') {\n        if (isFunction(requirejs)) {\n            //Do not overwrite an existing requirejs instance.\n            return;\n        }\n        cfg = requirejs;\n        requirejs = undefined;\n    }\n\n    //Allow for a require config object\n    if (typeof require !== 'undefined' && !isFunction(require)) {\n        //assume it is a config object.\n        cfg = require;\n        require = undefined;\n    }\n\n    function newContext(contextName) {\n        var inCheckLoaded, Module, context, handlers,\n            checkLoadedTimeoutId,\n            config = {\n                //Defaults. Do not set a default for map\n                //config to speed up normalize(), which\n                //will run faster if there is no default.\n                waitSeconds: 7,\n                baseUrl: './',\n                paths: {},\n                bundles: {},\n                pkgs: {},\n                shim: {},\n                config: {}\n            },\n            registry = {},\n            //registry of just enabled modules, to speed\n            //cycle breaking code when lots of modules\n            //are registered, but not activated.\n            enabledRegistry = {},\n            undefEvents = {},\n            defQueue = [],\n            defined = {},\n            urlFetched = {},\n            bundlesMap = {},\n            requireCounter = 1,\n            unnormalizedCounter = 1;\n\n        /**\n         * Trims the . and .. from an array of path segments.\n         * It will keep a leading path segment if a .. will become\n         * the first path segment, to help with module name lookups,\n         * which act like paths, but can be remapped. But the end result,\n         * all paths that use this function should look normalized.\n         * NOTE: this method MODIFIES the input array.\n         * @param {Array} ary the array of path segments.\n         */\n        function trimDots(ary) {\n            var i, part;\n            for (i = 0; i < ary.length; i++) {\n                part = ary[i];\n                if (part === '.') {\n                    ary.splice(i, 1);\n                    i -= 1;\n                } else if (part === '..') {\n                    // If at the start, or previous value is still ..,\n                    // keep them so that when converted to a path it may\n                    // still work when converted to a path, even though\n                    // as an ID it is less than ideal. In larger point\n                    // releases, may be better to just kick out an error.\n                    if (i === 0 || (i == 1 && ary[2] === '..') || ary[i - 1] === '..') {\n                        continue;\n                    } else if (i > 0) {\n                        ary.splice(i - 1, 2);\n                        i -= 2;\n                    }\n                }\n            }\n        }\n\n        /**\n         * Given a relative module name, like ./something, normalize it to\n         * a real name that can be mapped to a path.\n         * @param {String} name the relative name\n         * @param {String} baseName a real name that the name arg is relative\n         * to.\n         * @param {Boolean} applyMap apply the map config to the value. Should\n         * only be done if this normalization is for a dependency ID.\n         * @returns {String} normalized name\n         */\n        function normalize(name, baseName, applyMap) {\n            var pkgMain, mapValue, nameParts, i, j, nameSegment, lastIndex,\n                foundMap, foundI, foundStarMap, starI, normalizedBaseParts,\n                baseParts = (baseName && baseName.split('/')),\n                map = config.map,\n                starMap = map && map['*'];\n\n            //Adjust any relative paths.\n            if (name) {\n                name = name.split('/');\n                lastIndex = name.length - 1;\n\n                // If wanting node ID compatibility, strip .js from end\n                // of IDs. Have to do this here, and not in nameToUrl\n                // because node allows either .js or non .js to map\n                // to same file.\n                if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n                    name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n                }\n\n                // Starts with a '.' so need the baseName\n                if (name[0].charAt(0) === '.' && baseParts) {\n                    //Convert baseName to array, and lop off the last part,\n                    //so that . matches that 'directory' and not name of the baseName's\n                    //module. For instance, baseName of 'one/two/three', maps to\n                    //'one/two/three.js', but we want the directory, 'one/two' for\n                    //this normalization.\n                    normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n                    name = normalizedBaseParts.concat(name);\n                }\n\n                trimDots(name);\n                name = name.join('/');\n            }\n\n            //Apply map config if available.\n            if (applyMap && map && (baseParts || starMap)) {\n                nameParts = name.split('/');\n\n                outerLoop: for (i = nameParts.length; i > 0; i -= 1) {\n                    nameSegment = nameParts.slice(0, i).join('/');\n\n                    if (baseParts) {\n                        //Find the longest baseName segment match in the config.\n                        //So, do joins on the biggest to smallest lengths of baseParts.\n                        for (j = baseParts.length; j > 0; j -= 1) {\n                            mapValue = getOwn(map, baseParts.slice(0, j).join('/'));\n\n                            //baseName segment has config, find if it has one for\n                            //this name.\n                            if (mapValue) {\n                                mapValue = getOwn(mapValue, nameSegment);\n                                if (mapValue) {\n                                    //Match, update name to the new value.\n                                    foundMap = mapValue;\n                                    foundI = i;\n                                    break outerLoop;\n                                }\n                            }\n                        }\n                    }\n\n                    //Check for a star map match, but just hold on to it,\n                    //if there is a shorter segment match later in a matching\n                    //config, then favor over this star map.\n                    if (!foundStarMap && starMap && getOwn(starMap, nameSegment)) {\n                        foundStarMap = getOwn(starMap, nameSegment);\n                        starI = i;\n                    }\n                }\n\n                if (!foundMap && foundStarMap) {\n                    foundMap = foundStarMap;\n                    foundI = starI;\n                }\n\n                if (foundMap) {\n                    nameParts.splice(0, foundI, foundMap);\n                    name = nameParts.join('/');\n                }\n            }\n\n            // If the name points to a package's name, use\n            // the package main instead.\n            pkgMain = getOwn(config.pkgs, name);\n\n            return pkgMain ? pkgMain : name;\n        }\n\n        function removeScript(name) {\n            if (isBrowser) {\n                each(scripts(), function (scriptNode) {\n                    if (scriptNode.getAttribute('data-requiremodule') === name &&\n                            scriptNode.getAttribute('data-requirecontext') === context.contextName) {\n                        scriptNode.parentNode.removeChild(scriptNode);\n                        return true;\n                    }\n                });\n            }\n        }\n\n        function hasPathFallback(id) {\n            var pathConfig = getOwn(config.paths, id);\n            if (pathConfig && isArray(pathConfig) && pathConfig.length > 1) {\n                //Pop off the first array value, since it failed, and\n                //retry\n                pathConfig.shift();\n                context.require.undef(id);\n\n                //Custom require that does not do map translation, since\n                //ID is \"absolute\", already mapped/resolved.\n                context.makeRequire(null, {\n                    skipMap: true\n                })([id]);\n\n                return true;\n            }\n        }\n\n        //Turns a plugin!resource to [plugin, resource]\n        //with the plugin being undefined if the name\n        //did not have a plugin prefix.\n        function splitPrefix(name) {\n            var prefix,\n                index = name ? name.indexOf('!') : -1;\n            if (index > -1) {\n                prefix = name.substring(0, index);\n                name = name.substring(index + 1, name.length);\n            }\n            return [prefix, name];\n        }\n\n        /**\n         * Creates a module mapping that includes plugin prefix, module\n         * name, and path. If parentModuleMap is provided it will\n         * also normalize the name via require.normalize()\n         *\n         * @param {String} name the module name\n         * @param {String} [parentModuleMap] parent module map\n         * for the module name, used to resolve relative names.\n         * @param {Boolean} isNormalized: is the ID already normalized.\n         * This is true if this call is done for a define() module ID.\n         * @param {Boolean} applyMap: apply the map config to the ID.\n         * Should only be true if this map is for a dependency.\n         *\n         * @returns {Object}\n         */\n        function makeModuleMap(name, parentModuleMap, isNormalized, applyMap) {\n            var url, pluginModule, suffix, nameParts,\n                prefix = null,\n                parentName = parentModuleMap ? parentModuleMap.name : null,\n                originalName = name,\n                isDefine = true,\n                normalizedName = '';\n\n            //If no name, then it means it is a require call, generate an\n            //internal name.\n            if (!name) {\n                isDefine = false;\n                name = '_@r' + (requireCounter += 1);\n            }\n\n            nameParts = splitPrefix(name);\n            prefix = nameParts[0];\n            name = nameParts[1];\n\n            if (prefix) {\n                prefix = normalize(prefix, parentName, applyMap);\n                pluginModule = getOwn(defined, prefix);\n            }\n\n            //Account for relative paths if there is a base name.\n            if (name) {\n                if (prefix) {\n                    if (pluginModule && pluginModule.normalize) {\n                        //Plugin is loaded, use its normalize method.\n                        normalizedName = pluginModule.normalize(name, function (name) {\n                            return normalize(name, parentName, applyMap);\n                        });\n                    } else {\n                        // If nested plugin references, then do not try to\n                        // normalize, as it will not normalize correctly. This\n                        // places a restriction on resourceIds, and the longer\n                        // term solution is not to normalize until plugins are\n                        // loaded and all normalizations to allow for async\n                        // loading of a loader plugin. But for now, fixes the\n                        // common uses. Details in #1131\n                        normalizedName = name.indexOf('!') === -1 ?\n                                         normalize(name, parentName, applyMap) :\n                                         name;\n                    }\n                } else {\n                    //A regular module.\n                    normalizedName = normalize(name, parentName, applyMap);\n\n                    //Normalized name may be a plugin ID due to map config\n                    //application in normalize. The map config values must\n                    //already be normalized, so do not need to redo that part.\n                    nameParts = splitPrefix(normalizedName);\n                    prefix = nameParts[0];\n                    normalizedName = nameParts[1];\n                    isNormalized = true;\n\n                    url = context.nameToUrl(normalizedName);\n                }\n            }\n\n            //If the id is a plugin id that cannot be determined if it needs\n            //normalization, stamp it with a unique ID so two matching relative\n            //ids that may conflict can be separate.\n            suffix = prefix && !pluginModule && !isNormalized ?\n                     '_unnormalized' + (unnormalizedCounter += 1) :\n                     '';\n\n            return {\n                prefix: prefix,\n                name: normalizedName,\n                parentMap: parentModuleMap,\n                unnormalized: !!suffix,\n                url: url,\n                originalName: originalName,\n                isDefine: isDefine,\n                id: (prefix ?\n                        prefix + '!' + normalizedName :\n                        normalizedName) + suffix\n            };\n        }\n\n        function getModule(depMap) {\n            var id = depMap.id,\n                mod = getOwn(registry, id);\n\n            if (!mod) {\n                mod = registry[id] = new context.Module(depMap);\n            }\n\n            return mod;\n        }\n\n        function on(depMap, name, fn) {\n            var id = depMap.id,\n                mod = getOwn(registry, id);\n\n            if (hasProp(defined, id) &&\n                    (!mod || mod.defineEmitComplete)) {\n                if (name === 'defined') {\n                    fn(defined[id]);\n                }\n            } else {\n                mod = getModule(depMap);\n                if (mod.error && name === 'error') {\n                    fn(mod.error);\n                } else {\n                    mod.on(name, fn);\n                }\n            }\n        }\n\n        function onError(err, errback) {\n            var ids = err.requireModules,\n                notified = false;\n\n            if (errback) {\n                errback(err);\n            } else {\n                each(ids, function (id) {\n                    var mod = getOwn(registry, id);\n                    if (mod) {\n                        //Set error on module, so it skips timeout checks.\n                        mod.error = err;\n                        if (mod.events.error) {\n                            notified = true;\n                            mod.emit('error', err);\n                        }\n                    }\n                });\n\n                if (!notified) {\n                    req.onError(err);\n                }\n            }\n        }\n\n        /**\n         * Internal method to transfer globalQueue items to this context's\n         * defQueue.\n         */\n        function takeGlobalQueue() {\n            //Push all the globalDefQueue items into the context's defQueue\n            if (globalDefQueue.length) {\n                //Array splice in the values since the context code has a\n                //local var ref to defQueue, so cannot just reassign the one\n                //on context.\n                apsp.apply(defQueue,\n                           [defQueue.length, 0].concat(globalDefQueue));\n                globalDefQueue = [];\n            }\n        }\n\n        handlers = {\n            'require': function (mod) {\n                if (mod.require) {\n                    return mod.require;\n                } else {\n                    return (mod.require = context.makeRequire(mod.map));\n                }\n            },\n            'exports': function (mod) {\n                mod.usingExports = true;\n                if (mod.map.isDefine) {\n                    if (mod.exports) {\n                        return (defined[mod.map.id] = mod.exports);\n                    } else {\n                        return (mod.exports = defined[mod.map.id] = {});\n                    }\n                }\n            },\n            'module': function (mod) {\n                if (mod.module) {\n                    return mod.module;\n                } else {\n                    return (mod.module = {\n                        id: mod.map.id,\n                        uri: mod.map.url,\n                        config: function () {\n                            return  getOwn(config.config, mod.map.id) || {};\n                        },\n                        exports: mod.exports || (mod.exports = {})\n                    });\n                }\n            }\n        };\n\n        function cleanRegistry(id) {\n            //Clean up machinery used for waiting modules.\n            delete registry[id];\n            delete enabledRegistry[id];\n        }\n\n        function breakCycle(mod, traced, processed) {\n            var id = mod.map.id;\n\n            if (mod.error) {\n                mod.emit('error', mod.error);\n            } else {\n                traced[id] = true;\n                each(mod.depMaps, function (depMap, i) {\n                    var depId = depMap.id,\n                        dep = getOwn(registry, depId);\n\n                    //Only force things that have not completed\n                    //being defined, so still in the registry,\n                    //and only if it has not been matched up\n                    //in the module already.\n                    if (dep && !mod.depMatched[i] && !processed[depId]) {\n                        if (getOwn(traced, depId)) {\n                            mod.defineDep(i, defined[depId]);\n                            mod.check(); //pass false?\n                        } else {\n                            breakCycle(dep, traced, processed);\n                        }\n                    }\n                });\n                processed[id] = true;\n            }\n        }\n\n        function checkLoaded() {\n            var err, usingPathFallback,\n                waitInterval = config.waitSeconds * 1000,\n                //It is possible to disable the wait interval by using waitSeconds of 0.\n                expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(),\n                noLoads = [],\n                reqCalls = [],\n                stillLoading = false,\n                needCycleCheck = true;\n\n            //Do not bother if this call was a result of a cycle break.\n            if (inCheckLoaded) {\n                return;\n            }\n\n            inCheckLoaded = true;\n\n            //Figure out the state of all the modules.\n            eachProp(enabledRegistry, function (mod) {\n                var map = mod.map,\n                    modId = map.id;\n\n                //Skip things that are not enabled or in error state.\n                if (!mod.enabled) {\n                    return;\n                }\n\n                if (!map.isDefine) {\n                    reqCalls.push(mod);\n                }\n\n                if (!mod.error) {\n                    //If the module should be executed, and it has not\n                    //been inited and time is up, remember it.\n                    if (!mod.inited && expired) {\n                        if (hasPathFallback(modId)) {\n                            usingPathFallback = true;\n                            stillLoading = true;\n                        } else {\n                            noLoads.push(modId);\n                            removeScript(modId);\n                        }\n                    } else if (!mod.inited && mod.fetched && map.isDefine) {\n                        stillLoading = true;\n                        if (!map.prefix) {\n                            //No reason to keep looking for unfinished\n                            //loading. If the only stillLoading is a\n                            //plugin resource though, keep going,\n                            //because it may be that a plugin resource\n                            //is waiting on a non-plugin cycle.\n                            return (needCycleCheck = false);\n                        }\n                    }\n                }\n            });\n\n            if (expired && noLoads.length) {\n                //If wait time expired, throw error of unloaded modules.\n                err = makeError('timeout', 'Load timeout for modules: ' + noLoads, null, noLoads);\n                err.contextName = context.contextName;\n                return onError(err);\n            }\n\n            //Not expired, check for a cycle.\n            if (needCycleCheck) {\n                each(reqCalls, function (mod) {\n                    breakCycle(mod, {}, {});\n                });\n            }\n\n            //If still waiting on loads, and the waiting load is something\n            //other than a plugin resource, or there are still outstanding\n            //scripts, then just try back later.\n            if ((!expired || usingPathFallback) && stillLoading) {\n                //Something is still waiting to load. Wait for it, but only\n                //if a timeout is not already in effect.\n                if ((isBrowser || isWebWorker) && !checkLoadedTimeoutId) {\n                    checkLoadedTimeoutId = setTimeout(function () {\n                        checkLoadedTimeoutId = 0;\n                        checkLoaded();\n                    }, 50);\n                }\n            }\n\n            inCheckLoaded = false;\n        }\n\n        Module = function (map) {\n            this.events = getOwn(undefEvents, map.id) || {};\n            this.map = map;\n            this.shim = getOwn(config.shim, map.id);\n            this.depExports = [];\n            this.depMaps = [];\n            this.depMatched = [];\n            this.pluginMaps = {};\n            this.depCount = 0;\n\n            /* this.exports this.factory\n               this.depMaps = [],\n               this.enabled, this.fetched\n            */\n        };\n\n        Module.prototype = {\n            init: function (depMaps, factory, errback, options) {\n                options = options || {};\n\n                //Do not do more inits if already done. Can happen if there\n                //are multiple define calls for the same module. That is not\n                //a normal, common case, but it is also not unexpected.\n                if (this.inited) {\n                    return;\n                }\n\n                this.factory = factory;\n\n                if (errback) {\n                    //Register for errors on this module.\n                    this.on('error', errback);\n                } else if (this.events.error) {\n                    //If no errback already, but there are error listeners\n                    //on this module, set up an errback to pass to the deps.\n                    errback = bind(this, function (err) {\n                        this.emit('error', err);\n                    });\n                }\n\n                //Do a copy of the dependency array, so that\n                //source inputs are not modified. For example\n                //\"shim\" deps are passed in here directly, and\n                //doing a direct modification of the depMaps array\n                //would affect that config.\n                this.depMaps = depMaps && depMaps.slice(0);\n\n                this.errback = errback;\n\n                //Indicate this module has be initialized\n                this.inited = true;\n\n                this.ignore = options.ignore;\n\n                //Could have option to init this module in enabled mode,\n                //or could have been previously marked as enabled. However,\n                //the dependencies are not known until init is called. So\n                //if enabled previously, now trigger dependencies as enabled.\n                if (options.enabled || this.enabled) {\n                    //Enable this module and dependencies.\n                    //Will call this.check()\n                    this.enable();\n                } else {\n                    this.check();\n                }\n            },\n\n            defineDep: function (i, depExports) {\n                //Because of cycles, defined callback for a given\n                //export can be called more than once.\n                if (!this.depMatched[i]) {\n                    this.depMatched[i] = true;\n                    this.depCount -= 1;\n                    this.depExports[i] = depExports;\n                }\n            },\n\n            fetch: function () {\n                if (this.fetched) {\n                    return;\n                }\n                this.fetched = true;\n\n                context.startTime = (new Date()).getTime();\n\n                var map = this.map;\n\n                //If the manager is for a plugin managed resource,\n                //ask the plugin to load it now.\n                if (this.shim) {\n                    context.makeRequire(this.map, {\n                        enableBuildCallback: true\n                    })(this.shim.deps || [], bind(this, function () {\n                        return map.prefix ? this.callPlugin() : this.load();\n                    }));\n                } else {\n                    //Regular dependency.\n                    return map.prefix ? this.callPlugin() : this.load();\n                }\n            },\n\n            load: function () {\n                var url = this.map.url;\n\n                //Regular dependency.\n                if (!urlFetched[url]) {\n                    urlFetched[url] = true;\n                    context.load(this.map.id, url);\n                }\n            },\n\n            /**\n             * Checks if the module is ready to define itself, and if so,\n             * define it.\n             */\n            check: function () {\n                if (!this.enabled || this.enabling) {\n                    return;\n                }\n\n                var err, cjsModule,\n                    id = this.map.id,\n                    depExports = this.depExports,\n                    exports = this.exports,\n                    factory = this.factory;\n\n                if (!this.inited) {\n                    this.fetch();\n                } else if (this.error) {\n                    this.emit('error', this.error);\n                } else if (!this.defining) {\n                    //The factory could trigger another require call\n                    //that would result in checking this module to\n                    //define itself again. If already in the process\n                    //of doing that, skip this work.\n                    this.defining = true;\n\n                    if (this.depCount < 1 && !this.defined) {\n                        if (isFunction(factory)) {\n                            //If there is an error listener, favor passing\n                            //to that instead of throwing an error. However,\n                            //only do it for define()'d  modules. require\n                            //errbacks should not be called for failures in\n                            //their callbacks (#699). However if a global\n                            //onError is set, use that.\n                            if ((this.events.error && this.map.isDefine) ||\n                                req.onError !== defaultOnError) {\n                                try {\n                                    exports = context.execCb(id, factory, depExports, exports);\n                                } catch (e) {\n                                    err = e;\n                                }\n                            } else {\n                                exports = context.execCb(id, factory, depExports, exports);\n                            }\n\n                            // Favor return value over exports. If node/cjs in play,\n                            // then will not have a return value anyway. Favor\n                            // module.exports assignment over exports object.\n                            if (this.map.isDefine && exports === undefined) {\n                                cjsModule = this.module;\n                                if (cjsModule) {\n                                    exports = cjsModule.exports;\n                                } else if (this.usingExports) {\n                                    //exports already set the defined value.\n                                    exports = this.exports;\n                                }\n                            }\n\n                            if (err) {\n                                err.requireMap = this.map;\n                                err.requireModules = this.map.isDefine ? [this.map.id] : null;\n                                err.requireType = this.map.isDefine ? 'define' : 'require';\n                                return onError((this.error = err));\n                            }\n\n                        } else {\n                            //Just a literal value\n                            exports = factory;\n                        }\n\n                        this.exports = exports;\n\n                        if (this.map.isDefine && !this.ignore) {\n                            defined[id] = exports;\n\n                            if (req.onResourceLoad) {\n                                req.onResourceLoad(context, this.map, this.depMaps);\n                            }\n                        }\n\n                        //Clean up\n                        cleanRegistry(id);\n\n                        this.defined = true;\n                    }\n\n                    //Finished the define stage. Allow calling check again\n                    //to allow define notifications below in the case of a\n                    //cycle.\n                    this.defining = false;\n\n                    if (this.defined && !this.defineEmitted) {\n                        this.defineEmitted = true;\n                        this.emit('defined', this.exports);\n                        this.defineEmitComplete = true;\n                    }\n\n                }\n            },\n\n            callPlugin: function () {\n                var map = this.map,\n                    id = map.id,\n                    //Map already normalized the prefix.\n                    pluginMap = makeModuleMap(map.prefix);\n\n                //Mark this as a dependency for this plugin, so it\n                //can be traced for cycles.\n                this.depMaps.push(pluginMap);\n\n                on(pluginMap, 'defined', bind(this, function (plugin) {\n                    var load, normalizedMap, normalizedMod,\n                        bundleId = getOwn(bundlesMap, this.map.id),\n                        name = this.map.name,\n                        parentName = this.map.parentMap ? this.map.parentMap.name : null,\n                        localRequire = context.makeRequire(map.parentMap, {\n                            enableBuildCallback: true\n                        });\n\n                    //If current map is not normalized, wait for that\n                    //normalized name to load instead of continuing.\n                    if (this.map.unnormalized) {\n                        //Normalize the ID if the plugin allows it.\n                        if (plugin.normalize) {\n                            name = plugin.normalize(name, function (name) {\n                                return normalize(name, parentName, true);\n                            }) || '';\n                        }\n\n                        //prefix and name should already be normalized, no need\n                        //for applying map config again either.\n                        normalizedMap = makeModuleMap(map.prefix + '!' + name,\n                                                      this.map.parentMap);\n                        on(normalizedMap,\n                            'defined', bind(this, function (value) {\n                                this.init([], function () { return value; }, null, {\n                                    enabled: true,\n                                    ignore: true\n                                });\n                            }));\n\n                        normalizedMod = getOwn(registry, normalizedMap.id);\n                        if (normalizedMod) {\n                            //Mark this as a dependency for this plugin, so it\n                            //can be traced for cycles.\n                            this.depMaps.push(normalizedMap);\n\n                            if (this.events.error) {\n                                normalizedMod.on('error', bind(this, function (err) {\n                                    this.emit('error', err);\n                                }));\n                            }\n                            normalizedMod.enable();\n                        }\n\n                        return;\n                    }\n\n                    //If a paths config, then just load that file instead to\n                    //resolve the plugin, as it is built into that paths layer.\n                    if (bundleId) {\n                        this.map.url = context.nameToUrl(bundleId);\n                        this.load();\n                        return;\n                    }\n\n                    load = bind(this, function (value) {\n                        this.init([], function () { return value; }, null, {\n                            enabled: true\n                        });\n                    });\n\n                    load.error = bind(this, function (err) {\n                        this.inited = true;\n                        this.error = err;\n                        err.requireModules = [id];\n\n                        //Remove temp unnormalized modules for this module,\n                        //since they will never be resolved otherwise now.\n                        eachProp(registry, function (mod) {\n                            if (mod.map.id.indexOf(id + '_unnormalized') === 0) {\n                                cleanRegistry(mod.map.id);\n                            }\n                        });\n\n                        onError(err);\n                    });\n\n                    //Allow plugins to load other code without having to know the\n                    //context or how to 'complete' the load.\n                    load.fromText = bind(this, function (text, textAlt) {\n                        /*jslint evil: true */\n                        var moduleName = map.name,\n                            moduleMap = makeModuleMap(moduleName),\n                            hasInteractive = useInteractive;\n\n                        //As of 2.1.0, support just passing the text, to reinforce\n                        //fromText only being called once per resource. Still\n                        //support old style of passing moduleName but discard\n                        //that moduleName in favor of the internal ref.\n                        if (textAlt) {\n                            text = textAlt;\n                        }\n\n                        //Turn off interactive script matching for IE for any define\n                        //calls in the text, then turn it back on at the end.\n                        if (hasInteractive) {\n                            useInteractive = false;\n                        }\n\n                        //Prime the system by creating a module instance for\n                        //it.\n                        getModule(moduleMap);\n\n                        //Transfer any config to this other module.\n                        if (hasProp(config.config, id)) {\n                            config.config[moduleName] = config.config[id];\n                        }\n\n                        try {\n                            req.exec(text);\n                        } catch (e) {\n                            return onError(makeError('fromtexteval',\n                                             'fromText eval for ' + id +\n                                            ' failed: ' + e,\n                                             e,\n                                             [id]));\n                        }\n\n                        if (hasInteractive) {\n                            useInteractive = true;\n                        }\n\n                        //Mark this as a dependency for the plugin\n                        //resource\n                        this.depMaps.push(moduleMap);\n\n                        //Support anonymous modules.\n                        context.completeLoad(moduleName);\n\n                        //Bind the value of that module to the value for this\n                        //resource ID.\n                        localRequire([moduleName], load);\n                    });\n\n                    //Use parentName here since the plugin's name is not reliable,\n                    //could be some weird string with no path that actually wants to\n                    //reference the parentName's path.\n                    plugin.load(map.name, localRequire, load, config);\n                }));\n\n                context.enable(pluginMap, this);\n                this.pluginMaps[pluginMap.id] = pluginMap;\n            },\n\n            enable: function () {\n                enabledRegistry[this.map.id] = this;\n                this.enabled = true;\n\n                //Set flag mentioning that the module is enabling,\n                //so that immediate calls to the defined callbacks\n                //for dependencies do not trigger inadvertent load\n                //with the depCount still being zero.\n                this.enabling = true;\n\n                //Enable each dependency\n                each(this.depMaps, bind(this, function (depMap, i) {\n                    var id, mod, handler;\n\n                    if (typeof depMap === 'string') {\n                        //Dependency needs to be converted to a depMap\n                        //and wired up to this module.\n                        depMap = makeModuleMap(depMap,\n                                               (this.map.isDefine ? this.map : this.map.parentMap),\n                                               false,\n                                               !this.skipMap);\n                        this.depMaps[i] = depMap;\n\n                        handler = getOwn(handlers, depMap.id);\n\n                        if (handler) {\n                            this.depExports[i] = handler(this);\n                            return;\n                        }\n\n                        this.depCount += 1;\n\n                        on(depMap, 'defined', bind(this, function (depExports) {\n                            this.defineDep(i, depExports);\n                            this.check();\n                        }));\n\n                        if (this.errback) {\n                            on(depMap, 'error', bind(this, this.errback));\n                        }\n                    }\n\n                    id = depMap.id;\n                    mod = registry[id];\n\n                    //Skip special modules like 'require', 'exports', 'module'\n                    //Also, don't call enable if it is already enabled,\n                    //important in circular dependency cases.\n                    if (!hasProp(handlers, id) && mod && !mod.enabled) {\n                        context.enable(depMap, this);\n                    }\n                }));\n\n                //Enable each plugin that is used in\n                //a dependency\n                eachProp(this.pluginMaps, bind(this, function (pluginMap) {\n                    var mod = getOwn(registry, pluginMap.id);\n                    if (mod && !mod.enabled) {\n                        context.enable(pluginMap, this);\n                    }\n                }));\n\n                this.enabling = false;\n\n                this.check();\n            },\n\n            on: function (name, cb) {\n                var cbs = this.events[name];\n                if (!cbs) {\n                    cbs = this.events[name] = [];\n                }\n                cbs.push(cb);\n            },\n\n            emit: function (name, evt) {\n                each(this.events[name], function (cb) {\n                    cb(evt);\n                });\n                if (name === 'error') {\n                    //Now that the error handler was triggered, remove\n                    //the listeners, since this broken Module instance\n                    //can stay around for a while in the registry.\n                    delete this.events[name];\n                }\n            }\n        };\n\n        function callGetModule(args) {\n            //Skip modules already defined.\n            if (!hasProp(defined, args[0])) {\n                getModule(makeModuleMap(args[0], null, true)).init(args[1], args[2]);\n            }\n        }\n\n        function removeListener(node, func, name, ieName) {\n            //Favor detachEvent because of IE9\n            //issue, see attachEvent/addEventListener comment elsewhere\n            //in this file.\n            if (node.detachEvent && !isOpera) {\n                //Probably IE. If not it will throw an error, which will be\n                //useful to know.\n                if (ieName) {\n                    node.detachEvent(ieName, func);\n                }\n            } else {\n                node.removeEventListener(name, func, false);\n            }\n        }\n\n        /**\n         * Given an event from a script node, get the requirejs info from it,\n         * and then removes the event listeners on the node.\n         * @param {Event} evt\n         * @returns {Object}\n         */\n        function getScriptData(evt) {\n            //Using currentTarget instead of target for Firefox 2.0's sake. Not\n            //all old browsers will be supported, but this one was easy enough\n            //to support and still makes sense.\n            var node = evt.currentTarget || evt.srcElement;\n\n            //Remove the listeners once here.\n            removeListener(node, context.onScriptLoad, 'load', 'onreadystatechange');\n            removeListener(node, context.onScriptError, 'error');\n\n            return {\n                node: node,\n                id: node && node.getAttribute('data-requiremodule')\n            };\n        }\n\n        function intakeDefines() {\n            var args;\n\n            //Any defined modules in the global queue, intake them now.\n            takeGlobalQueue();\n\n            //Make sure any remaining defQueue items get properly processed.\n            while (defQueue.length) {\n                args = defQueue.shift();\n                if (args[0] === null) {\n                    return onError(makeError('mismatch', 'Mismatched anonymous define() module: ' + args[args.length - 1]));\n                } else {\n                    //args are id, deps, factory. Should be normalized by the\n                    //define() function.\n                    callGetModule(args);\n                }\n            }\n        }\n\n        context = {\n            config: config,\n            contextName: contextName,\n            registry: registry,\n            defined: defined,\n            urlFetched: urlFetched,\n            defQueue: defQueue,\n            Module: Module,\n            makeModuleMap: makeModuleMap,\n            nextTick: req.nextTick,\n            onError: onError,\n\n            /**\n             * Set a configuration for the context.\n             * @param {Object} cfg config object to integrate.\n             */\n            configure: function (cfg) {\n                //Make sure the baseUrl ends in a slash.\n                if (cfg.baseUrl) {\n                    if (cfg.baseUrl.charAt(cfg.baseUrl.length - 1) !== '/') {\n                        cfg.baseUrl += '/';\n                    }\n                }\n\n                //Save off the paths since they require special processing,\n                //they are additive.\n                var shim = config.shim,\n                    objs = {\n                        paths: true,\n                        bundles: true,\n                        config: true,\n                        map: true\n                    };\n\n                eachProp(cfg, function (value, prop) {\n                    if (objs[prop]) {\n                        if (!config[prop]) {\n                            config[prop] = {};\n                        }\n                        mixin(config[prop], value, true, true);\n                    } else {\n                        config[prop] = value;\n                    }\n                });\n\n                //Reverse map the bundles\n                if (cfg.bundles) {\n                    eachProp(cfg.bundles, function (value, prop) {\n                        each(value, function (v) {\n                            if (v !== prop) {\n                                bundlesMap[v] = prop;\n                            }\n                        });\n                    });\n                }\n\n                //Merge shim\n                if (cfg.shim) {\n                    eachProp(cfg.shim, function (value, id) {\n                        //Normalize the structure\n                        if (isArray(value)) {\n                            value = {\n                                deps: value\n                            };\n                        }\n                        if ((value.exports || value.init) && !value.exportsFn) {\n                            value.exportsFn = context.makeShimExports(value);\n                        }\n                        shim[id] = value;\n                    });\n                    config.shim = shim;\n                }\n\n                //Adjust packages if necessary.\n                if (cfg.packages) {\n                    each(cfg.packages, function (pkgObj) {\n                        var location, name;\n\n                        pkgObj = typeof pkgObj === 'string' ? { name: pkgObj } : pkgObj;\n\n                        name = pkgObj.name;\n                        location = pkgObj.location;\n                        if (location) {\n                            config.paths[name] = pkgObj.location;\n                        }\n\n                        //Save pointer to main module ID for pkg name.\n                        //Remove leading dot in main, so main paths are normalized,\n                        //and remove any trailing .js, since different package\n                        //envs have different conventions: some use a module name,\n                        //some use a file name.\n                        config.pkgs[name] = pkgObj.name + '/' + (pkgObj.main || 'main')\n                                     .replace(currDirRegExp, '')\n                                     .replace(jsSuffixRegExp, '');\n                    });\n                }\n\n                //If there are any \"waiting to execute\" modules in the registry,\n                //update the maps for them, since their info, like URLs to load,\n                //may have changed.\n                eachProp(registry, function (mod, id) {\n                    //If module already has init called, since it is too\n                    //late to modify them, and ignore unnormalized ones\n                    //since they are transient.\n                    if (!mod.inited && !mod.map.unnormalized) {\n                        mod.map = makeModuleMap(id);\n                    }\n                });\n\n                //If a deps array or a config callback is specified, then call\n                //require with those args. This is useful when require is defined as a\n                //config object before require.js is loaded.\n                if (cfg.deps || cfg.callback) {\n                    context.require(cfg.deps || [], cfg.callback);\n                }\n            },\n\n            makeShimExports: function (value) {\n                function fn() {\n                    var ret;\n                    if (value.init) {\n                        ret = value.init.apply(global, arguments);\n                    }\n                    return ret || (value.exports && getGlobal(value.exports));\n                }\n                return fn;\n            },\n\n            makeRequire: function (relMap, options) {\n                options = options || {};\n\n                function localRequire(deps, callback, errback) {\n                    var id, map, requireMod;\n\n                    if (options.enableBuildCallback && callback && isFunction(callback)) {\n                        callback.__requireJsBuild = true;\n                    }\n\n                    if (typeof deps === 'string') {\n                        if (isFunction(callback)) {\n                            //Invalid call\n                            return onError(makeError('requireargs', 'Invalid require call'), errback);\n                        }\n\n                        //If require|exports|module are requested, get the\n                        //value for them from the special handlers. Caveat:\n                        //this only works while module is being defined.\n                        if (relMap && hasProp(handlers, deps)) {\n                            return handlers[deps](registry[relMap.id]);\n                        }\n\n                        //Synchronous access to one module. If require.get is\n                        //available (as in the Node adapter), prefer that.\n                        if (req.get) {\n                            return req.get(context, deps, relMap, localRequire);\n                        }\n\n                        //Normalize module name, if it contains . or ..\n                        map = makeModuleMap(deps, relMap, false, true);\n                        id = map.id;\n\n                        if (!hasProp(defined, id)) {\n                            return onError(makeError('notloaded', 'Module name \"' +\n                                        id +\n                                        '\" has not been loaded yet for context: ' +\n                                        contextName +\n                                        (relMap ? '' : '. Use require([])')));\n                        }\n                        return defined[id];\n                    }\n\n                    //Grab defines waiting in the global queue.\n                    intakeDefines();\n\n                    //Mark all the dependencies as needing to be loaded.\n                    context.nextTick(function () {\n                        //Some defines could have been added since the\n                        //require call, collect them.\n                        intakeDefines();\n\n                        requireMod = getModule(makeModuleMap(null, relMap));\n\n                        //Store if map config should be applied to this require\n                        //call for dependencies.\n                        requireMod.skipMap = options.skipMap;\n\n                        requireMod.init(deps, callback, errback, {\n                            enabled: true\n                        });\n\n                        checkLoaded();\n                    });\n\n                    return localRequire;\n                }\n\n                mixin(localRequire, {\n                    isBrowser: isBrowser,\n\n                    /**\n                     * Converts a module name + .extension into an URL path.\n                     * *Requires* the use of a module name. It does not support using\n                     * plain URLs like nameToUrl.\n                     */\n                    toUrl: function (moduleNamePlusExt) {\n                        var ext,\n                            index = moduleNamePlusExt.lastIndexOf('.'),\n                            segment = moduleNamePlusExt.split('/')[0],\n                            isRelative = segment === '.' || segment === '..';\n\n                        //Have a file extension alias, and it is not the\n                        //dots from a relative path.\n                        if (index !== -1 && (!isRelative || index > 1)) {\n                            ext = moduleNamePlusExt.substring(index, moduleNamePlusExt.length);\n                            moduleNamePlusExt = moduleNamePlusExt.substring(0, index);\n                        }\n\n                        return context.nameToUrl(normalize(moduleNamePlusExt,\n                                                relMap && relMap.id, true), ext,  true);\n                    },\n\n                    defined: function (id) {\n                        return hasProp(defined, makeModuleMap(id, relMap, false, true).id);\n                    },\n\n                    specified: function (id) {\n                        id = makeModuleMap(id, relMap, false, true).id;\n                        return hasProp(defined, id) || hasProp(registry, id);\n                    }\n                });\n\n                //Only allow undef on top level require calls\n                if (!relMap) {\n                    localRequire.undef = function (id) {\n                        //Bind any waiting define() calls to this context,\n                        //fix for #408\n                        takeGlobalQueue();\n\n                        var map = makeModuleMap(id, relMap, true),\n                            mod = getOwn(registry, id);\n\n                        removeScript(id);\n\n                        delete defined[id];\n                        delete urlFetched[map.url];\n                        delete undefEvents[id];\n\n                        //Clean queued defines too. Go backwards\n                        //in array so that the splices do not\n                        //mess up the iteration.\n                        eachReverse(defQueue, function(args, i) {\n                            if(args[0] === id) {\n                                defQueue.splice(i, 1);\n                            }\n                        });\n\n                        if (mod) {\n                            //Hold on to listeners in case the\n                            //module will be attempted to be reloaded\n                            //using a different config.\n                            if (mod.events.defined) {\n                                undefEvents[id] = mod.events;\n                            }\n\n                            cleanRegistry(id);\n                        }\n                    };\n                }\n\n                return localRequire;\n            },\n\n            /**\n             * Called to enable a module if it is still in the registry\n             * awaiting enablement. A second arg, parent, the parent module,\n             * is passed in for context, when this method is overridden by\n             * the optimizer. Not shown here to keep code compact.\n             */\n            enable: function (depMap) {\n                var mod = getOwn(registry, depMap.id);\n                if (mod) {\n                    getModule(depMap).enable();\n                }\n            },\n\n            /**\n             * Internal method used by environment adapters to complete a load event.\n             * A load event could be a script load or just a load pass from a synchronous\n             * load call.\n             * @param {String} moduleName the name of the module to potentially complete.\n             */\n            completeLoad: function (moduleName) {\n                var found, args, mod,\n                    shim = getOwn(config.shim, moduleName) || {},\n                    shExports = shim.exports;\n\n                takeGlobalQueue();\n\n                while (defQueue.length) {\n                    args = defQueue.shift();\n                    if (args[0] === null) {\n                        args[0] = moduleName;\n                        //If already found an anonymous module and bound it\n                        //to this name, then this is some other anon module\n                        //waiting for its completeLoad to fire.\n                        if (found) {\n                            break;\n                        }\n                        found = true;\n                    } else if (args[0] === moduleName) {\n                        //Found matching define call for this script!\n                        found = true;\n                    }\n\n                    callGetModule(args);\n                }\n\n                //Do this after the cycle of callGetModule in case the result\n                //of those calls/init calls changes the registry.\n                mod = getOwn(registry, moduleName);\n\n                if (!found && !hasProp(defined, moduleName) && mod && !mod.inited) {\n                    if (config.enforceDefine && (!shExports || !getGlobal(shExports))) {\n                        if (hasPathFallback(moduleName)) {\n                            return;\n                        } else {\n                            return onError(makeError('nodefine',\n                                             'No define call for ' + moduleName,\n                                             null,\n                                             [moduleName]));\n                        }\n                    } else {\n                        //A script that does not call define(), so just simulate\n                        //the call for it.\n                        callGetModule([moduleName, (shim.deps || []), shim.exportsFn]);\n                    }\n                }\n\n                checkLoaded();\n            },\n\n            /**\n             * Converts a module name to a file path. Supports cases where\n             * moduleName may actually be just an URL.\n             * Note that it **does not** call normalize on the moduleName,\n             * it is assumed to have already been normalized. This is an\n             * internal API, not a public one. Use toUrl for the public API.\n             */\n            nameToUrl: function (moduleName, ext, skipExt) {\n                var paths, syms, i, parentModule, url,\n                    parentPath, bundleId,\n                    pkgMain = getOwn(config.pkgs, moduleName);\n\n                if (pkgMain) {\n                    moduleName = pkgMain;\n                }\n\n                bundleId = getOwn(bundlesMap, moduleName);\n\n                if (bundleId) {\n                    return context.nameToUrl(bundleId, ext, skipExt);\n                }\n\n                //If a colon is in the URL, it indicates a protocol is used and it is just\n                //an URL to a file, or if it starts with a slash, contains a query arg (i.e. ?)\n                //or ends with .js, then assume the user meant to use an url and not a module id.\n                //The slash is important for protocol-less URLs as well as full paths.\n                if (req.jsExtRegExp.test(moduleName)) {\n                    //Just a plain path, not module name lookup, so just return it.\n                    //Add extension if it is included. This is a bit wonky, only non-.js things pass\n                    //an extension, this method probably needs to be reworked.\n                    url = moduleName + (ext || '');\n                } else {\n                    //A module that needs to be converted to a path.\n                    paths = config.paths;\n\n                    syms = moduleName.split('/');\n                    //For each module name segment, see if there is a path\n                    //registered for it. Start with most specific name\n                    //and work up from it.\n                    for (i = syms.length; i > 0; i -= 1) {\n                        parentModule = syms.slice(0, i).join('/');\n\n                        parentPath = getOwn(paths, parentModule);\n                        if (parentPath) {\n                            //If an array, it means there are a few choices,\n                            //Choose the one that is desired\n                            if (isArray(parentPath)) {\n                                parentPath = parentPath[0];\n                            }\n                            syms.splice(0, i, parentPath);\n                            break;\n                        }\n                    }\n\n                    //Join the path parts together, then figure out if baseUrl is needed.\n                    url = syms.join('/');\n                    url += (ext || (/^data\\:|\\?/.test(url) || skipExt ? '' : '.js'));\n                    url = (url.charAt(0) === '/' || url.match(/^[\\w\\+\\.\\-]+:/) ? '' : config.baseUrl) + url;\n                }\n\n                return config.urlArgs ? url +\n                                        ((url.indexOf('?') === -1 ? '?' : '&') +\n                                         config.urlArgs) : url;\n            },\n\n            //Delegates to req.load. Broken out as a separate function to\n            //allow overriding in the optimizer.\n            load: function (id, url) {\n                req.load(context, id, url);\n            },\n\n            /**\n             * Executes a module callback function. Broken out as a separate function\n             * solely to allow the build system to sequence the files in the built\n             * layer in the right sequence.\n             *\n             * @private\n             */\n            execCb: function (name, callback, args, exports) {\n                return callback.apply(exports, args);\n            },\n\n            /**\n             * callback for script loads, used to check status of loading.\n             *\n             * @param {Event} evt the event from the browser for the script\n             * that was loaded.\n             */\n            onScriptLoad: function (evt) {\n                //Using currentTarget instead of target for Firefox 2.0's sake. Not\n                //all old browsers will be supported, but this one was easy enough\n                //to support and still makes sense.\n                if (evt.type === 'load' ||\n                        (readyRegExp.test((evt.currentTarget || evt.srcElement).readyState))) {\n                    //Reset interactive script so a script node is not held onto for\n                    //to long.\n                    interactiveScript = null;\n\n                    //Pull out the name of the module and the context.\n                    var data = getScriptData(evt);\n                    context.completeLoad(data.id);\n                }\n            },\n\n            /**\n             * Callback for script errors.\n             */\n            onScriptError: function (evt) {\n                var data = getScriptData(evt);\n                if (!hasPathFallback(data.id)) {\n                    return onError(makeError('scripterror', 'Script error for: ' + data.id, evt, [data.id]));\n                }\n            }\n        };\n\n        context.require = context.makeRequire();\n        return context;\n    }\n\n    /**\n     * Main entry point.\n     *\n     * If the only argument to require is a string, then the module that\n     * is represented by that string is fetched for the appropriate context.\n     *\n     * If the first argument is an array, then it will be treated as an array\n     * of dependency string names to fetch. An optional function callback can\n     * be specified to execute when all of those dependencies are available.\n     *\n     * Make a local req variable to help Caja compliance (it assumes things\n     * on a require that are not standardized), and to give a short\n     * name for minification/local scope use.\n     */\n    req = requirejs = function (deps, callback, errback, optional) {\n\n        //Find the right context, use default\n        var context, config,\n            contextName = defContextName;\n\n        // Determine if have config object in the call.\n        if (!isArray(deps) && typeof deps !== 'string') {\n            // deps is a config object\n            config = deps;\n            if (isArray(callback)) {\n                // Adjust args if there are dependencies\n                deps = callback;\n                callback = errback;\n                errback = optional;\n            } else {\n                deps = [];\n            }\n        }\n\n        if (config && config.context) {\n            contextName = config.context;\n        }\n\n        context = getOwn(contexts, contextName);\n        if (!context) {\n            context = contexts[contextName] = req.s.newContext(contextName);\n        }\n\n        if (config) {\n            context.configure(config);\n        }\n\n        return context.require(deps, callback, errback);\n    };\n\n    /**\n     * Support require.config() to make it easier to cooperate with other\n     * AMD loaders on globally agreed names.\n     */\n    req.config = function (config) {\n        return req(config);\n    };\n\n    /**\n     * Execute something after the current tick\n     * of the event loop. Override for other envs\n     * that have a better solution than setTimeout.\n     * @param  {Function} fn function to execute later.\n     */\n    req.nextTick = typeof setTimeout !== 'undefined' ? function (fn) {\n        setTimeout(fn, 4);\n    } : function (fn) { fn(); };\n\n    /**\n     * Export require as a global, but only if it does not already exist.\n     */\n    if (!require) {\n        require = req;\n    }\n\n    req.version = version;\n\n    //Used to filter out dependencies that are already paths.\n    req.jsExtRegExp = /^\\/|:|\\?|\\.js$/;\n    req.isBrowser = isBrowser;\n    s = req.s = {\n        contexts: contexts,\n        newContext: newContext\n    };\n\n    //Create default context.\n    req({});\n\n    //Exports some context-sensitive methods on global require.\n    each([\n        'toUrl',\n        'undef',\n        'defined',\n        'specified'\n    ], function (prop) {\n        //Reference from contexts instead of early binding to default context,\n        //so that during builds, the latest instance of the default context\n        //with its config gets used.\n        req[prop] = function () {\n            var ctx = contexts[defContextName];\n            return ctx.require[prop].apply(ctx, arguments);\n        };\n    });\n\n    if (isBrowser) {\n        head = s.head = document.getElementsByTagName('head')[0];\n        //If BASE tag is in play, using appendChild is a problem for IE6.\n        //When that browser dies, this can be removed. Details in this jQuery bug:\n        //http://dev.jquery.com/ticket/2709\n        baseElement = document.getElementsByTagName('base')[0];\n        if (baseElement) {\n            head = s.head = baseElement.parentNode;\n        }\n    }\n\n    /**\n     * Any errors that require explicitly generates will be passed to this\n     * function. Intercept/override it if you want custom error handling.\n     * @param {Error} err the error object.\n     */\n    req.onError = defaultOnError;\n\n    /**\n     * Creates the node for the load command. Only used in browser envs.\n     */\n    req.createNode = function (config, moduleName, url) {\n        var node = config.xhtml ?\n                document.createElementNS('http://www.w3.org/1999/xhtml', 'html:script') :\n                document.createElement('script');\n        node.type = config.scriptType || 'text/javascript';\n        node.charset = 'utf-8';\n        node.async = true;\n        return node;\n    };\n\n    /**\n     * Does the request to load a module for the browser case.\n     * Make this a separate function to allow other environments\n     * to override it.\n     *\n     * @param {Object} context the require context to find state.\n     * @param {String} moduleName the name of the module.\n     * @param {Object} url the URL to the module.\n     */\n    req.load = function (context, moduleName, url) {\n        var config = (context && context.config) || {},\n            node;\n        if (isBrowser) {\n            //In the browser so use a script tag\n            node = req.createNode(config, moduleName, url);\n\n            node.setAttribute('data-requirecontext', context.contextName);\n            node.setAttribute('data-requiremodule', moduleName);\n\n            //Set up load listener. Test attachEvent first because IE9 has\n            //a subtle issue in its addEventListener and script onload firings\n            //that do not match the behavior of all other browsers with\n            //addEventListener support, which fire the onload event for a\n            //script right after the script execution. See:\n            //https://connect.microsoft.com/IE/feedback/details/648057/script-onload-event-is-not-fired-immediately-after-script-execution\n            //UNFORTUNATELY Opera implements attachEvent but does not follow the script\n            //script execution mode.\n            if (node.attachEvent &&\n                    //Check if node.attachEvent is artificially added by custom script or\n                    //natively supported by browser\n                    //read https://github.com/jrburke/requirejs/issues/187\n                    //if we can NOT find [native code] then it must NOT natively supported.\n                    //in IE8, node.attachEvent does not have toString()\n                    //Note the test for \"[native code\" with no closing brace, see:\n                    //https://github.com/jrburke/requirejs/issues/273\n                    !(node.attachEvent.toString && node.attachEvent.toString().indexOf('[native code') < 0) &&\n                    !isOpera) {\n                //Probably IE. IE (at least 6-8) do not fire\n                //script onload right after executing the script, so\n                //we cannot tie the anonymous define call to a name.\n                //However, IE reports the script as being in 'interactive'\n                //readyState at the time of the define call.\n                useInteractive = true;\n\n                node.attachEvent('onreadystatechange', context.onScriptLoad);\n                //It would be great to add an error handler here to catch\n                //404s in IE9+. However, onreadystatechange will fire before\n                //the error handler, so that does not help. If addEventListener\n                //is used, then IE will fire error before load, but we cannot\n                //use that pathway given the connect.microsoft.com issue\n                //mentioned above about not doing the 'script execute,\n                //then fire the script load event listener before execute\n                //next script' that other browsers do.\n                //Best hope: IE10 fixes the issues,\n                //and then destroys all installs of IE 6-9.\n                //node.attachEvent('onerror', context.onScriptError);\n            } else {\n                node.addEventListener('load', context.onScriptLoad, false);\n                node.addEventListener('error', context.onScriptError, false);\n            }\n            node.src = url;\n\n            //For some cache cases in IE 6-8, the script executes before the end\n            //of the appendChild execution, so to tie an anonymous define\n            //call to the module name (which is stored on the node), hold on\n            //to a reference to this node, but clear after the DOM insertion.\n            currentlyAddingScript = node;\n            if (baseElement) {\n                head.insertBefore(node, baseElement);\n            } else {\n                head.appendChild(node);\n            }\n            currentlyAddingScript = null;\n\n            return node;\n        } else if (isWebWorker) {\n            try {\n                //In a web worker, use importScripts. This is not a very\n                //efficient use of importScripts, importScripts will block until\n                //its script is downloaded and evaluated. However, if web workers\n                //are in play, the expectation that a build has been done so that\n                //only one script needs to be loaded anyway. This may need to be\n                //reevaluated if other use cases become common.\n                importScripts(url);\n\n                //Account for anonymous modules\n                context.completeLoad(moduleName);\n            } catch (e) {\n                context.onError(makeError('importscripts',\n                                'importScripts failed for ' +\n                                    moduleName + ' at ' + url,\n                                e,\n                                [moduleName]));\n            }\n        }\n    };\n\n    function getInteractiveScript() {\n        if (interactiveScript && interactiveScript.readyState === 'interactive') {\n            return interactiveScript;\n        }\n\n        eachReverse(scripts(), function (script) {\n            if (script.readyState === 'interactive') {\n                return (interactiveScript = script);\n            }\n        });\n        return interactiveScript;\n    }\n\n    //Look for a data-main script attribute, which could also adjust the baseUrl.\n    if (isBrowser && !cfg.skipDataMain) {\n        //Figure out baseUrl. Get it from the script tag with require.js in it.\n        eachReverse(scripts(), function (script) {\n            //Set the 'head' where we can append children by\n            //using the script's parent.\n            if (!head) {\n                head = script.parentNode;\n            }\n\n            //Look for a data-main attribute to set main script for the page\n            //to load. If it is there, the path to data main becomes the\n            //baseUrl, if it is not already set.\n            dataMain = script.getAttribute('data-main');\n            if (dataMain) {\n                //Preserve dataMain in case it is a path (i.e. contains '?')\n                mainScript = dataMain;\n\n                //Set final baseUrl if there is not already an explicit one.\n                if (!cfg.baseUrl) {\n                    //Pull off the directory of data-main for use as the\n                    //baseUrl.\n                    src = mainScript.split('/');\n                    mainScript = src.pop();\n                    subPath = src.length ? src.join('/')  + '/' : './';\n\n                    cfg.baseUrl = subPath;\n                }\n\n                //Strip off any trailing .js since mainScript is now\n                //like a module name.\n                mainScript = mainScript.replace(jsSuffixRegExp, '');\n\n                 //If mainScript is still a path, fall back to dataMain\n                if (req.jsExtRegExp.test(mainScript)) {\n                    mainScript = dataMain;\n                }\n\n                //Put the data-main script in the files to load.\n                cfg.deps = cfg.deps ? cfg.deps.concat(mainScript) : [mainScript];\n\n                return true;\n            }\n        });\n    }\n\n    /**\n     * The function that handles definitions of modules. Differs from\n     * require() in that a string for the module should be the first argument,\n     * and the function to execute after dependencies are loaded should\n     * return a value to define the module corresponding to the first argument's\n     * name.\n     */\n    define = function (name, deps, callback) {\n        var node, context;\n\n        //Allow for anonymous modules\n        if (typeof name !== 'string') {\n            //Adjust args appropriately\n            callback = deps;\n            deps = name;\n            name = null;\n        }\n\n        //This module may not have dependencies\n        if (!isArray(deps)) {\n            callback = deps;\n            deps = null;\n        }\n\n        //If no name, and callback is a function, then figure out if it a\n        //CommonJS thing with dependencies.\n        if (!deps && isFunction(callback)) {\n            deps = [];\n            //Remove comments from the callback string,\n            //look for require calls, and pull them into the dependencies,\n            //but only if there are function args.\n            if (callback.length) {\n                callback\n                    .toString()\n                    .replace(commentRegExp, '')\n                    .replace(cjsRequireRegExp, function (match, dep) {\n                        deps.push(dep);\n                    });\n\n                //May be a CommonJS thing even without require calls, but still\n                //could use exports, and module. Avoid doing exports and module\n                //work though if it just needs require.\n                //REQUIRES the function to expect the CommonJS variables in the\n                //order listed below.\n                deps = (callback.length === 1 ? ['require'] : ['require', 'exports', 'module']).concat(deps);\n            }\n        }\n\n        //If in IE 6-8 and hit an anonymous define() call, do the interactive\n        //work.\n        if (useInteractive) {\n            node = currentlyAddingScript || getInteractiveScript();\n            if (node) {\n                if (!name) {\n                    name = node.getAttribute('data-requiremodule');\n                }\n                context = contexts[node.getAttribute('data-requirecontext')];\n            }\n        }\n\n        //Always save off evaluating the def call until the script onload handler.\n        //This allows multiple modules to be in a file without prematurely\n        //tracing dependencies, and allows for anonymous module support,\n        //where the module name is not known until the script onload event\n        //occurs. If no context, use the global queue, and get it processed\n        //in the onscript load callback.\n        (context ? context.defQueue : globalDefQueue).push([name, deps, callback]);\n    };\n\n    define.amd = {\n        jQuery: true\n    };\n\n\n    /**\n     * Executes the text. Normally just uses eval, but can be modified\n     * to use a better, environment-specific call. Only used for transpiling\n     * loader plugins, not for plain JS modules.\n     * @param {String} text the text to execute/evaluate.\n     */\n    req.exec = function (text) {\n        /*jslint evil: true */\n        return eval(text);\n    };\n\n    //Set up with config info.\n    req(cfg);\n}(this));\n"

/***/ }),

/***/ 4:
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(2)(__webpack_require__(5))

/***/ }),

/***/ 5:
/***/ (function(module, exports) {

	module.exports = "// reference this from another build profile with mainConfigFile: './shared.build.profile.js'\nrequirejs.config({\n    baseUrl: '../',\n    preserveLicenseComments: false,\n    map: {\n        \"*\": {\n            css: \"splunkjs/contrib/require-css/css\",\n            'requirejs': 'require/requirejs',\n            // Aliases for files that have been moved, but need to be acessible to apps\n            // SPL-120323\n            'views/shared/WaitSpinner': 'views/shared/waitspinner/Master'\n        }\n    },\n    paths: {\n        // paths outside of baseUrl\n        'templates': '../../templates',\n        'api': '../build/api',\n\n        // Makes requring an app's static assets cleaner\n        'app': '../app',\n\n        // jQuery and contrib plugins\n        'jquery': 'contrib/jquery-2.1.0',\n        'jquery.history': 'contrib/jquery.history',\n        'jquery.bgiframe': 'contrib/jquery.bgiframe-3.0.0',\n        'jquery.cookie': 'contrib/jquery.cookie',\n        'jquery.deparam': 'contrib/jquery.deparam',\n        'jquery.fileupload': 'contrib/jquery.fileupload',\n        'jquery.iframe-transport': 'contrib/jquery.iframe-transport',\n\n        // internal jQuery plugins\n        'splunk.jquery.csrf': 'splunk.jquery.csrf_protection',\n\n        // jQuery UI plugins\n        'jquery.ui.core': 'contrib/jquery-ui-1.10.4/jquery.ui.core',\n        'jquery.ui.widget': 'contrib/jquery-ui-1.10.4/jquery.ui.widget',\n        'jquery.ui.datepicker': 'contrib/jquery-ui-1.10.4/jquery.ui.datepicker',\n        'jquery.ui.position': 'contrib/jquery-ui-1.10.4/jquery.ui.position',\n        'jquery.ui.mouse': 'contrib/jquery-ui-1.10.4/jquery.ui.mouse',\n        'jquery.ui.draggable': 'contrib/jquery-ui-1.10.4/jquery.ui.draggable',\n        'jquery.ui.droppable': 'contrib/jquery-ui-1.10.4/jquery.ui.droppable',\n        'jquery.ui.sortable': 'contrib/jquery-ui-1.10.4/jquery.ui.sortable',\n        'jquery.ui.resizable': 'contrib/jquery-ui-1.10.4/jquery.ui.resizable',\n        'jquery.ui.button': 'contrib/jquery-ui-1.10.4/jquery.ui.button',\n        'jquery.ui.spinner': 'contrib/jquery-ui-1.10.4/jquery.ui.spinner',\n        'jquery.ui.effect': 'contrib/jquery-ui-1.10.4/jquery.ui.effect',\n        'jquery.ui.effect-slide': 'contrib/jquery-ui-1.10.4/jquery.ui.effect-slide',\n        'tree.jquery': 'contrib/jqTree/tree.jquery',\n        'jquery.resize': 'contrib/jquery-resize',\n\n        // bootstrap components\n        // FIXME: bootstrap.button collides with jquery.ui.button on the jQuery prototype !!\n        'bootstrap.affix': 'contrib/bootstrap-2.3.1/bootstrap-affix',\n        'bootstrap.alert': 'contrib/bootstrap-2.3.1/bootstrap-alert',\n        'bootstrap.button': 'contrib/bootstrap-2.3.1/bootstrap-button',\n        'bootstrap.carousel': 'contrib/bootstrap-2.3.1/bootstrap-carousel',\n        'bootstrap.collapse': 'contrib/bootstrap-2.3.1/bootstrap-collapse',\n        'bootstrap.dropdown': 'contrib/bootstrap-2.3.1/bootstrap-dropdown',\n        'bootstrap.modal': 'contrib/bootstrap-2.3.1/bootstrap-modal',\n        'bootstrap.popover': 'contrib/bootstrap-2.3.1/bootstrap-popover',\n        'bootstrap.scrollspy': 'contrib/bootstrap-2.3.1/bootstrap-scrollspy',\n        'bootstrap.tab': 'contrib/bootstrap-2.3.1/bootstrap-tab',\n        'bootstrap.tooltip': 'contrib/bootstrap-2.3.1/bootstrap-tooltip',\n        'bootstrap.transition': 'contrib/bootstrap-2.3.1/bootstrap-transition',\n        'bootstrap.typeahead': 'contrib/bootstrap-2.3.1/bootstrap-typeahead',\n\n        // other contrib libraries\n        'moment': 'contrib/moment',\n        'numeral': 'contrib/numeral',\n        'underscore': 'require/underscore',\n        'backbone': 'require/backbone',\n        'highcharts': 'contrib/highcharts-4.0.4/highcharts',\n        'backbone_validation': 'contrib/backbone-validation-amd',\n        'prettify': 'contrib/google-code-prettify/prettify',\n        'intro': 'contrib/intro',\n        'document-register-element': 'contrib/polyfills/document-register-element.max.amd',\n\n        /* augments builtin prototype */\n        'strftime': 'contrib/strftime',\n        'leaflet': 'contrib/leaflet/leaflet',\n        'jg_global': 'contrib/jg_global',\n        'jgatt': 'contrib/jg_library',\n        'jg': 'contrib/jg_lib',\n        'lowpro': 'contrib/lowpro_for_jquery',\n        'spin': 'contrib/spin',\n        'sax': 'contrib/sax',\n        \"ace\":\"contrib/ace-editor\",\n\n        // Splunk legacy\n        'splunk': 'splunk',\n        'splunk.legend': 'legend',\n        'splunk.logger': 'logger',\n        'splunk.error': 'error',\n        'splunk.util': 'util',\n        'util/sprintf': 'contrib/sprintf',\n        'splunk.pdf': 'pdf',\n        'splunk.i18n': 'stubs/i18n',\n        'splunk.config': 'stubs/splunk.config',\n        'splunk.paginator': 'paginator',\n        'splunk.messenger': 'messenger',\n        'splunk.time': 'splunk_time',\n        'splunk.timerange': 'time_range',\n        'splunk.window': 'window',\n        'splunk.jabridge': 'ja_bridge',\n        'splunk.print': 'print',\n        'splunk.session': 'session',\n\n        // splunkjs\n        \"async\": \"splunkjs/contrib/requirejs-plugins/async\",\n        \"select2\": \"contrib/select2-3.4.6\",\n\n        // paths for deprecated versions of jquery\n        'contrib/jquery-1.8.2': 'contrib/deprecated/jquery-1.8.2',\n        'contrib/jquery-1.8.3': 'contrib/deprecated/jquery-1.8.3',\n        'contrib/jquery-1.10.2': 'contrib/deprecated/jquery-1.10.2'\n    },\n    shim: {\n\n        /* START splunkjs */\n        'splunkjs/splunk': {\n            deps: ['jquery'],\n            exports: 'splunkjs'\n        },\n\n        /* Select2*/\n        \"select2/select2\": {\n            deps: [\"jquery\", \"helpers/user_agent\", \"css!contrib/select2-3.4.6/select2.css\", \"views/shared/pcss/select2.pcss\"],\n            exports: \"Select2\",\n            init: function($, UserAgent) {\n                var Select2 = this.Select2;\n                Select2.class.single.prototype.getPlaceholder = function() {\n                    // if a placeholder is specified on a single select without a valid placeholder option ignore it\n                    if (this.select) {\n                        if (this.getPlaceholderOption() === undefined) {\n                            return undefined;\n                        }\n                    }\n                    // https://github.com/select2/select2/issues/3300\n                    // SPL-111895, SPL-112886, disable placeholder for IE <= 11\n                    if (UserAgent.isIELessThan(12)) {\n                        return undefined;\n                    }\n                    return Select2.class.abstract.prototype.getPlaceholder.apply(this, arguments);\n                };\n                return Select2;\n            }\n        },\n\n        /* START contrib jQuery plugins */\n        'jquery.cookie': {\n            deps: ['jquery']\n        },\n         'jquery.fileupload': {\n            deps: ['jquery']\n        },\n        'jquery.iframe-transport': {\n        \tdeps: ['jquery']\n        },\n        'jquery.history': {\n            deps: ['jquery'],\n                exports: 'History'\n        },\n        'jquery.bgiframe': {\n            deps: ['jquery']\n        },\n\n        \"jquery.attributes\": {\n            deps: ['jquery']\n        },\n\n        \"jquery.spin\": {\n            deps: ['jquery']\n        },\n\n        \"jquery.sparkline\": {\n            deps: ['jquery']\n        },\n\n        \"jquery.deparam\": {\n            deps: ['jquery'],\n            exports: \"jQuery.fn.deparam\"\n        },\n\n        /* START internal jQuery plugins */\n        'splunk.jquery.csrf_protection': {\n            deps: ['jquery.cookie', 'splunk.util']\n        },\n\n        /* START jQuery UI plugins */\n        'jquery.ui.core': {\n            deps: ['jquery']\n        },\n        'jquery.ui.widget': {\n            deps: ['jquery.ui.core']\n        },\n        'jquery.ui.position': {\n            deps: ['jquery.ui.widget']\n        },\n        'jquery.ui.mouse': {\n            deps: ['jquery.ui.widget']\n        },\n        'jquery.ui.sortable': {\n            deps: ['jquery.ui.widget', 'jquery.ui.mouse', 'jquery.ui.draggable', 'jquery.ui.droppable']\n        },\n        'jquery.ui.draggable': {\n            deps: ['jquery.ui.widget', 'jquery.ui.mouse']\n        },\n        'jquery.ui.droppable': {\n            deps: ['jquery.ui.widget', 'jquery.ui.mouse']\n        },\n        'jquery.ui.resizable': {\n            deps: ['jquery.ui.widget', 'jquery.ui.mouse']\n        },\n        'jquery.ui.datepicker': {\n            deps: ['jquery', 'jquery.ui.widget', 'splunk.i18n'],\n            exports: 'jquery.ui.datepicker',\n            init: function(jQuery, widget, i18n) {\n                var initFn = i18n.jQuery_ui_datepicker_install;\n                if (typeof initFn === 'function') {\n                    initFn(jQuery);\n                }\n                return jQuery.ui.datepicker;\n            }\n        },\n        'jquery.ui.button': {\n            deps: ['jquery.ui.widget', 'jquery.ui.core']\n        },\n        'jquery.ui.spinner': {\n            deps: ['jquery.ui.widget', 'jquery.ui.core', 'jquery.ui.button']\n        },\n        'jquery.ui.effect': {\n            deps: ['jquery.ui.core']\n        },\n        'jquery.ui.effect-slide': {\n            deps: ['jquery.ui.core', 'jquery.ui.effect']\n        },\n        'tree.jquery': {\n            deps: ['jquery']\n        },\n        'jquery.resize': {\n            deps: ['jquery'],\n            init: function($) {\n                // The plugin itself does not prevent bubbling of the resize events, add that here.\n                $.event.special.elementResize.noBubble = true;\n            }\n        },\n\n        // bootstrap components\n        'bootstrap.affix': {\n            deps: ['jquery']\n        },\n        'bootstrap.alert': {\n            deps: ['jquery']\n        },\n        'bootstrap.button': {\n            deps: ['jquery']\n        },\n        'bootstrap.carousel': {\n            deps: ['jquery']\n        },\n        'bootstrap.collapse': {\n            deps: ['jquery', 'bootstrap.transition']\n        },\n        'bootstrap.dropdown': {\n            deps: ['jquery']\n        },\n        'bootstrap.modal': {\n            deps: ['jquery']\n        },\n        'bootstrap.popover': {\n            deps: ['jquery', 'bootstrap.tooltip']\n        },\n        'bootstrap.scrollspy': {\n            deps: ['jquery']\n        },\n        'bootstrap.tab': {\n            deps: ['jquery']\n        },\n        'bootstrap.tooltip': {\n            deps: ['jquery']\n        },\n        'bootstrap.transition': {\n            deps: ['jquery']\n        },\n        'bootstrap.typeahead': {\n            deps: ['jquery']\n        },\n\n        /* START other contrib libraries */\n        \"backbone.nested\": {\n            // Not sure if needed\n            deps: ['backbone'],\n            exports: 'Backbone.NestedModel'\n        },\n        highcharts: {\n            deps: ['jquery', 'splunk'],\n            init: function($, Splunk) {\n                var Highcharts = Splunk.Highcharts = this.Highcharts;\n                // Remove Highcharts from the global namespace so multiple versions can\n                // co-exist on the same page.  As a safety measure in case existing external\n                // code relies on this global, it is still available as `Splunk.Highcharts`.\n                delete this.Highcharts;\n                return Highcharts;\n            }\n        },\n        prettify: {\n            exports: 'prettyPrint'\n        },\n        leaflet: {\n            deps: ['jquery', 'splunk.util', 'splunk.config', 'helpers/user_agent', 'contrib/text!contrib/leaflet/leaflet.css'],\n            exports: 'L',\n            init: function($, SplunkUtil, splunkConfig, userAgent, css) {\n                if (splunkConfig.INDEPENDENT_MODE) {\n                    var imageUrl = require.toUrl('') + 'splunkjs/contrib/leaflet/images';\n                    css = css.replace(/url\\(images/g, 'url(' + imageUrl);\n                }\n                else {\n                    // resolve image urls\n                    css = css.replace(/url\\(images/g, \"url(\" + SplunkUtil.make_url(\"/static/js/contrib/leaflet/images\"));\n                }\n                // inject css into head\n                $(\"head\").append(\"<style type=\\\"text/css\\\">\" + css + \"</style>\");\n\n                // SPL-98647: monkey patch the getParamString method to avoid an XSS vulnerability in our\n                // version of Leaflet.\n                // See https://github.com/Leaflet/Leaflet/pull/1317/files\n                if (this.L && this.L.Util) {\n                    this.L.Util.getParamString = function(obj, existingUrl) {\n                        var params = [];\n                        for(var i in obj) {\n                            if (obj.hasOwnProperty(i)) {\n                                params.push(encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]));\n                            }\n                        }\n                        return ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&');\n                    };\n                }\n            }\n        },\n        jg_global: {\n            // export the dictionary of functions to a different variable, since in \"wrapShim\" mode require will\n            // assign the return value from init to that global.\n            exports: 'jg_globals',\n            init: function() {\n                this.jg_globals = {\n                    jg_namespace: this.jg_namespace,\n                    jg_extend: this.jg_extend,\n                    jg_static: this.jg_static,\n                    jg_mixin: this.jg_mixin,\n                    jg_has_mixin: this.jg_has_mixin\n                };\n                return this.jg_globals;\n            }\n        },\n        jgatt: {\n            deps: ['jg_global'],\n            exports: 'jgatt'\n        },\n        lowpro: {\n            deps: ['jquery']\n        },\n        'sax': {\n            exports: 'sax'\n        },\n        'ace/ace': {\n            exports: 'ace'\n        },\n\n        /* Start Splunk legacy */\n        splunk: {\n            exports: 'Splunk'\n        },\n        'splunk.util': {\n            deps: ['jquery', 'splunk', 'splunk.config', 'util/sprintf'],\n            exports: 'Splunk.util',\n            init: function($, Splunk, config, sprintf) {\n                return $.extend({ sprintf: sprintf }, Splunk.util);\n            }\n        },\n        'util/sprintf': {\n            exports: 'sprintf'\n        },\n        'splunk.legend': {\n            deps: ['splunk'],\n                exports: 'Splunk.Legend'\n        },\n        'splunk.logger': {\n            deps: ['splunk', 'splunk.util'],\n                exports: 'Splunk.Logger'\n        },\n        'splunk.error': {\n            deps: ['jquery', 'splunk', 'splunk.logger'],\n            exports: 'Splunk.Error'\n        },\n        'splunk.pdf': {\n            deps: ['splunk', 'splunk.util', 'jquery'],\n            exports: 'Splunk.pdf'\n        },\n        strftime: {\n            deps: []\n        },\n        'splunk.paginator': {\n            deps: ['splunk'],\n                exports: 'Splunk.paginator'\n        },\n        'splunk.jquery.csrf': {\n            deps: ['jquery', 'jquery.cookie', 'splunk.util']\n        },\n        'splunk.messenger': {\n            deps: ['splunk', 'splunk.util', 'splunk.logger', 'splunk.i18n', 'lowpro'],\n            exports: 'Splunk.Messenger'\n        },\n        'splunk.time': {\n            deps: ['jg_global', 'jgatt'],\n            exports: 'splunk.time'\n        },\n        'splunk.timerange': {\n            deps: ['splunk', 'splunk.util', 'splunk.logger', 'splunk.i18n', 'splunk.time', 'lowpro'],\n            exports: 'Splunk.Timerange',\n            init: function(Splunk) {\n                Splunk.namespace(\"Globals\");\n                if (!Splunk.Globals.timeZone) {\n                    Splunk.Globals.timeZone = new Splunk.TimeZone(Splunk.util.getConfigValue('SERVER_ZONEINFO'));\n                }\n                return Splunk.TimeRange;\n            }\n        },\n        'splunk.window': {\n            deps: ['splunk', 'splunk.util', 'splunk.i18n'],\n            exports: 'Splunk.window'\n        },\n        'splunk.jabridge': {\n            deps: ['splunk'],\n            exports: 'Splunk.JABridge'\n        },\n        'splunk.print': {\n            deps: ['jquery', 'lowpro', 'splunk', 'splunk.logger'],\n            exports: 'Splunk.Print'\n        },\n        'splunk.session': {\n            deps: ['lowpro', 'splunk', 'jquery', 'splunk.logger', 'splunk.util'],\n            exports: 'Splunk.Session'\n        },\n\n        // shim handlers for the various versions of jquery\n\n        'contrib/jquery-2.1.0': {\n            exports: 'jQuery'\n        },\n        'contrib/jquery-1.10.2': {\n            exports: 'jQuery',\n            init: function() {\n                if(this.console && typeof this.console.warn === 'function') {\n                    this.console.warn('You are using a deprecated version of jQuery, please upgrade to the latest version');\n                }\n                return this.jQuery;\n            }\n        },\n        'contrib/jquery-1.8.2': {\n            exports: 'jQuery',\n            init: function() {\n                if(this.console && typeof this.console.warn === 'function') {\n                    this.console.warn('You are using a deprecated version of jQuery, please upgrade to the latest version');\n                }\n                return this.jQuery;\n            }\n        },\n        'contrib/jquery-1.8.3': {\n            exports: 'jQuery',\n            init: function() {\n                if(this.console && typeof this.console.warn === 'function') {\n                    this.console.warn('You are using a deprecated version of jQuery, please upgrade to the latest version');\n                }\n                return this.jQuery;\n            }\n        }\n    }\n})\n"

/***/ }),

/***/ 6:
/***/ (function(module, exports) {

	/*** IMPORTS FROM imports-loader ***/
	(function() {

	(function(global) {

	if (typeof global.Splunk=="undefined" || !global.Splunk) {
	    /**
	     * The Splunk global namespace object.  If Splunk is defined, the
	     * existing Splunk object will not be overwritten so that existing
	     * namespaces are preserved.
	     */
	    global.Splunk = {};
	}
	/**
	 * Returns the namespace specified and creates it if it doesn't exist
	 * <pre>
	 * Splunk.namespace("property.package");
	 * Splunk.namespace("Splunk.property.package");
	 * </pre>
	 * Either of the above would create Splunk.property, then
	 * Splunk.property.package
	 *
	 * @method namespace
	 * @static
	 * @param  {String} name A "." delimited namespace to create
	 * @return {Object} A reference to the last namespace object created
	 */
	global.Splunk.namespace = function(name) {
	    var parts = name.split(".");
	    var obj = Splunk;
	    for (var i=(parts[0]=="Splunk")?1:0; i<parts.length; i=i+1) {
	        obj[parts[i]] = obj[parts[i]] || {};
	        obj = obj[parts[i]];
	    }
	    return obj;
	};

	})(this);

	}.call(window));

/***/ }),

/***/ 7:
/***/ (function(module, exports) {

	/**
	* sprintf routine borrowed from http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_sprintf/
	* Licensed under GPL and MIT licenses
	*
	* Modified by Gareth to add support for Python style argument specifiers:
	* sprintf("Hi %(name)s, welcome to %(application)s", { name: 'Gareth', app: 'Splunk })
	*/
	function sprintf( ) {
	    // Return a formatted string
	    // 
	    // +    discuss at: http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_sprintf/
	    // +       version: 810.1015
	    // +   original by: Ash Searle (http://hexmen.com/blog/)
	    // + namespaced by: Michael White (http://getsprink.com)
	    // +    tweaked by: Jack
	    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	    // *     example 1: sprintf("%01.2f", 123.1);
	    // *     returns 1: 123.10

	    var regex = /%%|%(\d+\$)?(\([^)]+\))?([-+#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuidfegEG])/g;
	    var a = arguments, i = 0, format = a[i++];

	    // pad()
	    var pad = function(str, len, chr, leftJustify) {
	        var padding = (str.length >= len) ? '' : Array(1 + len - str.length >>> 0).join(chr);
	        return leftJustify ? str + padding : padding + str;
	    };

	    // justify()
	    var justify = function(value, prefix, leftJustify, minWidth, zeroPad) {
	        var diff = minWidth - value.length;
	        if (diff > 0) {
	            if (leftJustify || !zeroPad) {
	                value = pad(value, minWidth, ' ', leftJustify);
	            } else {
	                value = value.slice(0, prefix.length) + pad('', diff, '0', true) + value.slice(prefix.length);
	            }
	        }
	        return value;
	    };

	    // formatBaseX()
	    var formatBaseX = function(value, base, prefix, leftJustify, minWidth, precision, zeroPad) {
	        // Note: casts negative numbers to positive ones
	        var number = value >>> 0;
	        prefix = prefix && number && {'2': '0b', '8': '0', '16': '0x'}[base] || '';
	        value = prefix + pad(number.toString(base), precision || 0, '0', false);
	        return justify(value, prefix, leftJustify, minWidth, zeroPad);
	    };

	    // formatString()
	    var formatString = function(value, leftJustify, minWidth, precision, zeroPad) {
	        if (precision != null) {
	            value = value.slice(0, precision);
	        }
	        return justify(value, '', leftJustify, minWidth, zeroPad);
	    };

	    // finalFormat()
	    var doFormat = function(substring, valueIndex, valueName, flags, minWidth, _, precision, type) {
	        if (substring == '%%') return '%';

	        // parse flags
	        var leftJustify = false, positivePrefix = '', zeroPad = false, prefixBaseX = false;
	        var flagsl = flags.length;
	        for (var j = 0; flags && j < flagsl; j++) switch (flags.charAt(j)) {
	            case ' ': positivePrefix = ' '; break;
	            case '+': positivePrefix = '+'; break;
	            case '-': leftJustify = true; break;
	            case '0': zeroPad = true; break;
	            case '#': prefixBaseX = true; break;
	        }

	        // parameters may be null, undefined, empty-string or real valued
	        // we want to ignore null, undefined and empty-string values
	        if (!minWidth) {
	            minWidth = 0;
	        } else if (minWidth == '*') {
	            minWidth = +a[i++];
	        } else if (minWidth.charAt(0) == '*') {
	            minWidth = +a[minWidth.slice(1, -1)];
	        } else {
	            minWidth = +minWidth;
	        }

	        // Note: undocumented perl feature:
	        if (minWidth < 0) {
	            minWidth = -minWidth;
	            leftJustify = true;
	        }

	        if (!isFinite(minWidth)) {
	            throw new Error('sprintf: (minimum-)width must be finite');
	        }

	        if (!precision) {
	            precision = 'fFeE'.indexOf(type) > -1 ? 6 : (type == 'd') ? 0 : void(0);
	        } else if (precision == '*') {
	            precision = +a[i++];
	        } else if (precision.charAt(0) == '*') {
	            precision = +a[precision.slice(1, -1)];
	        } else {
	            precision = +precision;
	        }

	        // grab value using valueIndex if required?
	        if (valueName) {
	            valueName = valueName.substr(1, valueName.length-2);
	            var value = a[1][valueName];
	        } else {
	            var value = valueIndex ? a[valueIndex.slice(0, -1)] : a[i++];
	        }

	        switch (type) {
	            case 's': return formatString(String(value), leftJustify, minWidth, precision, zeroPad);
	            case 'c': return formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad);
	            case 'b': return formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
	            case 'o': return formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
	            case 'x': return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
	            case 'X': return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad).toUpperCase();
	            case 'u': return formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
	            case 'i':
	            case 'd': {
	                        var number = parseInt(+value);
	                        var prefix = number < 0 ? '-' : positivePrefix;
	                        value = prefix + pad(String(Math.abs(number)), precision, '0', false);
	                        return justify(value, prefix, leftJustify, minWidth, zeroPad);
	                    }
	            case 'e':
	            case 'E':
	            case 'f':
	            case 'F':
	            case 'g':
	            case 'G':
	                        {
	                        var number = +value;
	                        var prefix = number < 0 ? '-' : positivePrefix;
	                        var method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())];
	                        var textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2];
	                        value = prefix + Math.abs(number)[method](precision);
	                        return justify(value, prefix, leftJustify, minWidth, zeroPad)[textTransform]();
	                    }
	            default: return substring;
	        }
	    };

	    return format.replace(regex, doFormat);
	}// }}}


	/*** EXPORTS FROM exports-loader ***/
	module.exports = sprintf;

/***/ }),

/***/ 8:
/***/ (function(module, exports, __webpack_require__) {

	/*** IMPORTS FROM imports-loader ***/
	var $ = __webpack_require__("shim/jquery");
	(function() {

	(function(global) {

	Splunk.namespace("util");

	Splunk.util = {


	    /**
	     * Assign empty handlers for logger calls. Overriden by Splunk.Logger if it is imported.
	     */
	    logger : {
	        "info":function(){},
	        "log":function(){},
	        "debug":function(){},
	        "warn":function(){},
	        "error":function(){}
	    },

	    /**
	     * Converts an object literal to an encoded querystring key/value string.
	     *
	     */
	    propToQueryString: function(dictionary) {
	        var o = [];
	        var val;
	        for (var prop in dictionary) {
	            val = dictionary[prop];
	            o.push(encodeURIComponent(prop) + '=' + encodeURIComponent(val));
	        }
	        return o.join('&');
	    },

	    /**
	     * Converts a flat querystring into an object literal
	     *
	     */
	    queryStringToProp: function(args) {
	        args = this.trim(args, '&\?#');
	        if (!args || args.length == 0) {
	            return {};
	        }

	        var parts = args.split('&');
	        var output = {};

	        var key;
	        var value;
	        var equalsSegments;
	        var lim = parts.length;
	        for (var i=0,l=lim; i<l; i++) {
	            equalsSegments = parts[i].split('=');
	            key = decodeURIComponent(equalsSegments.shift());
	            value = equalsSegments.join("=");
	            output[key] = decodeURIComponent(value.replace(/\+/g, ' '));
	        }
	        return output;
	    },

	    /**
	     * Extracts the fragment identifier value.
	     */
	    getHash: function(){
	    var hashPos = window.location.href.indexOf('#');

	    if (hashPos == -1) {
	        return "";
	    }

	    var qPos = window.location.href.indexOf('?', hashPos);

	    if (qPos != -1)
	        return window.location.href.substr(qPos);

	    return window.location.href.substr(hashPos);
	    },

	    /**
	     * This was ported, rewritten a bit and greatly simplified from the
	     * same method in the old Calendar object we used to use.
	     * TODO - it is only here temporarily, and we should continue trying to
	     * kill it.
	     */
	    parseDate : function(str, fmt) {

	        if ((!str) || (!str.indexOf) || (str.indexOf("mm")==0)) return null;

	        var y = 0;
	        var m = -1;
	        var d = 0;
	        var a = str.split(/\W+/);
	        var b = fmt.match(/%./g);
	        var i = 0, j = 0;
	        var hr = 0;
	        var min = 0;
	        var sec = 0;

	        for (i = 0; i < a.length; ++i) {
	            if (!a[i])
	                continue;
	            switch (b[i]) {
	                case "%d":
	                    d = parseInt(a[i], 10);
	                    break;

	                case "%m":
	                    m = parseInt(a[i], 10) - 1;
	                    break;

	                case "%Y":
	                case "%y":
	                    y = parseInt(a[i], 10);
	                    (y < 100) && (y += (y > 29) ? 1900 : 2000);
	                    break;

	                case "%H":
	                    hr = parseInt(a[i], 10);
	                    break;

	                case "%M":
	                    min = parseInt(a[i], 10);
	                    break;

	                case "%S":
	                    sec = parseInt(a[i], 10);
	                    break;

	                default:
	                    break;
	            }
	        }
	        if (y != 0 && m != -1 && d != 0) {
	            var ourDate = new Date(y, m, d, hr, min, sec);
	            return ourDate;
	        } else {
	            //this.logger.warn('unable to parse date "' + str + '" into "' + fmt + '"');
	            return false;
	        }
	    },
	    /**
	     * Given a timezone offset in minutes, and  a JS Date object,
	     * returns the delta in milliseconds, of the two timezones.
	     * Note that this will include the offset contributions from DST for both.
	     */
	    getTimezoneOffsetDelta: function(serverOffsetThen, d) {
	        if (!Splunk.util.isInt(serverOffsetThen)) {
	            return 0;
	        }
	        // what JS thinks the timezone offset is at the time given by d. This WILL INCLUDE DST
	        var clientOffsetThen = d.getTimezoneOffset() * 60;
	        // what splunkd told is the actual timezone offset.
	        serverOffsetThen     = serverOffsetThen * -60;

	        return 1000 * (serverOffsetThen - clientOffsetThen);
	    },

	    getEpochTimeFromISO: function(isoStr) {
	        // lazily init the regex so we only do it only if necessary and only once.
	        if (!this._isoTimeRegex) {
	            // Nobody doesnt like ISO.
	            this._isoTimeRegex = /([\+\-])?(\d{4,})(?:(?:\-(\d{2}))(?:(?:\-(\d{2}))(?:(?:[T ](\d{2}))(?:(?:\:(\d{2}))(?:(?:\:(\d{2}(?:\.\d+)?)))?)?(?:(Z)|([\+\-])(\d{2})[:]*(\d{2})?)?)?)?)?/;
	        }
	        var m = this._isoTimeRegex.exec(isoStr);
	        // put it into a string form that JS Date constructors can actually deal with.

	        // Being Super Careful: calling substring on undefined variable
	        // here throws an exception that kills the stack but doesnt
	        // appear in firebug nor even in the Error Console.
	        var seconds, millisecondsStr;
	        if (m[7]) {
	            seconds = m[7].substring(0,2);
	            // Note this includes the period.  ie ".003"
	            millisecondsStr = m[7].substring(2);
	        } else {
	            millisecondsStr = "";
	        }
	        /*jshint -W061:false */
	        // If m[11] is undefined, use 0 instead.
	        var offset = eval(m[9] + (60*m[10] + parseInt(m[11] || 0, 10)));
	        /*jshint -W061:true */

	        var str = sprintf("%s/%s/%s %s:%s:%s", m[3], m[4], m[2], m[5], m[6], seconds);
	        // its still wrong, because JS will interpret this time in localtime,
	        // AND if you give IE the timezone part of the string, it passes out in its own vomit.
	        var t = new Date(str);

	        // so we patch it.
	        t.setTime(t.getTime() + this.getTimezoneOffsetDelta(offset, t));
	        var startTime = t.getTime() / 1000;

	        return startTime + millisecondsStr;
	    },

	    getConfigValue: function(configKey, optionalDefault) {
	        if (window.$C && window.$C.hasOwnProperty(configKey)) return window.$C[configKey];
	        else if (configKey === 'FORM_KEY') {
	            // maintain backwards compatibility now that we've moved the form_key from config endpoint to cookie
	            return this.getFormKey();
	        } else {
	            if (typeof optionalDefault != 'undefined') { // ensure optionalDefault can be set to 'false'
	                // util.logger will have been swapped out by the Logger when Logger
	                // has already been setup, but still works when its not.

	                //this.logger.debug('getConfigValue - ' + configKey + ' not set, defaulting to ' + optionalDefault);
	                return optionalDefault;
	            }

	            throw new Error('getConfigValue - ' + configKey + ' not set, no default provided');
	        }
	    },

	    getCookie: function(name) {
	        var cookieValue = null;
	        if (document.cookie && document.cookie != '') {
	            var cookies = document.cookie.split(';');
	            for (var i = 0; i < cookies.length; i++) {
	                var cookie = $.trim(cookies[i]);
	                // Does this cookie string begin with the name we want?
	                if (cookie.substring(0, name.length + 1) == (name + '=')) {
	                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
	                    break;
	                }
	            }
	        }
	        return cookieValue;
	    },

	    deleteCookie: function(name) {
	        var expdate = new Date();
	        expdate.setTime(expdate.getTime() + (-1 * 24 * 60 * 60 * 1000));
	        expdate.toUTCString();
	        document.cookie = sprintf('%s=;expires=%s;path=/',name, expdate);
	    },

	    getFormKey: function() {
	        var cookieName = "splunkweb_csrf_token_" + Splunk.util.getConfigValue('MRSPARKLE_PORT_NUMBER', '');
	        var cookieValue = Splunk.util.getCookie(cookieName);
	        if (cookieValue) {
	            return cookieValue;
	        }
	        return "";
	    },

	    loginCheck: function() {
	        return Splunk.util.getCookie('login');
	    },

	    /**
	     * Returns a proper path that is relative to the current appserver location.
	     * This is critical to ensure that we are proxy compatible. This method
	     * takes 1 or more arguments, which will all be stiched together in sequence.
	     *
	     * Ex: make_url('search/job'); // "/splunk/search/job"
	     * Ex: make_url('/search/job'); // "/splunk/search/job"
	     * Ex: make_url('/search', '/job'); // "/splunk/search/job"
	     * Ex: make_url('/search', '/job', 1234); // "/splunk/search/job/1234"
	     *
	     * Static paths are augmented with a cache defeater
	     *
	     * Ex: make_url('/static/js/foo.js'); // "/splunk/static/@12345/js/foo.js"
	     * Ex: make_url('/static/js/foo.js'); // "/splunk/static/@12345.1/js/foo.js"
	     *
	     * @param path {String} The relative path to extend
	     */
	    make_url: function() {
	        var output = '', seg, len;
	        for (var i=0,l=arguments.length; i<l; i++) {
	            seg = arguments[i].toString();
	            len = seg.length;
	            if (len > 1 && seg.charAt(len-1) == '/') {
	                seg = seg.substring(0, len-1);
	            }
	            if (seg.charAt(0) != '/') {
	                output += '/' + seg;
	            } else {
	                output += seg;
	            }
	        }

	        // augment static dirs with build number
	        if (output!='/') {
	            var segments = output.split('/');
	            var firstseg = segments[1];
	            if (firstseg=='static' || firstseg=='modules') {
	                var postfix = output.substring(firstseg.length+2, output.length);
	                output = '/'+firstseg+'/@' + window.$C['BUILD_NUMBER'];
	                if (window.$C['BUILD_PUSH_NUMBER']) output += '.' + window.$C['BUILD_PUSH_NUMBER'];
	                if (segments[2] == 'app')
	                    output += ':'+this.getConfigValue('APP_BUILD', 0);
	                output += '/' + postfix;
	            }
	        }

	        var root = Splunk.util.getConfigValue('MRSPARKLE_ROOT_PATH', '/');
	        var djangoRoot = Splunk.util.getConfigValue('DJANGO_ROOT_PATH', '');
	        var locale = Splunk.util.getConfigValue('LOCALE', 'en-US');

	        var combinedPath = "";
	        if (djangoRoot && output.substring(0, djangoRoot.length) === djangoRoot) {
	            combinedPath = output.replace(djangoRoot, djangoRoot + "/" + locale.toLowerCase());
	        } else {
	            combinedPath = "/" + locale + output;
	        }

	        if (root == '' || root == '/') {
	            return combinedPath;
	        } else {
	            return root + combinedPath;
	        }
	    },

	    /**
	     * Given a path and a dictionary of options, builds a qualified query string.
	     *
	     * @param uri {String} required; path to endpoint. eg. "search/jobs"
	     * @param options {Object} key / value par of query params eg. {'foo': 'bar'}
	     */
	    make_full_url: function(url, options) {
	        url = this.make_url(url);
	        if (options) url = url + '?' + this.propToQueryString(options);
	        return url;
	    },

	    /**
	     * Redirects user to a new page.
	     *
	     * @param uri {String} required
	     * @param options {Object} containing parameters like:
	     *         sid => attaches optional sid in valid format
	     *         s => attaches optional saved search name
	     *         q => attaches optional search string in valid format
	     *
	     *         Example:
	     *             util.redirect_to('app/core/search', {
	     *                 'sid' : 1234,
	     *                 'foo' : 'bar'
	     *             });
	     *
	     *             redirects to 'splunk/app/core/search?sid=1234&foo=bar'
	     * @param windowObj {Window Object} an optional window object to target the location change
	     * @param focus {Boolean} if true, focus is called on windowObj
	     */
	    redirect_to: function(uri, options, windowObj, focus) {
	        uri = this.make_full_url(uri, options);
	        if (!windowObj) windowObj = window;
	        windowObj.document.location = uri;
	        if (focus && windowObj.focus) windowObj.focus();
	        return;
	    },

	    /**
	     * Returns the current app name (not label).
	     */
	    getCurrentApp: function() {
	        return $(document.body).attr("s:app") || 'UNKNOWN_APP';
	    },

	    /**
	     * Returns the current view name (not label).
	     */
	    getCurrentView: function() {
	        return $(document.body).attr("s:view") || 'UNKNOWN_VIEW';
	    },
	    /**
	     * Returns the current 'displayView' name if it differs from the view name, else returns the current view name.
	     */
	    getCurrentDisplayView: function() {
	        return $(document.body).attr("s:displayview") || this.getCurrentView();
	    },
	    getAutoCancelInterval: function() {
	        var interval = $(document.body).attr("s:autoCancelInterval");
	        if (!interval) {
	            this.logger.error("no autoCancelInterval found. Returning 0");
	            interval = 0;
	        }
	        return interval;
	    },
	    /**
	     * Returns the current viewstate ID as requested via the URI parameter
	     * 'vs'.  This is embedded in the <body> tag.
	     *
	     * If no viewstate has been requested, then all parameter writes will
	     * go to the default sticky state, keyed by the reserved token '_current'.
	     *
	     * NOTE: viewstate is also provided to the modules through context resurrection,
	     * And that being the case, the value of this is marginal.
	     */
	    //getCurrentViewState: function() {
	    //    return $(document.body).attr("s:viewstateid") || null;
	    //},

	    /**
	     * Returns a dictionary of all the app, view, and saved search config
	     * data that is specified in the current view.  Ex:
	     * {
	     *    'view': {"template": "builder.html", "displayView": "report_builder_display", "refresh": null, "label": "Display Report", "viewstateId": "*:ft10i02z", "onunloadCancelJobs": false, "id": "report_builder_display"},
	     *    'app': {"id": "search", "label": "Search"},
	     *    'savedSearch': {"search": "johnvey | timechart count", "name": "jvreport3", "vsid": "*:ft10i02z", "qualifiedSearch": "search  johnvey | timechart count"}
	     * }
	     */
	    getCurrentViewConfig: function() {
	        return $.extend({}, Splunk.ViewConfig);
	    },

	    /**
	     * Return the path without the localization segment.
	     */
	    getPath: function(path) {
	        if (path === undefined) {
	            path = document.location.pathname;
	        }
	        var locale = this.getConfigValue('LOCALE').toString();

	        // if there is no way to figure out the locale, just return pathname
	        if (!this.getConfigValue('LOCALE') || path.indexOf(locale) == -1) {
	            return path;
	        }
	        var start = locale.length + path.indexOf(locale);
	        return path.slice(start);
	    },

	    /**
	     * Get the cumulative offsetTop for an element.
	     *
	     * @param {Object} element A DOM element.
	     */
	    getCumlativeOffsetTop: function(element){
	        if(!element) return 0;
	        return element.offsetTop + this.getCumlativeOffsetTop(element.offsetParent);
	    },

	    /**
	     * Get the cumulative offsetLeft for an element.
	     *
	     * @param {Object} element A DOM element.
	     */
	    getCumlativeOffsetLeft: function(element){
	        if(!element) return 0;
	        return element.offsetLeft + this.getCumlativeOffsetLeft(element.offsetParent);
	    },

	    /**
	     * Retrieve the amount of content that has been hidden by scrolling down.
	     *
	     * @type Number
	     * @return 0-n value.
	     */
	    getPageYOffset: function(){
	        var pageYOffset = 0;
	        if(window.pageYOffset){
	            pageYOffset = window.pageYOffset;
	        }else if(document.documentElement && document.documentElement.scrollTop){
	            pageYOffset = document.documentElement.scrollTop;
	        }
	        return pageYOffset;
	    },

	    /**
	     * Retrieve the inner dimensions of the window. This does not work in jQuery.
	     *
	     * @type Object
	     * @return An object literal having width and height attributes.
	     */
	    getWindowDimensions: function(){
	        return {
	            width:(!isNaN(window.innerWidth))?window.innerWidth:document.documentElement.clientWidth||0,
	            height:(!isNaN(window.innerHeight))?window.innerHeight:document.documentElement.clientHeight||0
	        };
	    },

	    /**
	     * Retrieve the computed style from a specified element.
	     *
	     * @param el
	     * @param styleProperty
	     * @return The computed style value.
	     * @type String
	     */
	    getComputedStyleHelper: function(el, styleProperty){
	        if(el.currentStyle){
	            return el.currentStyle[styleProperty];
	        }else if(window.getComputedStyle){
	            var cssProperty = styleProperty.replace(/([A-Z])/g, "-$1").toLowerCase();
	            var computedStyle = window.getComputedStyle(el, "");
	            return computedStyle.getPropertyValue(cssProperty);
	        }else{
	            return "";
	        }
	    },

	    /**
	     * Retrieve a GET parameter from the window.location. Type casting is not performed.
	     * @param {String} p The param value to retrieve.
	     * @param {String} s Optional string to search through instead of window.location.search
	     * @return {String || null} The string value or null if it does not exist.
	     */
	    getParameter: function(p, s){
	        s = s || window.location.search;
	        if(!s){
	            return null;
	        }
	        if(!(s.indexOf(p+'=')+1)){
	            return null;
	        }
	        return s.split(p+'=')[1].split('&')[0];
	    },

	    /**
	     * Take an RGB value and convert to HEX equivalent.
	     *
	     * @param {String} rgb A RGB value following rgb(XXX, XXX, XXX) convention.
	     * @type String
	     * @return A HEX equivalent for a given RGB value with a leading '#' character.
	     */
	    getHEX: function(rgb){
	        var parts = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
	        var hex = (parts[1]<<16|parts[2]<<8|parts[3]).toString(16);
	        return "#"+Array(6-hex.length).concat([hex]).toString().replace(/,/g, 0);
	    },

	    /**
	     * Take an arbitrary RGB or HEX in long or shorthand notation and normalize to standard long HEX form with leading '#' character.
	     *
	     * @param {String} color A RGB or HEX color value in long or short notation.
	     * @type String or null
	     * @return A fully qualified 6 character hexadecimal value or with leading '#' character or null if it can't be processed.
	     */
	    normalizeColor: function(color){
	        normalizedColor = null;
	        if(color.charAt(0)==="#"){
	            if(color.length===4){
	                normalizedColor = color + color.charAt(1) + color.charAt(2) + color.charAt(3);
	            }else{
	                normalizedColor = color;
	            }
	        }else{
	            try{
	                normalizedColor = this.getHEX(color);
	            }catch(e){}
	        }
	        return normalizedColor;
	    },

	    // **
	    // * validate a cron string
	    // * returns true if the cron string has five elements and each element contains one or more values (comma separated) from the following list
	    // * [X, *, */X, X/Y, X-Y, X-Y/Z and X,Y]
	    // * the allowed range of values for every field is as follows:
	    // * [MINUTES HOURS DAY_OF_MONTH MONTH DAY_OF_WEEK] = [0-59 0-23 1-31 1-12 0-7]
	    // */
	    // p.s. need to comment the header different to not exit the comment block for the */X case
	    validateCronString: function(cronString) {
	        var cronRegEx = /^((0*([0-9]|[1-5][0-9])|\*)(-0*([0-9]|[1-5][0-9]))?(\/\d+)?,)*(0*([0-9]|[1-5][0-9])|\*)(-0*([0-9]|[1-5][0-9]))?(\/\d+)?\s((0*([0-9]|1[0-9]|2[0-3])|\*)(-0*([0-9]|1[0-9]|2[0-3]))?(\/\d+)?,)*(0*([0-9]|1[0-9]|2[0-3])|\*)(-0*([0-9]|1[0-9]|2[0-3]))?(\/\d+)?\s((0*([1-9]|[1-2][0-9]|3[0-1])|\*)(-0*([1-9]|[1-2][0-9]|3[0-1]))?(\/\d+)?,)*(0*([1-9]|[1-2][0-9]|3[0-1])|\*)(-0*([1-9]|[1-2][0-9]|3[0-1]))?(\/\d+)?\s((0*([1-9]|1[0-2])|\*)(-0*([1-9]|1[0-2]))?(\/\d+)?,)*(0*([1-9]|1[0-2])|\*)(-0*([1-9]|1[0-2]))?(\/\d+)?\s((0*[0-7]|\*)(-0*[0-7])?(\/\d+)?,)*(0*[0-7]|\*)(-0*[0-7])?(\/\d+)?$/;
	        if (!cronRegEx.test(cronString)) {
	            return false;
	        }
	        return true;
	    },

	    /**
	     * innerHTML substitute when it is not fast enough.
	     * @param {HTMLObject} target The target DOM element to replace innerHTML content with.
	     * @param {String} innerHTML The innerHTML string to add.
	     * @return {HTMLObject} The reference to the target DOM element as it may have been cloned and removed.
	     */
	    turboInnerHTML: function(target, innerHTML) {
	        /*@cc_on //innerHTML is faster for IE
	            target.innerHTML = innerHTML;
	            return target;
	        @*/
	        var targetClone = target.cloneNode(false);
	        targetClone.innerHTML = innerHTML;
	        target.parentNode.replaceChild(targetClone, target);
	        return targetClone;
	    },
	    normalizeBoolean: function(test, strictMode) {

	        if (typeof(test) == 'string') {
	            test = test.toLowerCase();
	        }

	        switch (test) {
	            case true:
	            case 1:
	            case '1':
	            case 'yes':
	            case 'on':
	            case 'true':
	                return true;

	            case false:
	            case 0:
	            case '0':
	            case 'no':
	            case 'off':
	            case 'false':
	                return false;

	            default:
	                if (strictMode) throw TypeError("Unable to cast value into boolean: " + test);
	                return test;
	        }
	    },
	    getCommaFormattedNumber: function(nStr) {
	        nStr += '';
	        var x = nStr.split('.');
	        var x1 = x[0];
	        var x2 = x.length > 1 ? '.' + x[1] : '';
	        var rgx = /(\d+)(\d{3})/;
	        while (rgx.test(x1)) {
	            x1 = x1.replace(rgx, '$1' + ',' + '$2');
	        }
	        return x1 + x2;
	    },


	    reLTrim: /^[\s\t\r\n]+/,
	    reLTrimCommand: /^[\s\t\r\n\|]+/,
	    reRNormalize: /[\s\t\r\n]+$/,

	    /**
	     * Returns a fully qualified search string by prepending the 'search'
	     * command of unqualified searches.  This method deems strings as unqualified
	     * if it does not start with a | or 'search '
	     *
	     * @param {boolean} isUserEntered Indicates if 'q' is expected to be unqualified
	     */
	    addLeadingSearchCommand: function(q, isUserEntered) {
	        var workingQ = '' + q;
	        workingQ = workingQ.replace(this.reLTrim, '').replace(this.reRNormalize, ' ');
	        if (workingQ.substring(0, 1) == '|') {
	            return q;
	        }

	        // this is specific to the case where searchstring = 'search ',
	        // which we conservatively assume does not constitute a search command
	        if (!isUserEntered
	            && (workingQ.substring(0, 7) == 'search ' && workingQ.length > 7))
	        {
	            return q;
	        }
	        return 'search ' + workingQ;
	    },

	    /**
	     * Returns an unqualified search string by removing any leading 'search '
	     * command.  This method does a simple search at the beginning of the
	     * search.
	     */
	    stripLeadingSearchCommand: function(q) {
	        var workingQ = '' + q;
	        workingQ = workingQ.replace(this.reLTrimCommand, '');
	        if (workingQ.substring(0, 7) == 'search ') {
	            return workingQ.substring(7).replace(this.reLTrimCommand, '');
	        }
	        return q;
	    },

	    /**
	     * Deserializes a string into a field list.
	     */
	    stringToFieldList: function(strList) {
	        if (typeof(strList) != 'string' || !strList) return [];
	        var items = [];
	        var field_name_buffer = [];
	        var inquote = false;
	        var str = $.trim(strList);
	        for (var i=0,j=str.length; i<j; i++) {
	            if (str.charAt(i) == '\\') {
	                var nextidx = i+1;
	                if (j > nextidx && (str.charAt(nextidx) == '\\' || str.charAt(nextidx) == '"')) {
	                    field_name_buffer.push(str.charAt(nextidx));
	                    i++;
	                    continue;
	                } else {
	                    field_name_buffer.push(str.charAt(i));
	                    continue;
	                }
	            }

	            if (str.charAt(i) == '"') {
	                if (!inquote) {
	                    inquote = true;
	                    continue;
	                } else {
	                    inquote = false;
	                    items.push(field_name_buffer.join(''));
	                    field_name_buffer = [];
	                    continue;
	                }
	            }

	            if ((str.charAt(i) == ' ' || str.charAt(i) == ',') && !inquote) {
	                if (field_name_buffer.length > 0) {
	                    items.push(field_name_buffer.join(''));
	                }
	                field_name_buffer = [];
	                continue;
	            }
	            field_name_buffer.push(str.charAt(i));
	        }
	        if (field_name_buffer.length > 0) items.push(field_name_buffer.join(''));
	        return items;
	    },


	    /**
	     * Serializes a field list array into a string.
	     */
	    _sflQuotable: /([\\",\s])/,
	    _sflEscapable: /([\\"])/g,
	    fieldListToString: function(fieldArray) {
	        if (!fieldArray) return '';
	        var output = [];
	        for (var i=0,L=fieldArray.length; i<L; i++) {
	            var v = $.trim(fieldArray[i]);
	            if (v != '') {
	                // Escape any char with the backslash.
	                if (v.search(this._sflEscapable) > -1) {
	                    v = v.replace(this._sflEscapable, "\\$1");
	                }

	                // Quote the entire string if a backslash, comma, space
	                // or double quote is present.
	                if (v.search(this._sflQuotable) > -1) {
	                    v = ['"', v, '"'].join('');
	                }

	                output.push(v);
	            }
	        }
	        return output.join(',');
	    },
	    /**
	     * Escapes a string for use in the search language.
	     *
	     * @param str {String} string to escape
	     * @param options {Object} {
	     *     forceQuotes {Boolean, default false} adds quotes around the string even if it doesn't contain special characters,
	     *                 useful if the result is being used as a string literal in the search language.
	     * }
	     * @returns {string}
	     */
	    searchEscape: function(str, options) {
	        if (!str.match(/[\s\,=|\[\]\"]/))
	            return options && options.forceQuotes ? '"' + str + '"' : str;

	        return '"' + str.replace(/(\"|\\)/g, "\\$1") + '"';
	    },

	    /**
	     * Un-escapes a string that was previously escaped using `searchEscape`.
	     *
	     * @param str {String}
	     * @returns {String}
	     */
	    searchUnescape: function(str) {
	        if (str[0] !== '"' || str[str.length -1] !== '"') {
	            return str;
	        }
	        return str.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
	    },

	    /**
	     * Compare the likeness of two objects. Please use with discretion.
	     */
	    objectSimilarity: function(obj1, obj2){
	            if(obj1 instanceof Array && obj2 instanceof Array){
	                    if(obj1.length!==obj2.length){
	                       return false;
	                    }else{
	                        for(var i=0; i<obj1.length; i++){
	                            if(!this.objectSimilarity(obj1[i], obj2[i])){
	                                return false;
	                            }
	                        }
	                    }
	            }else if(obj1 instanceof Object && obj2 instanceof Object){
	                if(obj1!=obj2){
	                    for(var j in obj2){
	                        if(!obj1.hasOwnProperty(j)){
	                            return false;
	                        }
	                    }
	                    for(var k in obj1){
	                        if(obj1.hasOwnProperty(k)){
	                            if(obj2.hasOwnProperty(k)){
	                                if(!this.objectSimilarity(obj1[k], obj2[k])){
	                                    return false;
	                                }
	                            }else{
	                                return false;
	                            }
	                        }
	                    }
	                }
	            }else if(typeof(obj1)==="function" && typeof(obj2)==="function"){
	                if(obj1.toString()!==obj2.toString()){
	                    return false;
	                }
	            }else if(obj1!==obj2){
	                return false;
	            }
	            return true;
	    },
	    /**
	     * Stop watch class.
	     */
	    StopWatch: function(){
	        var self = this,
	            startTime = null,
	            stopTime = null,
	            times = [];
	        var isSet = function(prop){
	            return (prop==null)?false:true;
	        };
	        var isStarted = function(){
	            return isSet(startTime);
	        };
	        var isStopped = function(){
	            return isSet(stopTime);
	        };
	        var softReset = function(){
	            startTime = null;
	            stopTime = null;
	        };
	        self.start = function(){
	            if(isStarted()){
	               throw new Error("cannot call start, start already invoked.");
	            }
	            startTime = new Date();
	        };
	        self.stop = function(){
	           if(!isStarted()){
	               throw new Error("cannot call stop, start not invoked.");
	           }
	           if(isStopped()){
	               throw new Error("cannot call stop, stop already invoked.");
	           }
	           stopTime = new Date();
	           time = stopTime - startTime;
	           times.push(time);
	        };
	        self.pause = function(){
	            if(!isStarted()){
	               throw new Error("cannot call pause, start not invoked.");
	            }
	            if(isStopped()){
	               throw new Error("cannot call pause, stop already invoked.");
	            }
	            self.stop();
	            softReset();
	        };
	        self.reset = function(){
	            softReset();
	            times = [];
	        };
	        self.time = function(){
	            var total = 0;
	            for(i=0; i<times.length; i++){
	                total += times[i];
	            }
	            if(isStarted() && !isStopped()){
	                total += (new Date() - startTime);
	            }
	            return total/1000;
	        };
	    },

	    isInt: function(num) {
	        return num!=='' && !isNaN(parseInt(num, 10)) && parseInt(num, 10)==(num/1);
	    },

	    /**
	     * Returns a string trimmed to maxLength by removing characters from the
	     * middle of the string and replacing with ellipses.
	     *
	     * Ex: Splunk.util.smartTrim('1234567890', 5) ==> '12...890'
	     *
	     */
	    smartTrim: function(string, maxLength) {
	        if (!string) return string;
	        if (maxLength < 1) return string;
	        if (string.length <= maxLength) return string;
	        if (maxLength == 1) return string.substring(0,1) + '...';

	        var midpoint = Math.ceil(string.length / 2);
	        var toremove = string.length - maxLength;
	        var lstrip = Math.ceil(toremove/2);
	        var rstrip = toremove - lstrip;
	        return string.substring(0, midpoint-lstrip) + '...' + string.substring(midpoint+rstrip);
	    },
	    _tokenDiscoverer : /\$([^$]+)\$/g,

	    /**
	     * Finds all instances of any string looking like "$foo$" anywhere in the given object literal.
	     * returns an array of all the distinct values it found, eg 'foo'.
	     * if a single string value in the struct has two, like "$foo$ $bar$", duplicates are removed.
	     * This will also discover any number of "$foo$" substrings that are found within the
	     * keys of object literals, not just the values.
	     */
	    discoverReplacementTokens: function(fragment) {
	        var keys = [];
	        var tokenDiscoverer = Splunk.util._tokenDiscoverer;
	        var keysToAdd;

	        if (typeof fragment == 'string') {
	            if (fragment.match(tokenDiscoverer)) {
	                keysToAdd = fragment.match(tokenDiscoverer);
	                // TODO - im sure there's a way to write the re so that it doesnt include the '$' chars but im moving on.
	                for (var i=0; i<keysToAdd.length; i++ ) {
	                    keysToAdd[i] = keysToAdd[i].substring(1, keysToAdd[i].length-1);
	                }
	                return keysToAdd;
	            }
	            return [];
	        }
	        else if (typeof fragment == "function") {
	            return [];
	        }

	        // then fragment is not a string.
	        for (var key in fragment) {
	            keysToAdd = [];
	            keysToAdd = Splunk.util.discoverReplacementTokens(fragment[key]);

	            // up until now we've only looked at values. We have to also discover keys in the key itself..
	            var matchesInTheKeyItself = key.match(tokenDiscoverer) || [];
	            for (var j=0; j<matchesInTheKeyItself.length; j++) {
	                // TODO - im sure there's a way to write the re so that it doesnt include the '$' chars but im moving on.
	                keysToAdd.push(matchesInTheKeyItself[j].substring(1, matchesInTheKeyItself[j].length-1));
	            }
	            // check against duplicates.
	            for (var k=0; k<keysToAdd.length; k++) {
	                if (keys.indexOf(keysToAdd[k]) ==-1) {
	                    keys.push(keysToAdd[k]);
	                }
	            }
	        }
	        return keys;
	    },

	    /**
	     * walked through the entirety of fragment to all levels of nesting
	     *  and will replace all matches of the given single regex with the given
	     *  single value.
	     *  replacement will occur in both keys and values.
	     */
	    replaceTokens: function(fragment, reg, value) {
	        if (typeof fragment == 'string') {
	            if (fragment.match(reg)) {
	                fragment = fragment.replace(reg, value);
	            }
	            return fragment;
	        }
	        else if (typeof fragment == "function") {
	            return fragment;
	        }
	        // watch out for infinite loops.  We make all changes to the array after iteration.

	        var keysToRename = {};
	        for (var key in fragment) {
	            // recurse
	            if (typeof fragment[key] == 'object') {
	                Splunk.util.replaceTokens(fragment[key], reg, value);
	            }
	            // we have hit a string value.
	            else if (typeof fragment[key] == 'string' && fragment[key].match(reg)) {
	                fragment[key] = fragment[key].replace(reg, value);
	            }
	            // now that the value is changed we check the key itself
	            if (key.match(reg)) {
	                // mark this to be changed after we're out of the iterator
	                keysToRename[key] = key.replace(reg, value);
	            }
	        }
	        for (var oldKey in keysToRename) {
	            var newKey = keysToRename[oldKey];
	            fragment[newKey] = fragment[oldKey];
	            delete(fragment[oldKey]);
	        }
	        return fragment;
	    },


	    getServerTimezoneOffset: function() {
	        return Splunk.util.getConfigValue('SERVER_TIMEZONE_OFFSET');
	    },

	    // constants used by Modules as well as ModuleLoader, to denote runtime states
	    // WAITING_FOR_INITIALIZATION and WAITING_FOR_HIERARCHY mean that the Modules
	    // are still being loaded by ModuleLoader.
	    // the remaining two states are relevant BOTH during page load, and in general
	    // at runtime thereafter.
	    // whether or not the page is still loading is an orthogonal piece of information,
	    // and modules can check it on demand by calling Module.isPageLoadComplete().
	    moduleLoadStates: {
	        WAITING_FOR_INITIALIZATION   : 1,  // waiting for INITIALIZATION
	        WAITING_FOR_HIERARCHY   : 2,  // waiting for HIERARCHY
	        WAITING_FOR_CONTEXT: 6,
	        HAS_CONTEXT         : 7
	    },

	    /**
	     * Returns a wait time (sec) based on the current time elapsed, as mapped
	     * onto a cubic easing function.
	     *
	     * elapsed_time: number of seconds that have elapsed since the first
	     *     call to getRetryInterval()
	     *
	     * min_interval: minimum return value of this method; also the interval
	     *     returned when elapsed_time = 0
	     *
	     * max_interval: maximum return value of this method; also the interval
	     *     returned when elapsed_time >= clamp_time
	     *
	     * clamp_time: total duration over which to calculate a wait time; while
	     *     elapsed_time < clamp_time, the return value will be less than
	     *     max_interval; when elapsed_time >= clamp_time, the return value will
	     *     always be max_interval
	     *
	     */
	    getRetryInterval: function(elapsed_time, min_interval, max_interval, clamp_time) {
	        if (elapsed_time >= clamp_time) return parseFloat(max_interval);
	        return Math.min(max_interval * Math.pow(elapsed_time/parseFloat(clamp_time), 3) + min_interval, max_interval);
	    },


	    /**
	     * Returns a string with HTML entities escaped.
	     * NOTE: IE will not interpret ""&apos;", opting to just render it encoded
	     *      we use the alternate decimal version instead
	     *
	     */
	    escapeHtml: function(input) {
	        return (""+input).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#39;');
	    },

	    /**
	     * Returns a string with backslashes escaped
	     */
	    escapeBackslash: function(input) {
	        return (""+input).replace(/\\/g, '\\\\');
	    },

	    /**
	     * Returns a string with double quotes escaped
	     */
	    escapeQuotes: function(input) {
	        return (""+input).replace("\"","\\\"");
	    },

	    /**
	     * Returns a string with regex characters escaped
	     * http://stackoverflow.com/questions/2593637
	     */
	    escapeRegex: function(input) {
	        return (input+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
	    },

	    /**
	     * Escapes any special characters for use in a jQuery selector
	     */
	    escapeSelector: function(input) {
	        return (""+input).replace(/([;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1');
	    },

	    /**
	     * Trim out any special characters, leaving alphanumeric and -_{}?
	     *
	     * @param input
	     * @return {*}
	     */
	    trimToAlphaNumeric: function(input) {
	        return (""+input).replace(/([\s;&,\.\+\*\~':"\!\^#$%@\[\]\(\)=<>`\/\|\\])/g, '');
	    },

	    /**
	     * From http://blog.stevenlevithan.com/archives/faster-trim-javascript
	     * profiler shows this is much faster than the previous implementation in both IE and Firefox.
	     *
	     * @param {String} str The string to trim.
	     * @param {String} (Optional) delim The characters to remove from the start/end of the string.
	     *
	     * @type String
	     * @return A trimmed string.
	     */
	    trim: function(str, delim) {
	        if (delim) return str.replace(new RegExp("^[\\s" + delim + "]+"),'').replace(new RegExp("[\\s" + delim + "]+$"), '');
	        else return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
	    },

	    /**
	     * Simple normalization for user input: trims whitespaces and lowercases string
	     *
	     * @param str {String} input string
	     * @param defValue {String} (optional) default value if str is null
	     * @return {String} cleansed string
	     */
	    lowerTrimStr: function(str, defValue) {
	        if (!str) {
	            return defValue ? defValue : str;
	        }
	        return this.trim(str).toLowerCase();
	    },

	    focusFirstField: function(popup){ //this puts the focus on the first form element whether an input or select dropdown
	        var firstInput = $(":input:visible:enabled:first",popup),
	        firstSelect = $("select:visible:enabled:first",popup);

	        if(firstInput.is(":button") && firstInput.hasClass('splButton-secondary')) {
	            if($(":input:button.splButton-primary:first", popup).length) {
	                firstInput = $(":input:button.splButton-primary:first", popup);
	            }
	        }

	        var firstInputOffset = (firstInput.length) ? firstInput.offset().top : false,
	        firstSelectOffset = (firstSelect.length) ? firstSelect.offset().top : false,
	        firstElem = firstInput;

	        if(firstInputOffset && firstSelectOffset && (firstSelectOffset < firstInputOffset)){
	            firstElem = firstSelect;
	        }
	        firstElem.focus();
	        var isFirstElemFocused = firstElem.is(":focus");

	        //Fix for IE8
	        if(!isFirstElemFocused) {
	            setTimeout(function() {
	                firstElem.focus();
	            }, 10);
	        }
	    },

	    /**
	     * Transform a string against wiki formatting rules.
	     *
	     * @param {String} str The string to format.
	     *
	     * @type String
	     * @return A HTML formatted string.
	     */
	    getWikiTransform: function(str) {
	        var text = Splunk.util.escapeHtml(str);
	        // we tokenize the conditional '!' prefix and replace it after
	        text = text.replace(/\[(\!?)(\w+\:\/\/[^\s]+)\s+([^\]]+)\]/g, '<a href="$2" #~#$1#~#>$3</a>');
	        text = text.replace(/\[\[(\!?)([^\|]+)\|([^\]]+)\]\]/g, Splunk.util._generateInternalLink);
	        text = text.replace(/#~#!#~#/g, 'target="_blank"');
	        text = text.replace(/\s*#~##~#/g, '');
	        return text;
	    },

	    _generateInternalLink: function(str, blank_token, url, text) {
	        url = Splunk.util.make_url(url);
	        return '<a href="'+url+'"#~#'+blank_token+'#~#>'+text+'</a>';
	    },

	    /**
	     * Utility to get the indices of all regular expression matches
	     *
	     * @param rex {RegExp} regular expression to match on
	     * @param source {string} the text on which to find matches
	     * @return {Array} all of the matches
	     *             {Object}
	     *                 match {string} the substring match found in the source
	     *                 start {number} the index in the source for the start of the match
	     *                 end {number} the index in the source for the end of the match
	     */
	    findMatchIndices: function(rex, source) {
	        var matches = source.match(rex);
	        var index = 0;
	        var results = [];
	        var length = matches.length;

	        for (var i = 0; i < length; i++) {
	            var match = matches[i];
	            index = source.indexOf(match, index);
	            if (index != -1) {
	                results.push({match: match, start: index, end: index + match.length - 1});
	            }
	            index++;
	        }

	        return results;
	    },

	    isRainmakr: function(isDmcEnabled, isCloud) {
	        return (!isDmcEnabled && isCloud);
	    },

	    isStackmakr: function(isDmcEnabled, isCloud) {
	        return (isDmcEnabled && isCloud);
	    },

	    /**
	     * Returns IE version or -1 if it's not IE
	     *
	     */
	     getIEVersion: function() {
	        var myNav = navigator.userAgent.toLowerCase();
	        if (myNav.indexOf('msie') != -1) {
	            return parseInt(myNav.split('msie')[1], 10);
	        }
	        // Check IE > 10
	        if (myNav.indexOf('trident') != -1) {
	            return parseInt(myNav.split(' rv:')[1], 10);
	        }
	        return -1;
	    },

	    /**
	    * Restart splunkd/splunkweb and udpate the UI with progress
	    */
	    restart_server: function(return_to) {
	        var start_time;
	        var restart_timeout = false;
	        var restart_tries = 0;
	        var restart_url_base;
	        var restart_url_proto;
	        var restart_done = false;
	        var restart_notified = false;
	        var img_list = [];
	        var RESTART_MAX_TRIES = 180; // Wait max of 3 minutes for restart
	        var PING_INTERVAL = 2000;

	        var restart_fail = function(msg) {
	            Splunk.Messenger.System.getInstance().send('error', 'restart_server', msg);
	            $(document).trigger('restart_failed');
	        };

	        var restart_succeeded = function() {
	            if (!restart_notified) {
	                restart_notified = true;
	                alert(_('Restart successful - click OK to log back into Splunk'));
	                var bounce_url;
	                if (return_to) {
	                    bounce_url = restart_url_base + this.make_full_url('/account/login', { return_to: return_to });
	                } else {
	                    bounce_url = restart_url_base + this.make_url('/');
	                }
	                window.location.href = bounce_url;
	            }
	        }.bind(this);

	        /**
	        * Track when the current instance of the appserver was started; if it changes then
	        * the restart has finished.
	        */
	        var restart_check_status = function () {
	            if (restart_done)
	                return;

	            if(restart_tries++ >= RESTART_MAX_TRIES) {
	                restart_fail(_('Timed out waiting for restart'));
	                return;
	            }

	            $.ajax({
	                type: 'GET',
	                dataType: 'json',
	                cache: false,
	                url: restart_url_base + this.make_url('/api/config/UI_UNIX_START_TIME'),
	                success: function(data) {
	                    if (data.start_time > start_time) {
	                        restart_done = true;
	                        clearTimeout(restart_timeout);
	                        restart_succeeded();
	                    }
	                }
	            });
	            // if the script fails to load (ie. because splunkweb is still down)
	            // jquery won't give us an error; instead nothing will happen hence we
	            // need to refire the poll
	            restart_timeout = setTimeout(restart_check_status, PING_INTERVAL);
	        }.bind(this);

	        var restart_img_loaded = function() {
	            restart_done = true;
	            clearTimeout(restart_timeout);
	            restart_succeeded();
	        };

	        /**
	        * Img checking works better than timestamp checking if the protocol has been changed
	        */
	        var restart_check_status_img = function() {
	            if (restart_done) {
	                return;
	            }
	            var im = new Image();
	            im.onload = restart_img_loaded;
	            im.src = restart_url_base + this.make_url('/config/img?proto='+restart_url_proto+'&_='+ Math.random());
	            img_list.push(im);
	            restart_timeout = setTimeout(restart_check_status_img, PING_INTERVAL);
	        }.bind(this);

	        $.post(this.make_url('/api/manager/control'), {operation: 'restart_server'}, function(data) {
	            if (data.status=='OK') {
	                start_time = data.start_time;

	                if (data.ssl == 'window') data.ssl = window.location.protocol == 'https:';

	                restart_url_proto = data.ssl ? 'https' : 'http';
	                restart_url_base = (data.ssl ? 'https://' : 'http://') + window.location.hostname + (data.port==80 || (data.ssl && data.port==443) ? '' : ':'+data.port);

	                // Turn off stuff that continues to try to communicate with the appserver
	                Splunk.Logger.mode.Default = Splunk.Logger.mode.None;
	                if (Splunk.Messenger) {
	                    Splunk.Messenger.System.getInstance().abortRequests = true;
	                }
	                // Send a signal to stop all the pollers
	                Splunk.Session.getInstance().signalRestart();

	                restart_tries = 0;
	                var current_port = window.location.port || (window.location.protocol=='http:' ? 80 : 443);
	                var current_ssl = window.location.protocol == 'https:';
	                if ((!current_ssl && data.ssl) || (data.ssl && current_port!=data.port)) {
	                    // Switching into SSL or changing ports with SSL enabled can cause problems if the browser doesn't accept the new cert
	                    // (ie. a self signed, or untrusted cert is in use which is a common case)
	                    $(document).trigger({ type: 'restart_ssl', sslBase: restart_url_base });
	                    return;
	                }
	                if (data.ssl!=current_ssl || current_port!=data.port) {
	                    restart_check_status_img();
	                } else {
	                    restart_check_status();
	                }
	            } else if (data.status == 'PERMS') {
	                restart_fail(_('Permission Denied - You are not authorized to restart the server'));
	            } else if (data.status == 'AUTH') {
	                restart_fail(_('Restart failed'));
	            } else if (data.status == 'FAIL') {
	                restart_fail(_('Restart failed: '+data.reason));
	            } else {
	                restart_fail(_('Restart failed'));
	            }
	        }.bind(this), 'json');
	    },

	    /**
	     * Push data to Splunk Web Analytics (SWA)
	     */
	    trackEvent: function (data) {
	        if (window._splunk_metrics_events && typeof data === 'object') {
	            window._splunk_metrics_events.push(data);
	        }
	    }
	};

	/**
	 * ----------------------
	 * Black magic for Prototype's bind() method which we're still using.
	 *
	 */

	if(!Function.prototype.bind) {
	  var $A = function(iterable) {
	    if (!iterable) return [];
	    if (iterable.toArray) {
	      return iterable.toArray();
	    } else {
	      var results = [];
	      for (var i = 0, length = iterable.length; i < length; i++)
	        results.push(iterable[i]);
	      return results;
	    }
	  };
	  Function.prototype.bind = function() {
	    var __method = this, args = $A(arguments), object = args.shift();
	    return function() {
	      return __method.apply(object, args.concat($A(arguments)));
	    };
	  };
	}
	/**
	 * ----------------------
	 * Prototype augmentation.
	 * TODO - find another way.
	 *
	 */

	if (!String.prototype.repeat) {
	    String.prototype.repeat = function(count) {
	        return new Array(count+1).join(this);
	    };
	}

	if (!String.prototype.reverse) {
	    String.prototype.reverse = function() {
	        return this.split('').reverse().join('');
	    };
	}

	if (!String.prototype.rsplit) {
	    String.prototype.rsplit = function(sep, limit) {
	        var sp = this.split(sep);
	        if (limit && sp.length > limit) {
	            var r = [];
	            for(var i=0; i<limit; i++)
	                r[i] = sp[sp.length-limit+i];
	            return r;
	        }
	        return sp;
	    };
	}

	if (!Array.prototype.indexOf) {
	    Array.prototype.indexOf = function(search, fromIndex) {
	        if (!fromIndex) fromIndex = 0;
	        for(var i=0; i<this.length; i++) {
	            if (this[i] === search)
	                return i;
	        }
	        return -1;
	    };
	}

	if (!Array.prototype.extend) {
	    Array.prototype.extend = function(arr) {
	        for(var i=0; i<arr.length; i++)
	            this.push(arr[i]);
	    };
	}

	/**
	* sprintf routine borrowed from http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_sprintf/
	* Licensed under GPL and MIT licenses
	*
	* Modified by Gareth to add support for Python style argument specifiers:
	* sprintf("Hi %(name)s, welcome to %(application)s", { name: 'Gareth', app: 'Splunk })
	* Objects holding named arguments can also implement a python style __getitem__ method to return dynamic values
	*/
	var sprintf = global.sprintf = function( ) {
	    // Return a formatted string
	    //
	    // +    discuss at: http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_sprintf/
	    // +       version: 810.1015
	    // +   original by: Ash Searle (http://hexmen.com/blog/)
	    // + namespaced by: Michael White (http://getsprink.com)
	    // +    tweaked by: Jack
	    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	    // *     example 1: sprintf("%01.2f", 123.1);
	    // *     returns 1: 123.10

	    var regex = /%%|%(\d+\$)?(\([^)]+\))?([-+#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuidfegEG])/g;
	    var a = arguments;
	    var i = 0;
	    var format = a[i];
	    i++;

	    // pad()
	    var pad = function(str, len, chr, leftJustify) {
	        var padding = (str.length >= len) ? '' : Array(1 + len - str.length >>> 0).join(chr);
	        return leftJustify ? str + padding : padding + str;
	    };

	    // justify()
	    var justify = function(value, prefix, leftJustify, minWidth, zeroPad) {
	        var diff = minWidth - value.length;
	        if (diff > 0) {
	            if (leftJustify || !zeroPad) {
	                value = pad(value, minWidth, ' ', leftJustify);
	            } else {
	                value = value.slice(0, prefix.length) + pad('', diff, '0', true) + value.slice(prefix.length);
	            }
	        }
	        return value;
	    };

	    // formatBaseX()
	    var formatBaseX = function(value, base, prefix, leftJustify, minWidth, precision, zeroPad) {
	        // Note: casts negative numbers to positive ones
	        var number = value >>> 0;
	        prefix = prefix && number && {'2': '0b', '8': '0', '16': '0x'}[base] || '';
	        value = prefix + pad(number.toString(base), precision || 0, '0', false);
	        return justify(value, prefix, leftJustify, minWidth, zeroPad);
	    };

	    // formatString()
	    var formatString = function(value, leftJustify, minWidth, precision, zeroPad) {
	        if (precision != null) {
	            value = value.slice(0, precision);
	        }
	        return justify(value, '', leftJustify, minWidth, zeroPad);
	    };

	    // finalFormat()
	    var doFormat = function(substring, valueIndex, valueName, flags, minWidth, _, precision, type) {
	        if (substring == '%%') return '%';

	        // parse flags
	        var leftJustify = false, positivePrefix = '', zeroPad = false, prefixBaseX = false;
	        var flagsl = flags.length;
	        for (var j = 0; flags && j < flagsl; j++) switch (flags.charAt(j)) {
	            case ' ': positivePrefix = ' '; break;
	            case '+': positivePrefix = '+'; break;
	            case '-': leftJustify = true; break;
	            case '0': zeroPad = true; break;
	            case '#': prefixBaseX = true; break;
	            default: break;
	        }

	        // parameters may be null, undefined, empty-string or real valued
	        // we want to ignore null, undefined and empty-string values
	        if (!minWidth) {
	            minWidth = 0;
	        } else if (minWidth == '*') {
	            minWidth = +a[i];
	            i++;
	        } else if (minWidth.charAt(0) == '*') {
	            minWidth = +a[minWidth.slice(1, -1)];
	        } else {
	            minWidth = +minWidth;
	        }

	        // Note: undocumented perl feature:
	        if (minWidth < 0) {
	            minWidth = -minWidth;
	            leftJustify = true;
	        }

	        if (!isFinite(minWidth)) {
	            throw new Error('sprintf: (minimum-)width must be finite');
	        }

	        if (!precision) {
	            precision = 'fFeE'.indexOf(type) > -1 ? 6 : (type == 'd') ? 0 : void(0);
	        } else if (precision == '*') {
	            precision = +a[i];
	            i++;
	        } else if (precision.charAt(0) == '*') {
	            precision = +a[precision.slice(1, -1)];
	        } else {
	            precision = +precision;
	        }

	        // grab value using valueIndex if required?
	        var value;
	        if (valueName) {
	            valueName = valueName.substr(1, valueName.length-2);
	            value = a[1].__getitem__ ? a[1].__getitem__(valueName) : a[1][valueName];
	        } else {
	            if (valueIndex){
	                value = a[valueIndex.slice(0, -1)];
	            }
	            else
	            {
	                value = a[i];
	                i++;
	            }
	        }

	        var number;
	        var prefix;
	        switch (type) {
	            case 's': return formatString(String(value), leftJustify, minWidth, precision, zeroPad);
	            case 'c': return formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad);
	            case 'b': return formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
	            case 'o': return formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
	            case 'x': return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
	            case 'X': return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad).toUpperCase();
	            case 'u': return formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
	            case 'i':
	            case 'd': {
	                        number = parseInt(+value, 10);
	                        prefix = number < 0 ? '-' : positivePrefix;
	                        value = prefix + pad(String(Math.abs(number)), precision, '0', false);
	                        return justify(value, prefix, leftJustify, minWidth, zeroPad);
	                    }
	            case 'e':
	            case 'E':
	            case 'f':
	            case 'F':
	            case 'g':
	            case 'G':
	                        {
	                        number = +value;
	                        prefix = number < 0 ? '-' : positivePrefix;
	                        var method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())];
	                        var textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2];
	                        value = prefix + Math.abs(number)[method](precision);
	                        return justify(value, prefix, leftJustify, minWidth, zeroPad)[textTransform]();
	                    }
	            default: return substring;
	        }
	    };

	    return format.replace(regex, doFormat);
	};// }}}

	})(this);

	}.call(window));

/***/ }),

/***/ 9:
/***/ (function(module, exports) {

	/* WEBPACK VAR INJECTION */(function(__filename) {module.exports = {
	    resolve: {
	        alias: {
	            'coreAliases': __filename,
	            // contrib libraries
	            'jquery$': 'shim/jquery',
	            'moment': 'contrib/moment',
	            'numeral': 'shim/numeral',
	            'highcharts.runtime_patches': 'contrib/highcharts-4.0.4/runtime_patches',
	            'backbone_validation': 'contrib/backbone-validation-amd',
	            'intro': 'shim/intro',
	            'document-register-element': 'contrib/polyfills/document-register-element.max.amd',

	            /* augments builtin prototype */
	            'strftime': 'contrib/strftime',
	            'jg': 'contrib/jg_lib', // TODO Do we need to shim this?
	            'spin': 'contrib/spin',
	            'sax': 'contrib/sax',
	            'ace/ace$': 'shim/ace-editor',
	            'ace/mode-spl': 'shim/mode-spl',

	            // splunkjs
	            'async': 'splunkjs/contrib/requirejs-plugins/async', // TODO We should not use splunkjs in core! Move this to core?

	            // paths for deprecated versions of jquery
	            'contrib/jquery-1.8.2': 'contrib/deprecated/jquery-1.8.2',
	            'contrib/jquery-1.8.3': 'contrib/deprecated/jquery-1.8.3',
	            'contrib/jquery-1.10.2': 'contrib/deprecated/jquery-1.10.2',

	            // Begin shimmed modules

	            /* augments builtin prototype */
	            'leaflet': 'shim/leaflet',
	            'jg_global$': 'shim/jg_global',
	            'jgatt$': 'shim/jgatt',
	            'lowpro': 'shim/lowpro',

	            // other contrib libraries
	            'underscore': 'require/underscore', // shim shared with requirejs config
	            'backbone': 'require/backbone', // shim shared with requirejs config
	            'highcharts': 'shim/highcharts',
	            'prettify': 'shim/prettify',
	            'requirejs': 'shim/requirejs',

	            'jquery.history$': 'shim/jquery.history',
	            'jquery.bgiframe$': 'shim/jquery.bgiframe',
	            'jquery.cookie$': 'shim/jquery.cookie',
	            'jquery.deparam$': 'shim/jquery.deparam',
	            'jquery.fileupload$': 'shim/jquery.fileupload',
	            'jquery.iframe-transport$': 'shim/jquery.iframe-transport',

	            // jQuery UI plugins
	            'jquery.ui.core': 'shim/jquery.ui.core',
	            'jquery.ui.widget': 'shim/jquery.ui.widget',
	            'jquery.ui.datepicker': 'shim/jquery.ui.datepicker',
	            'jquery.ui.position': 'shim/jquery.ui.position',
	            'jquery.ui.mouse': 'shim/jquery.ui.mouse',
	            'jquery.ui.draggable': 'shim/jquery.ui.draggable',
	            'jquery.ui.droppable': 'shim/jquery.ui.droppable',
	            'jquery.ui.sortable': 'shim/jquery.ui.sortable',
	            'jquery.ui.resizable': 'shim/jquery.ui.resizable',
	            'jquery.ui.button': 'shim/jquery.ui.button',
	            'jquery.ui.spinner': 'shim/jquery.ui.spinner',
	            'jquery.ui.effect': 'shim/jquery.ui.effect',
	            'jquery.ui.effect-slide': 'shim/jquery.ui.effect-slide',
	            'tree.jquery': 'shim/tree.jquery',
	            'jquery.resize': 'shim/jquery.resize',
	            'jquery.sparkline$': 'shim/jquery.sparkline',

	            // bootstrap components
	            // FIXME: bootstrap.button collides with jquery.ui.button on the jQuery prototype !!
	            'bootstrap.affix': 'shim/bootstrap.affix',
	            'bootstrap.alert': 'shim/bootstrap.alert',
	            'bootstrap.button': 'shim/bootstrap.button',
	            'bootstrap.carousel': 'shim/bootstrap.carousel',
	            'bootstrap.collapse': 'shim/bootstrap.collapse',
	            'bootstrap.dropdown': 'shim/bootstrap.dropdown',
	            'bootstrap.modal': 'shim/bootstrap.modal',
	            'bootstrap.popover': 'shim/bootstrap.popover',
	            'bootstrap.scrollspy': 'shim/bootstrap.scrollspy',
	            'bootstrap.tab': 'shim/bootstrap.tab',
	            'bootstrap.tooltip': 'shim/bootstrap.tooltip',
	            'bootstrap.transition': 'shim/bootstrap.transition',
	            'bootstrap.typeahead': 'shim/bootstrap.typeahead',

	            // Splunk legacy
	            'splunk$': 'shim/splunk',
	            'splunk.legend': 'shim/splunk.legend',
	            'splunk.logger': 'shim/splunk.logger',
	            'splunk.error': 'shim/splunk.error',
	            'splunk.util': 'shim/splunk.util',
	            'splunk.pdf': 'shim/splunk.pdf',
	            'splunk.i18n': 'stubs/i18n', // shim shared with requirejs config
	            'splunk.config': 'stubs/splunk.config', // shim shared with requirejs config
	            'splunk.paginator': 'shim/splunk.paginator',
	            'splunk.messenger': 'shim/splunk.messenger',
	            'splunk.time': 'shim/splunk.time',
	            'splunk.timerange': 'shim/splunk.timerange',
	            'splunk.window': 'shim/splunk.window',
	            'splunk.jabridge': 'shim/splunk.jabridge', // Do we need this still?
	            'splunk.print': 'shim/splunk.print',
	            'splunk.session': 'shim/splunk.session',
	            'splunk.jquery.csrf$': 'shim/splunk.jquery.csrf',

	            'select2/select2$': 'shim/select2',

	            'splunkjs/splunk$': 'shim/splunkjs'
	        }
	    }
	}

	/* WEBPACK VAR INJECTION */}.call(exports, "/index.js"))

/***/ }),

/***/ 10:
/***/ (function(module, exports) {

	// shim for using process in browser
	var process = module.exports = {};

	// cached from whatever global is present so that test runners that stub it
	// don't break things.  But we need to wrap it in a try catch in case it is
	// wrapped in strict mode code which doesn't define any globals.  It's inside a
	// function because try/catches deoptimize in certain engines.

	var cachedSetTimeout;
	var cachedClearTimeout;

	function defaultSetTimout() {
	    throw new Error('setTimeout has not been defined');
	}
	function defaultClearTimeout () {
	    throw new Error('clearTimeout has not been defined');
	}
	(function () {
	    try {
	        if (typeof setTimeout === 'function') {
	            cachedSetTimeout = setTimeout;
	        } else {
	            cachedSetTimeout = defaultSetTimout;
	        }
	    } catch (e) {
	        cachedSetTimeout = defaultSetTimout;
	    }
	    try {
	        if (typeof clearTimeout === 'function') {
	            cachedClearTimeout = clearTimeout;
	        } else {
	            cachedClearTimeout = defaultClearTimeout;
	        }
	    } catch (e) {
	        cachedClearTimeout = defaultClearTimeout;
	    }
	} ())
	function runTimeout(fun) {
	    if (cachedSetTimeout === setTimeout) {
	        //normal enviroments in sane situations
	        return setTimeout(fun, 0);
	    }
	    // if setTimeout wasn't available but was latter defined
	    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
	        cachedSetTimeout = setTimeout;
	        return setTimeout(fun, 0);
	    }
	    try {
	        // when when somebody has screwed with setTimeout but no I.E. maddness
	        return cachedSetTimeout(fun, 0);
	    } catch(e){
	        try {
	            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
	            return cachedSetTimeout.call(null, fun, 0);
	        } catch(e){
	            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
	            return cachedSetTimeout.call(this, fun, 0);
	        }
	    }


	}
	function runClearTimeout(marker) {
	    if (cachedClearTimeout === clearTimeout) {
	        //normal enviroments in sane situations
	        return clearTimeout(marker);
	    }
	    // if clearTimeout wasn't available but was latter defined
	    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
	        cachedClearTimeout = clearTimeout;
	        return clearTimeout(marker);
	    }
	    try {
	        // when when somebody has screwed with setTimeout but no I.E. maddness
	        return cachedClearTimeout(marker);
	    } catch (e){
	        try {
	            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
	            return cachedClearTimeout.call(null, marker);
	        } catch (e){
	            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
	            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
	            return cachedClearTimeout.call(this, marker);
	        }
	    }



	}
	var queue = [];
	var draining = false;
	var currentQueue;
	var queueIndex = -1;

	function cleanUpNextTick() {
	    if (!draining || !currentQueue) {
	        return;
	    }
	    draining = false;
	    if (currentQueue.length) {
	        queue = currentQueue.concat(queue);
	    } else {
	        queueIndex = -1;
	    }
	    if (queue.length) {
	        drainQueue();
	    }
	}

	function drainQueue() {
	    if (draining) {
	        return;
	    }
	    var timeout = runTimeout(cleanUpNextTick);
	    draining = true;

	    var len = queue.length;
	    while(len) {
	        currentQueue = queue;
	        queue = [];
	        while (++queueIndex < len) {
	            if (currentQueue) {
	                currentQueue[queueIndex].run();
	            }
	        }
	        queueIndex = -1;
	        len = queue.length;
	    }
	    currentQueue = null;
	    draining = false;
	    runClearTimeout(timeout);
	}

	process.nextTick = function (fun) {
	    var args = new Array(arguments.length - 1);
	    if (arguments.length > 1) {
	        for (var i = 1; i < arguments.length; i++) {
	            args[i - 1] = arguments[i];
	        }
	    }
	    queue.push(new Item(fun, args));
	    if (queue.length === 1 && !draining) {
	        runTimeout(drainQueue);
	    }
	};

	// v8 likes predictible objects
	function Item(fun, array) {
	    this.fun = fun;
	    this.array = array;
	}
	Item.prototype.run = function () {
	    this.fun.apply(null, this.array);
	};
	process.title = 'browser';
	process.browser = true;
	process.env = {};
	process.argv = [];
	process.version = ''; // empty string to avoid regexp issues
	process.versions = {};

	function noop() {}

	process.on = noop;
	process.addListener = noop;
	process.once = noop;
	process.off = noop;
	process.removeListener = noop;
	process.removeAllListeners = noop;
	process.emit = noop;
	process.prependListener = noop;
	process.prependOnceListener = noop;

	process.listeners = function (name) { return [] }

	process.binding = function (name) {
	    throw new Error('process.binding is not supported');
	};

	process.cwd = function () { return '/' };
	process.chdir = function (dir) {
	    throw new Error('process.chdir is not supported');
	};
	process.umask = function() { return 0; };


/***/ }),

/***/ 11:
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(12);
	__webpack_require__(61);
	__webpack_require__(62);
	__webpack_require__(63);
	__webpack_require__(64);
	__webpack_require__(66);
	__webpack_require__(69);
	__webpack_require__(70);
	__webpack_require__(71);
	__webpack_require__(72);
	__webpack_require__(73);
	__webpack_require__(74);
	__webpack_require__(75);
	__webpack_require__(76);
	__webpack_require__(77);
	__webpack_require__(79);
	__webpack_require__(81);
	__webpack_require__(83);
	__webpack_require__(85);
	__webpack_require__(88);
	__webpack_require__(89);
	__webpack_require__(90);
	__webpack_require__(94);
	__webpack_require__(96);
	__webpack_require__(98);
	__webpack_require__(101);
	__webpack_require__(102);
	__webpack_require__(103);
	__webpack_require__(104);
	__webpack_require__(106);
	__webpack_require__(107);
	__webpack_require__(108);
	__webpack_require__(109);
	__webpack_require__(110);
	__webpack_require__(111);
	__webpack_require__(112);
	__webpack_require__(114);
	__webpack_require__(115);
	__webpack_require__(116);
	__webpack_require__(118);
	__webpack_require__(119);
	__webpack_require__(120);
	__webpack_require__(122);
	__webpack_require__(124);
	__webpack_require__(125);
	__webpack_require__(126);
	__webpack_require__(127);
	__webpack_require__(128);
	__webpack_require__(129);
	__webpack_require__(130);
	__webpack_require__(131);
	__webpack_require__(132);
	__webpack_require__(133);
	__webpack_require__(134);
	__webpack_require__(135);
	__webpack_require__(136);
	__webpack_require__(141);
	__webpack_require__(142);
	__webpack_require__(146);
	__webpack_require__(147);
	__webpack_require__(148);
	__webpack_require__(149);
	__webpack_require__(151);
	__webpack_require__(152);
	__webpack_require__(153);
	__webpack_require__(154);
	__webpack_require__(155);
	__webpack_require__(156);
	__webpack_require__(157);
	__webpack_require__(158);
	__webpack_require__(159);
	__webpack_require__(160);
	__webpack_require__(161);
	__webpack_require__(162);
	__webpack_require__(163);
	__webpack_require__(164);
	__webpack_require__(165);
	__webpack_require__(167);
	__webpack_require__(168);
	__webpack_require__(170);
	__webpack_require__(171);
	__webpack_require__(177);
	__webpack_require__(178);
	__webpack_require__(180);
	__webpack_require__(181);
	__webpack_require__(182);
	__webpack_require__(186);
	__webpack_require__(187);
	__webpack_require__(188);
	__webpack_require__(189);
	__webpack_require__(190);
	__webpack_require__(192);
	__webpack_require__(193);
	__webpack_require__(194);
	__webpack_require__(195);
	__webpack_require__(198);
	__webpack_require__(200);
	__webpack_require__(201);
	__webpack_require__(202);
	__webpack_require__(204);
	__webpack_require__(206);
	__webpack_require__(208);
	__webpack_require__(209);
	__webpack_require__(210);
	__webpack_require__(212);
	__webpack_require__(213);
	__webpack_require__(214);
	__webpack_require__(215);
	__webpack_require__(225);
	__webpack_require__(229);
	__webpack_require__(230);
	__webpack_require__(232);
	__webpack_require__(233);
	__webpack_require__(237);
	__webpack_require__(238);
	__webpack_require__(240);
	__webpack_require__(241);
	__webpack_require__(242);
	__webpack_require__(243);
	__webpack_require__(244);
	__webpack_require__(245);
	__webpack_require__(246);
	__webpack_require__(247);
	__webpack_require__(248);
	__webpack_require__(249);
	__webpack_require__(250);
	__webpack_require__(251);
	__webpack_require__(252);
	__webpack_require__(253);
	__webpack_require__(254);
	__webpack_require__(255);
	__webpack_require__(256);
	__webpack_require__(257);
	__webpack_require__(258);
	__webpack_require__(260);
	__webpack_require__(261);
	__webpack_require__(262);
	module.exports = __webpack_require__(18);


/***/ }),

/***/ 12:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// ECMAScript 6 symbols shim
	var global = __webpack_require__(13);
	var has = __webpack_require__(14);
	var DESCRIPTORS = __webpack_require__(15);
	var $export = __webpack_require__(17);
	var redefine = __webpack_require__(27);
	var META = __webpack_require__(31).KEY;
	var $fails = __webpack_require__(16);
	var shared = __webpack_require__(32);
	var setToStringTag = __webpack_require__(33);
	var uid = __webpack_require__(28);
	var wks = __webpack_require__(34);
	var wksExt = __webpack_require__(35);
	var wksDefine = __webpack_require__(36);
	var keyOf = __webpack_require__(38);
	var enumKeys = __webpack_require__(51);
	var isArray = __webpack_require__(54);
	var anObject = __webpack_require__(21);
	var toIObject = __webpack_require__(41);
	var toPrimitive = __webpack_require__(25);
	var createDesc = __webpack_require__(26);
	var _create = __webpack_require__(55);
	var gOPNExt = __webpack_require__(58);
	var $GOPD = __webpack_require__(60);
	var $DP = __webpack_require__(20);
	var $keys = __webpack_require__(39);
	var gOPD = $GOPD.f;
	var dP = $DP.f;
	var gOPN = gOPNExt.f;
	var $Symbol = global.Symbol;
	var $JSON = global.JSON;
	var _stringify = $JSON && $JSON.stringify;
	var PROTOTYPE = 'prototype';
	var HIDDEN = wks('_hidden');
	var TO_PRIMITIVE = wks('toPrimitive');
	var isEnum = {}.propertyIsEnumerable;
	var SymbolRegistry = shared('symbol-registry');
	var AllSymbols = shared('symbols');
	var OPSymbols = shared('op-symbols');
	var ObjectProto = Object[PROTOTYPE];
	var USE_NATIVE = typeof $Symbol == 'function';
	var QObject = global.QObject;
	// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
	var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;

	// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
	var setSymbolDesc = DESCRIPTORS && $fails(function () {
	  return _create(dP({}, 'a', {
	    get: function () { return dP(this, 'a', { value: 7 }).a; }
	  })).a != 7;
	}) ? function (it, key, D) {
	  var protoDesc = gOPD(ObjectProto, key);
	  if (protoDesc) delete ObjectProto[key];
	  dP(it, key, D);
	  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
	} : dP;

	var wrap = function (tag) {
	  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
	  sym._k = tag;
	  return sym;
	};

	var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
	  return typeof it == 'symbol';
	} : function (it) {
	  return it instanceof $Symbol;
	};

	var $defineProperty = function defineProperty(it, key, D) {
	  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
	  anObject(it);
	  key = toPrimitive(key, true);
	  anObject(D);
	  if (has(AllSymbols, key)) {
	    if (!D.enumerable) {
	      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
	      it[HIDDEN][key] = true;
	    } else {
	      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
	      D = _create(D, { enumerable: createDesc(0, false) });
	    } return setSymbolDesc(it, key, D);
	  } return dP(it, key, D);
	};
	var $defineProperties = function defineProperties(it, P) {
	  anObject(it);
	  var keys = enumKeys(P = toIObject(P));
	  var i = 0;
	  var l = keys.length;
	  var key;
	  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
	  return it;
	};
	var $create = function create(it, P) {
	  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
	};
	var $propertyIsEnumerable = function propertyIsEnumerable(key) {
	  var E = isEnum.call(this, key = toPrimitive(key, true));
	  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
	  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
	};
	var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
	  it = toIObject(it);
	  key = toPrimitive(key, true);
	  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
	  var D = gOPD(it, key);
	  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
	  return D;
	};
	var $getOwnPropertyNames = function getOwnPropertyNames(it) {
	  var names = gOPN(toIObject(it));
	  var result = [];
	  var i = 0;
	  var key;
	  while (names.length > i) {
	    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
	  } return result;
	};
	var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
	  var IS_OP = it === ObjectProto;
	  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
	  var result = [];
	  var i = 0;
	  var key;
	  while (names.length > i) {
	    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
	  } return result;
	};

	// 19.4.1.1 Symbol([description])
	if (!USE_NATIVE) {
	  $Symbol = function Symbol() {
	    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
	    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
	    var $set = function (value) {
	      if (this === ObjectProto) $set.call(OPSymbols, value);
	      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
	      setSymbolDesc(this, tag, createDesc(1, value));
	    };
	    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
	    return wrap(tag);
	  };
	  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
	    return this._k;
	  });

	  $GOPD.f = $getOwnPropertyDescriptor;
	  $DP.f = $defineProperty;
	  __webpack_require__(59).f = gOPNExt.f = $getOwnPropertyNames;
	  __webpack_require__(53).f = $propertyIsEnumerable;
	  __webpack_require__(52).f = $getOwnPropertySymbols;

	  if (DESCRIPTORS && !__webpack_require__(37)) {
	    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
	  }

	  wksExt.f = function (name) {
	    return wrap(wks(name));
	  };
	}

	$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });

	for (var es6Symbols = (
	  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
	  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
	).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);

	for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);

	$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
	  // 19.4.2.1 Symbol.for(key)
	  'for': function (key) {
	    return has(SymbolRegistry, key += '')
	      ? SymbolRegistry[key]
	      : SymbolRegistry[key] = $Symbol(key);
	  },
	  // 19.4.2.5 Symbol.keyFor(sym)
	  keyFor: function keyFor(key) {
	    if (isSymbol(key)) return keyOf(SymbolRegistry, key);
	    throw TypeError(key + ' is not a symbol!');
	  },
	  useSetter: function () { setter = true; },
	  useSimple: function () { setter = false; }
	});

	$export($export.S + $export.F * !USE_NATIVE, 'Object', {
	  // 19.1.2.2 Object.create(O [, Properties])
	  create: $create,
	  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
	  defineProperty: $defineProperty,
	  // 19.1.2.3 Object.defineProperties(O, Properties)
	  defineProperties: $defineProperties,
	  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
	  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
	  // 19.1.2.7 Object.getOwnPropertyNames(O)
	  getOwnPropertyNames: $getOwnPropertyNames,
	  // 19.1.2.8 Object.getOwnPropertySymbols(O)
	  getOwnPropertySymbols: $getOwnPropertySymbols
	});

	// 24.3.2 JSON.stringify(value [, replacer [, space]])
	$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
	  var S = $Symbol();
	  // MS Edge converts symbol values to JSON as {}
	  // WebKit converts symbol values to JSON as null
	  // V8 throws on boxed symbols
	  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
	})), 'JSON', {
	  stringify: function stringify(it) {
	    if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
	    var args = [it];
	    var i = 1;
	    var replacer, $replacer;
	    while (arguments.length > i) args.push(arguments[i++]);
	    replacer = args[1];
	    if (typeof replacer == 'function') $replacer = replacer;
	    if ($replacer || !isArray(replacer)) replacer = function (key, value) {
	      if ($replacer) value = $replacer.call(this, key, value);
	      if (!isSymbol(value)) return value;
	    };
	    args[1] = replacer;
	    return _stringify.apply($JSON, args);
	  }
	});

	// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
	$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(19)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
	// 19.4.3.5 Symbol.prototype[@@toStringTag]
	setToStringTag($Symbol, 'Symbol');
	// 20.2.1.9 Math[@@toStringTag]
	setToStringTag(Math, 'Math', true);
	// 24.3.3 JSON[@@toStringTag]
	setToStringTag(global.JSON, 'JSON', true);


/***/ }),

/***/ 13:
/***/ (function(module, exports) {

	// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
	var global = module.exports = typeof window != 'undefined' && window.Math == Math
	  ? window : typeof self != 'undefined' && self.Math == Math ? self
	  // eslint-disable-next-line no-new-func
	  : Function('return this')();
	if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),

/***/ 14:
/***/ (function(module, exports) {

	var hasOwnProperty = {}.hasOwnProperty;
	module.exports = function (it, key) {
	  return hasOwnProperty.call(it, key);
	};


/***/ }),

/***/ 15:
/***/ (function(module, exports, __webpack_require__) {

	// Thank's IE8 for his funny defineProperty
	module.exports = !__webpack_require__(16)(function () {
	  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
	});


/***/ }),

/***/ 16:
/***/ (function(module, exports) {

	module.exports = function (exec) {
	  try {
	    return !!exec();
	  } catch (e) {
	    return true;
	  }
	};


/***/ }),

/***/ 17:
/***/ (function(module, exports, __webpack_require__) {

	var global = __webpack_require__(13);
	var core = __webpack_require__(18);
	var hide = __webpack_require__(19);
	var redefine = __webpack_require__(27);
	var ctx = __webpack_require__(29);
	var PROTOTYPE = 'prototype';

	var $export = function (type, name, source) {
	  var IS_FORCED = type & $export.F;
	  var IS_GLOBAL = type & $export.G;
	  var IS_STATIC = type & $export.S;
	  var IS_PROTO = type & $export.P;
	  var IS_BIND = type & $export.B;
	  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
	  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
	  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
	  var key, own, out, exp;
	  if (IS_GLOBAL) source = name;
	  for (key in source) {
	    // contains in native
	    own = !IS_FORCED && target && target[key] !== undefined;
	    // export native or passed
	    out = (own ? target : source)[key];
	    // bind timers to global for call from export context
	    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
	    // extend global
	    if (target) redefine(target, key, out, type & $export.U);
	    // export
	    if (exports[key] != out) hide(exports, key, exp);
	    if (IS_PROTO && expProto[key] != out) expProto[key] = out;
	  }
	};
	global.core = core;
	// type bitmap
	$export.F = 1;   // forced
	$export.G = 2;   // global
	$export.S = 4;   // static
	$export.P = 8;   // proto
	$export.B = 16;  // bind
	$export.W = 32;  // wrap
	$export.U = 64;  // safe
	$export.R = 128; // real proto method for `library`
	module.exports = $export;


/***/ }),

/***/ 18:
/***/ (function(module, exports) {

	var core = module.exports = { version: '2.5.0' };
	if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),

/***/ 19:
/***/ (function(module, exports, __webpack_require__) {

	var dP = __webpack_require__(20);
	var createDesc = __webpack_require__(26);
	module.exports = __webpack_require__(15) ? function (object, key, value) {
	  return dP.f(object, key, createDesc(1, value));
	} : function (object, key, value) {
	  object[key] = value;
	  return object;
	};


/***/ }),

/***/ 20:
/***/ (function(module, exports, __webpack_require__) {

	var anObject = __webpack_require__(21);
	var IE8_DOM_DEFINE = __webpack_require__(23);
	var toPrimitive = __webpack_require__(25);
	var dP = Object.defineProperty;

	exports.f = __webpack_require__(15) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
	  anObject(O);
	  P = toPrimitive(P, true);
	  anObject(Attributes);
	  if (IE8_DOM_DEFINE) try {
	    return dP(O, P, Attributes);
	  } catch (e) { /* empty */ }
	  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
	  if ('value' in Attributes) O[P] = Attributes.value;
	  return O;
	};


/***/ }),

/***/ 21:
/***/ (function(module, exports, __webpack_require__) {

	var isObject = __webpack_require__(22);
	module.exports = function (it) {
	  if (!isObject(it)) throw TypeError(it + ' is not an object!');
	  return it;
	};


/***/ }),

/***/ 22:
/***/ (function(module, exports) {

	module.exports = function (it) {
	  return typeof it === 'object' ? it !== null : typeof it === 'function';
	};


/***/ }),

/***/ 23:
/***/ (function(module, exports, __webpack_require__) {

	module.exports = !__webpack_require__(15) && !__webpack_require__(16)(function () {
	  return Object.defineProperty(__webpack_require__(24)('div'), 'a', { get: function () { return 7; } }).a != 7;
	});


/***/ }),

/***/ 24:
/***/ (function(module, exports, __webpack_require__) {

	var isObject = __webpack_require__(22);
	var document = __webpack_require__(13).document;
	// typeof document.createElement is 'object' in old IE
	var is = isObject(document) && isObject(document.createElement);
	module.exports = function (it) {
	  return is ? document.createElement(it) : {};
	};


/***/ }),

/***/ 25:
/***/ (function(module, exports, __webpack_require__) {

	// 7.1.1 ToPrimitive(input [, PreferredType])
	var isObject = __webpack_require__(22);
	// instead of the ES6 spec version, we didn't implement @@toPrimitive case
	// and the second argument - flag - preferred type is a string
	module.exports = function (it, S) {
	  if (!isObject(it)) return it;
	  var fn, val;
	  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
	  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
	  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
	  throw TypeError("Can't convert object to primitive value");
	};


/***/ }),

/***/ 26:
/***/ (function(module, exports) {

	module.exports = function (bitmap, value) {
	  return {
	    enumerable: !(bitmap & 1),
	    configurable: !(bitmap & 2),
	    writable: !(bitmap & 4),
	    value: value
	  };
	};


/***/ }),

/***/ 27:
/***/ (function(module, exports, __webpack_require__) {

	var global = __webpack_require__(13);
	var hide = __webpack_require__(19);
	var has = __webpack_require__(14);
	var SRC = __webpack_require__(28)('src');
	var TO_STRING = 'toString';
	var $toString = Function[TO_STRING];
	var TPL = ('' + $toString).split(TO_STRING);

	__webpack_require__(18).inspectSource = function (it) {
	  return $toString.call(it);
	};

	(module.exports = function (O, key, val, safe) {
	  var isFunction = typeof val == 'function';
	  if (isFunction) has(val, 'name') || hide(val, 'name', key);
	  if (O[key] === val) return;
	  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
	  if (O === global) {
	    O[key] = val;
	  } else if (!safe) {
	    delete O[key];
	    hide(O, key, val);
	  } else if (O[key]) {
	    O[key] = val;
	  } else {
	    hide(O, key, val);
	  }
	// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
	})(Function.prototype, TO_STRING, function toString() {
	  return typeof this == 'function' && this[SRC] || $toString.call(this);
	});


/***/ }),

/***/ 28:
/***/ (function(module, exports) {

	var id = 0;
	var px = Math.random();
	module.exports = function (key) {
	  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
	};


/***/ }),

/***/ 29:
/***/ (function(module, exports, __webpack_require__) {

	// optional / simple context binding
	var aFunction = __webpack_require__(30);
	module.exports = function (fn, that, length) {
	  aFunction(fn);
	  if (that === undefined) return fn;
	  switch (length) {
	    case 1: return function (a) {
	      return fn.call(that, a);
	    };
	    case 2: return function (a, b) {
	      return fn.call(that, a, b);
	    };
	    case 3: return function (a, b, c) {
	      return fn.call(that, a, b, c);
	    };
	  }
	  return function (/* ...args */) {
	    return fn.apply(that, arguments);
	  };
	};


/***/ }),

/***/ 30:
/***/ (function(module, exports) {

	module.exports = function (it) {
	  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
	  return it;
	};


/***/ }),

/***/ 31:
/***/ (function(module, exports, __webpack_require__) {

	var META = __webpack_require__(28)('meta');
	var isObject = __webpack_require__(22);
	var has = __webpack_require__(14);
	var setDesc = __webpack_require__(20).f;
	var id = 0;
	var isExtensible = Object.isExtensible || function () {
	  return true;
	};
	var FREEZE = !__webpack_require__(16)(function () {
	  return isExtensible(Object.preventExtensions({}));
	});
	var setMeta = function (it) {
	  setDesc(it, META, { value: {
	    i: 'O' + ++id, // object ID
	    w: {}          // weak collections IDs
	  } });
	};
	var fastKey = function (it, create) {
	  // return primitive with prefix
	  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
	  if (!has(it, META)) {
	    // can't set metadata to uncaught frozen object
	    if (!isExtensible(it)) return 'F';
	    // not necessary to add metadata
	    if (!create) return 'E';
	    // add missing metadata
	    setMeta(it);
	  // return object ID
	  } return it[META].i;
	};
	var getWeak = function (it, create) {
	  if (!has(it, META)) {
	    // can't set metadata to uncaught frozen object
	    if (!isExtensible(it)) return true;
	    // not necessary to add metadata
	    if (!create) return false;
	    // add missing metadata
	    setMeta(it);
	  // return hash weak collections IDs
	  } return it[META].w;
	};
	// add metadata on freeze-family methods calling
	var onFreeze = function (it) {
	  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
	  return it;
	};
	var meta = module.exports = {
	  KEY: META,
	  NEED: false,
	  fastKey: fastKey,
	  getWeak: getWeak,
	  onFreeze: onFreeze
	};


/***/ }),

/***/ 32:
/***/ (function(module, exports, __webpack_require__) {

	var global = __webpack_require__(13);
	var SHARED = '__core-js_shared__';
	var store = global[SHARED] || (global[SHARED] = {});
	module.exports = function (key) {
	  return store[key] || (store[key] = {});
	};


/***/ }),

/***/ 33:
/***/ (function(module, exports, __webpack_require__) {

	var def = __webpack_require__(20).f;
	var has = __webpack_require__(14);
	var TAG = __webpack_require__(34)('toStringTag');

	module.exports = function (it, tag, stat) {
	  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
	};


/***/ }),

/***/ 34:
/***/ (function(module, exports, __webpack_require__) {

	var store = __webpack_require__(32)('wks');
	var uid = __webpack_require__(28);
	var Symbol = __webpack_require__(13).Symbol;
	var USE_SYMBOL = typeof Symbol == 'function';

	var $exports = module.exports = function (name) {
	  return store[name] || (store[name] =
	    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
	};

	$exports.store = store;


/***/ }),

/***/ 35:
/***/ (function(module, exports, __webpack_require__) {

	exports.f = __webpack_require__(34);


/***/ }),

/***/ 36:
/***/ (function(module, exports, __webpack_require__) {

	var global = __webpack_require__(13);
	var core = __webpack_require__(18);
	var LIBRARY = __webpack_require__(37);
	var wksExt = __webpack_require__(35);
	var defineProperty = __webpack_require__(20).f;
	module.exports = function (name) {
	  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
	  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
	};


/***/ }),

/***/ 37:
/***/ (function(module, exports) {

	module.exports = false;


/***/ }),

/***/ 38:
/***/ (function(module, exports, __webpack_require__) {

	var getKeys = __webpack_require__(39);
	var toIObject = __webpack_require__(41);
	module.exports = function (object, el) {
	  var O = toIObject(object);
	  var keys = getKeys(O);
	  var length = keys.length;
	  var index = 0;
	  var key;
	  while (length > index) if (O[key = keys[index++]] === el) return key;
	};


/***/ }),

/***/ 39:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.14 / 15.2.3.14 Object.keys(O)
	var $keys = __webpack_require__(40);
	var enumBugKeys = __webpack_require__(50);

	module.exports = Object.keys || function keys(O) {
	  return $keys(O, enumBugKeys);
	};


/***/ }),

/***/ 40:
/***/ (function(module, exports, __webpack_require__) {

	var has = __webpack_require__(14);
	var toIObject = __webpack_require__(41);
	var arrayIndexOf = __webpack_require__(45)(false);
	var IE_PROTO = __webpack_require__(49)('IE_PROTO');

	module.exports = function (object, names) {
	  var O = toIObject(object);
	  var i = 0;
	  var result = [];
	  var key;
	  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
	  // Don't enum bug & hidden keys
	  while (names.length > i) if (has(O, key = names[i++])) {
	    ~arrayIndexOf(result, key) || result.push(key);
	  }
	  return result;
	};


/***/ }),

/***/ 41:
/***/ (function(module, exports, __webpack_require__) {

	// to indexed object, toObject with fallback for non-array-like ES3 strings
	var IObject = __webpack_require__(42);
	var defined = __webpack_require__(44);
	module.exports = function (it) {
	  return IObject(defined(it));
	};


/***/ }),

/***/ 42:
/***/ (function(module, exports, __webpack_require__) {

	// fallback for non-array-like ES3 and non-enumerable old V8 strings
	var cof = __webpack_require__(43);
	// eslint-disable-next-line no-prototype-builtins
	module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
	  return cof(it) == 'String' ? it.split('') : Object(it);
	};


/***/ }),

/***/ 43:
/***/ (function(module, exports) {

	var toString = {}.toString;

	module.exports = function (it) {
	  return toString.call(it).slice(8, -1);
	};


/***/ }),

/***/ 44:
/***/ (function(module, exports) {

	// 7.2.1 RequireObjectCoercible(argument)
	module.exports = function (it) {
	  if (it == undefined) throw TypeError("Can't call method on  " + it);
	  return it;
	};


/***/ }),

/***/ 45:
/***/ (function(module, exports, __webpack_require__) {

	// false -> Array#indexOf
	// true  -> Array#includes
	var toIObject = __webpack_require__(41);
	var toLength = __webpack_require__(46);
	var toAbsoluteIndex = __webpack_require__(48);
	module.exports = function (IS_INCLUDES) {
	  return function ($this, el, fromIndex) {
	    var O = toIObject($this);
	    var length = toLength(O.length);
	    var index = toAbsoluteIndex(fromIndex, length);
	    var value;
	    // Array#includes uses SameValueZero equality algorithm
	    // eslint-disable-next-line no-self-compare
	    if (IS_INCLUDES && el != el) while (length > index) {
	      value = O[index++];
	      // eslint-disable-next-line no-self-compare
	      if (value != value) return true;
	    // Array#indexOf ignores holes, Array#includes - not
	    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
	      if (O[index] === el) return IS_INCLUDES || index || 0;
	    } return !IS_INCLUDES && -1;
	  };
	};


/***/ }),

/***/ 46:
/***/ (function(module, exports, __webpack_require__) {

	// 7.1.15 ToLength
	var toInteger = __webpack_require__(47);
	var min = Math.min;
	module.exports = function (it) {
	  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
	};


/***/ }),

/***/ 47:
/***/ (function(module, exports) {

	// 7.1.4 ToInteger
	var ceil = Math.ceil;
	var floor = Math.floor;
	module.exports = function (it) {
	  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
	};


/***/ }),

/***/ 48:
/***/ (function(module, exports, __webpack_require__) {

	var toInteger = __webpack_require__(47);
	var max = Math.max;
	var min = Math.min;
	module.exports = function (index, length) {
	  index = toInteger(index);
	  return index < 0 ? max(index + length, 0) : min(index, length);
	};


/***/ }),

/***/ 49:
/***/ (function(module, exports, __webpack_require__) {

	var shared = __webpack_require__(32)('keys');
	var uid = __webpack_require__(28);
	module.exports = function (key) {
	  return shared[key] || (shared[key] = uid(key));
	};


/***/ }),

/***/ 50:
/***/ (function(module, exports) {

	// IE 8- don't enum bug keys
	module.exports = (
	  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
	).split(',');


/***/ }),

/***/ 51:
/***/ (function(module, exports, __webpack_require__) {

	// all enumerable object keys, includes symbols
	var getKeys = __webpack_require__(39);
	var gOPS = __webpack_require__(52);
	var pIE = __webpack_require__(53);
	module.exports = function (it) {
	  var result = getKeys(it);
	  var getSymbols = gOPS.f;
	  if (getSymbols) {
	    var symbols = getSymbols(it);
	    var isEnum = pIE.f;
	    var i = 0;
	    var key;
	    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
	  } return result;
	};


/***/ }),

/***/ 52:
/***/ (function(module, exports) {

	exports.f = Object.getOwnPropertySymbols;


/***/ }),

/***/ 53:
/***/ (function(module, exports) {

	exports.f = {}.propertyIsEnumerable;


/***/ }),

/***/ 54:
/***/ (function(module, exports, __webpack_require__) {

	// 7.2.2 IsArray(argument)
	var cof = __webpack_require__(43);
	module.exports = Array.isArray || function isArray(arg) {
	  return cof(arg) == 'Array';
	};


/***/ }),

/***/ 55:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
	var anObject = __webpack_require__(21);
	var dPs = __webpack_require__(56);
	var enumBugKeys = __webpack_require__(50);
	var IE_PROTO = __webpack_require__(49)('IE_PROTO');
	var Empty = function () { /* empty */ };
	var PROTOTYPE = 'prototype';

	// Create object with fake `null` prototype: use iframe Object with cleared prototype
	var createDict = function () {
	  // Thrash, waste and sodomy: IE GC bug
	  var iframe = __webpack_require__(24)('iframe');
	  var i = enumBugKeys.length;
	  var lt = '<';
	  var gt = '>';
	  var iframeDocument;
	  iframe.style.display = 'none';
	  __webpack_require__(57).appendChild(iframe);
	  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
	  // createDict = iframe.contentWindow.Object;
	  // html.removeChild(iframe);
	  iframeDocument = iframe.contentWindow.document;
	  iframeDocument.open();
	  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
	  iframeDocument.close();
	  createDict = iframeDocument.F;
	  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
	  return createDict();
	};

	module.exports = Object.create || function create(O, Properties) {
	  var result;
	  if (O !== null) {
	    Empty[PROTOTYPE] = anObject(O);
	    result = new Empty();
	    Empty[PROTOTYPE] = null;
	    // add "__proto__" for Object.getPrototypeOf polyfill
	    result[IE_PROTO] = O;
	  } else result = createDict();
	  return Properties === undefined ? result : dPs(result, Properties);
	};


/***/ }),

/***/ 56:
/***/ (function(module, exports, __webpack_require__) {

	var dP = __webpack_require__(20);
	var anObject = __webpack_require__(21);
	var getKeys = __webpack_require__(39);

	module.exports = __webpack_require__(15) ? Object.defineProperties : function defineProperties(O, Properties) {
	  anObject(O);
	  var keys = getKeys(Properties);
	  var length = keys.length;
	  var i = 0;
	  var P;
	  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
	  return O;
	};


/***/ }),

/***/ 57:
/***/ (function(module, exports, __webpack_require__) {

	var document = __webpack_require__(13).document;
	module.exports = document && document.documentElement;


/***/ }),

/***/ 58:
/***/ (function(module, exports, __webpack_require__) {

	// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
	var toIObject = __webpack_require__(41);
	var gOPN = __webpack_require__(59).f;
	var toString = {}.toString;

	var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
	  ? Object.getOwnPropertyNames(window) : [];

	var getWindowNames = function (it) {
	  try {
	    return gOPN(it);
	  } catch (e) {
	    return windowNames.slice();
	  }
	};

	module.exports.f = function getOwnPropertyNames(it) {
	  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
	};


/***/ }),

/***/ 59:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
	var $keys = __webpack_require__(40);
	var hiddenKeys = __webpack_require__(50).concat('length', 'prototype');

	exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
	  return $keys(O, hiddenKeys);
	};


/***/ }),

/***/ 60:
/***/ (function(module, exports, __webpack_require__) {

	var pIE = __webpack_require__(53);
	var createDesc = __webpack_require__(26);
	var toIObject = __webpack_require__(41);
	var toPrimitive = __webpack_require__(25);
	var has = __webpack_require__(14);
	var IE8_DOM_DEFINE = __webpack_require__(23);
	var gOPD = Object.getOwnPropertyDescriptor;

	exports.f = __webpack_require__(15) ? gOPD : function getOwnPropertyDescriptor(O, P) {
	  O = toIObject(O);
	  P = toPrimitive(P, true);
	  if (IE8_DOM_DEFINE) try {
	    return gOPD(O, P);
	  } catch (e) { /* empty */ }
	  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
	};


/***/ }),

/***/ 61:
/***/ (function(module, exports, __webpack_require__) {

	var $export = __webpack_require__(17);
	// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
	$export($export.S, 'Object', { create: __webpack_require__(55) });


/***/ }),

/***/ 62:
/***/ (function(module, exports, __webpack_require__) {

	var $export = __webpack_require__(17);
	// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
	$export($export.S + $export.F * !__webpack_require__(15), 'Object', { defineProperty: __webpack_require__(20).f });


/***/ }),

/***/ 63:
/***/ (function(module, exports, __webpack_require__) {

	var $export = __webpack_require__(17);
	// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
	$export($export.S + $export.F * !__webpack_require__(15), 'Object', { defineProperties: __webpack_require__(56) });


/***/ }),

/***/ 64:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
	var toIObject = __webpack_require__(41);
	var $getOwnPropertyDescriptor = __webpack_require__(60).f;

	__webpack_require__(65)('getOwnPropertyDescriptor', function () {
	  return function getOwnPropertyDescriptor(it, key) {
	    return $getOwnPropertyDescriptor(toIObject(it), key);
	  };
	});


/***/ }),

/***/ 65:
/***/ (function(module, exports, __webpack_require__) {

	// most Object methods by ES6 should accept primitives
	var $export = __webpack_require__(17);
	var core = __webpack_require__(18);
	var fails = __webpack_require__(16);
	module.exports = function (KEY, exec) {
	  var fn = (core.Object || {})[KEY] || Object[KEY];
	  var exp = {};
	  exp[KEY] = exec(fn);
	  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
	};


/***/ }),

/***/ 66:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.9 Object.getPrototypeOf(O)
	var toObject = __webpack_require__(67);
	var $getPrototypeOf = __webpack_require__(68);

	__webpack_require__(65)('getPrototypeOf', function () {
	  return function getPrototypeOf(it) {
	    return $getPrototypeOf(toObject(it));
	  };
	});


/***/ }),

/***/ 67:
/***/ (function(module, exports, __webpack_require__) {

	// 7.1.13 ToObject(argument)
	var defined = __webpack_require__(44);
	module.exports = function (it) {
	  return Object(defined(it));
	};


/***/ }),

/***/ 68:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
	var has = __webpack_require__(14);
	var toObject = __webpack_require__(67);
	var IE_PROTO = __webpack_require__(49)('IE_PROTO');
	var ObjectProto = Object.prototype;

	module.exports = Object.getPrototypeOf || function (O) {
	  O = toObject(O);
	  if (has(O, IE_PROTO)) return O[IE_PROTO];
	  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
	    return O.constructor.prototype;
	  } return O instanceof Object ? ObjectProto : null;
	};


/***/ }),

/***/ 69:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.14 Object.keys(O)
	var toObject = __webpack_require__(67);
	var $keys = __webpack_require__(39);

	__webpack_require__(65)('keys', function () {
	  return function keys(it) {
	    return $keys(toObject(it));
	  };
	});


/***/ }),

/***/ 70:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.7 Object.getOwnPropertyNames(O)
	__webpack_require__(65)('getOwnPropertyNames', function () {
	  return __webpack_require__(58).f;
	});


/***/ }),

/***/ 71:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.5 Object.freeze(O)
	var isObject = __webpack_require__(22);
	var meta = __webpack_require__(31).onFreeze;

	__webpack_require__(65)('freeze', function ($freeze) {
	  return function freeze(it) {
	    return $freeze && isObject(it) ? $freeze(meta(it)) : it;
	  };
	});


/***/ }),

/***/ 72:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.17 Object.seal(O)
	var isObject = __webpack_require__(22);
	var meta = __webpack_require__(31).onFreeze;

	__webpack_require__(65)('seal', function ($seal) {
	  return function seal(it) {
	    return $seal && isObject(it) ? $seal(meta(it)) : it;
	  };
	});


/***/ }),

/***/ 73:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.15 Object.preventExtensions(O)
	var isObject = __webpack_require__(22);
	var meta = __webpack_require__(31).onFreeze;

	__webpack_require__(65)('preventExtensions', function ($preventExtensions) {
	  return function preventExtensions(it) {
	    return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;
	  };
	});


/***/ }),

/***/ 74:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.12 Object.isFrozen(O)
	var isObject = __webpack_require__(22);

	__webpack_require__(65)('isFrozen', function ($isFrozen) {
	  return function isFrozen(it) {
	    return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;
	  };
	});


/***/ }),

/***/ 75:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.13 Object.isSealed(O)
	var isObject = __webpack_require__(22);

	__webpack_require__(65)('isSealed', function ($isSealed) {
	  return function isSealed(it) {
	    return isObject(it) ? $isSealed ? $isSealed(it) : false : true;
	  };
	});


/***/ }),

/***/ 76:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.2.11 Object.isExtensible(O)
	var isObject = __webpack_require__(22);

	__webpack_require__(65)('isExtensible', function ($isExtensible) {
	  return function isExtensible(it) {
	    return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;
	  };
	});


/***/ }),

/***/ 77:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.3.1 Object.assign(target, source)
	var $export = __webpack_require__(17);

	$export($export.S + $export.F, 'Object', { assign: __webpack_require__(78) });


/***/ }),

/***/ 78:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// 19.1.2.1 Object.assign(target, source, ...)
	var getKeys = __webpack_require__(39);
	var gOPS = __webpack_require__(52);
	var pIE = __webpack_require__(53);
	var toObject = __webpack_require__(67);
	var IObject = __webpack_require__(42);
	var $assign = Object.assign;

	// should work with symbols and should have deterministic property order (V8 bug)
	module.exports = !$assign || __webpack_require__(16)(function () {
	  var A = {};
	  var B = {};
	  // eslint-disable-next-line no-undef
	  var S = Symbol();
	  var K = 'abcdefghijklmnopqrst';
	  A[S] = 7;
	  K.split('').forEach(function (k) { B[k] = k; });
	  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
	}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
	  var T = toObject(target);
	  var aLen = arguments.length;
	  var index = 1;
	  var getSymbols = gOPS.f;
	  var isEnum = pIE.f;
	  while (aLen > index) {
	    var S = IObject(arguments[index++]);
	    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);
	    var length = keys.length;
	    var j = 0;
	    var key;
	    while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];
	  } return T;
	} : $assign;


/***/ }),

/***/ 79:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.3.10 Object.is(value1, value2)
	var $export = __webpack_require__(17);
	$export($export.S, 'Object', { is: __webpack_require__(80) });


/***/ }),

/***/ 80:
/***/ (function(module, exports) {

	// 7.2.9 SameValue(x, y)
	module.exports = Object.is || function is(x, y) {
	  // eslint-disable-next-line no-self-compare
	  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
	};


/***/ }),

/***/ 81:
/***/ (function(module, exports, __webpack_require__) {

	// 19.1.3.19 Object.setPrototypeOf(O, proto)
	var $export = __webpack_require__(17);
	$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(82).set });


/***/ }),

/***/ 82:
/***/ (function(module, exports, __webpack_require__) {

	// Works with __proto__ only. Old v8 can't work with null proto objects.
	/* eslint-disable no-proto */
	var isObject = __webpack_require__(22);
	var anObject = __webpack_require__(21);
	var check = function (O, proto) {
	  anObject(O);
	  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
	};
	module.exports = {
	  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
	    function (test, buggy, set) {
	      try {
	        set = __webpack_require__(29)(Function.call, __webpack_require__(60).f(Object.prototype, '__proto__').set, 2);
	        set(test, []);
	        buggy = !(test instanceof Array);
	      } catch (e) { buggy = true; }
	      return function setPrototypeOf(O, proto) {
	        check(O, proto);
	        if (buggy) O.__proto__ = proto;
	        else set(O, proto);
	        return O;
	      };
	    }({}, false) : undefined),
	  check: check
	};


/***/ }),

/***/ 83:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// 19.1.3.6 Object.prototype.toString()
	var classof = __webpack_require__(84);
	var test = {};
	test[__webpack_require__(34)('toStringTag')] = 'z';
	if (test + '' != '[object z]') {
	  __webpack_require__(27)(Object.prototype, 'toString', function toString() {
	    return '[object ' + classof(this) + ']';
	  }, true);
	}


/***/ }),

/***/ 84:
/***/ (function(module, exports, __webpack_require__) {

	// getting tag from 19.1.3.6 Object.prototype.toString()
	var cof = __webpack_require__(43);
	var TAG = __webpack_require__(34)('toStringTag');
	// ES3 wrong here
	var ARG = cof(function () { return arguments; }()) == 'Arguments';

	// fallback for IE11 Script Access Denied error
	var tryGet = function (it, key) {
	  try {
	    return it[key];
	  } catch (e) { /* empty */ }
	};

	module.exports = function (it) {
	  var O, T, B;
	  return it === undefined ? 'Undefined' : it === null ? 'Null'
	    // @@toStringTag case
	    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
	    // builtinTag case
	    : ARG ? cof(O)
	    // ES3 arguments fallback
	    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
	};


/***/ }),

/***/ 85:
/***/ (function(module, exports, __webpack_require__) {

	// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)
	var $export = __webpack_require__(17);

	$export($export.P, 'Function', { bind: __webpack_require__(86) });


/***/ }),

/***/ 86:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var aFunction = __webpack_require__(30);
	var isObject = __webpack_require__(22);
	var invoke = __webpack_require__(87);
	var arraySlice = [].slice;
	var factories = {};

	var construct = function (F, len, args) {
	  if (!(len in factories)) {
	    for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';
	    // eslint-disable-next-line no-new-func
	    factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
	  } return factories[len](F, args);
	};

	module.exports = Function.bind || function bind(that /* , ...args */) {
	  var fn = aFunction(this);
	  var partArgs = arraySlice.call(arguments, 1);
	  var bound = function (/* args... */) {
	    var args = partArgs.concat(arraySlice.call(arguments));
	    return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
	  };
	  if (isObject(fn.prototype)) bound.prototype = fn.prototype;
	  return bound;
	};


/***/ }),

/***/ 87:
/***/ (function(module, exports) {

	// fast apply, http://jsperf.lnkit.com/fast-apply/5
	module.exports = function (fn, args, that) {
	  var un = that === undefined;
	  switch (args.length) {
	    case 0: return un ? fn()
	                      : fn.call(that);
	    case 1: return un ? fn(args[0])
	                      : fn.call(that, args[0]);
	    case 2: return un ? fn(args[0], args[1])
	                      : fn.call(that, args[0], args[1]);
	    case 3: return un ? fn(args[0], args[1], args[2])
	                      : fn.call(that, args[0], args[1], args[2]);
	    case 4: return un ? fn(args[0], args[1], args[2], args[3])
	                      : fn.call(that, args[0], args[1], args[2], args[3]);
	  } return fn.apply(that, args);
	};


/***/ }),

/***/ 88:
/***/ (function(module, exports, __webpack_require__) {

	var dP = __webpack_require__(20).f;
	var FProto = Function.prototype;
	var nameRE = /^\s*function ([^ (]*)/;
	var NAME = 'name';

	// 19.2.4.2 name
	NAME in FProto || __webpack_require__(15) && dP(FProto, NAME, {
	  configurable: true,
	  get: function () {
	    try {
	      return ('' + this).match(nameRE)[1];
	    } catch (e) {
	      return '';
	    }
	  }
	});


/***/ }),

/***/ 89:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var isObject = __webpack_require__(22);
	var getPrototypeOf = __webpack_require__(68);
	var HAS_INSTANCE = __webpack_require__(34)('hasInstance');
	var FunctionProto = Function.prototype;
	// 19.2.3.6 Function.prototype[@@hasInstance](V)
	if (!(HAS_INSTANCE in FunctionProto)) __webpack_require__(20).f(FunctionProto, HAS_INSTANCE, { value: function (O) {
	  if (typeof this != 'function' || !isObject(O)) return false;
	  if (!isObject(this.prototype)) return O instanceof this;
	  // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
	  while (O = getPrototypeOf(O)) if (this.prototype === O) return true;
	  return false;
	} });


/***/ }),

/***/ 90:
/***/ (function(module, exports, __webpack_require__) {

	var $export = __webpack_require__(17);
	var $parseInt = __webpack_require__(91);
	// 18.2.5 parseInt(string, radix)
	$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });


/***/ }),

/***/ 91:
/***/ (function(module, exports, __webpack_require__) {

	var $parseInt = __webpack_require__(13).parseInt;
	var $trim = __webpack_require__(92).trim;
	var ws = __webpack_require__(93);
	var hex = /^[-+]?0[xX]/;

	module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {
	  var string = $trim(String(str), 3);
	  return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
	} : $parseInt;


/***/ }),

/***/ 92:
/***/ (function(module, exports, __webpack_require__) {

	var $export = __webpack_require__(17);
	var defined = __webpack_require__(44);
	var fails = __webpack_require__(16);
	var spaces = __webpack_require__(93);
	var space = '[' + spaces + ']';
	var non = '\u200b\u0085';
	var ltrim = RegExp('^' + space + space + '*');
	var rtrim = RegExp(space + space + '*$');

	var exporter = function (KEY, exec, ALIAS) {
	  var exp = {};
	  var FORCE = fails(function () {
	    return !!spaces[KEY]() || non[KEY]() != non;
	  });
	  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
	  if (ALIAS) exp[ALIAS] = fn;
	  $export($export.P + $export.F * FORCE, 'String', exp);
	};

	// 1 -> String#trimLeft
	// 2 -> String#trimRight
	// 3 -> String#trim
	var trim = exporter.trim = function (string, TYPE) {
	  string = String(defined(string));
	  if (TYPE & 1) string = string.replace(ltrim, '');
	  if (TYPE & 2) string = string.replace(rtrim, '');
	  return string;
	};

	module.exports = exporter;


/***/ }),

/***/ 93:
/***/ (function(module, exports) {

	module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
	  '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';


/***/ }),

/***/ 94:
/***/ (function(module, exports, __webpack_require__) {

	var $export = __webpack_require__(17);
	var $parseFloat = __webpack_require__(95);
	// 18.2.4 parseFloat(string)
	$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });


/***/ }),

/***/ 95:
/***/ (function(module, exports, __webpack_require__) {

	var $parseFloat = __webpack_require__(13).parseFloat;
	var $trim = __webpack_require__(92).trim;

	module.exports = 1 / $parseFloat(__webpack_require__(93) + '-0') !== -Infinity ? function parseFloat(str) {
	  var string = $trim(String(str), 3);
	  var result = $parseFloat(string);
	  return result === 0 && string.charAt(0) == '-' ? -0 : result;
	} : $parseFloat;


/***/ }),

/***/ 96:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var global = __webpack_require__(13);
	var has = __webpack_require__(14);
	var cof = __webpack_require__(43);
	var inheritIfRequired = __webpack_require__(97);
	var toPrimitive = __webpack_require__(25);
	var fails = __webpack_require__(16);
	var gOPN = __webpack_require__(59).f;
	var gOPD = __webpack_require__(60).f;
	var dP = __webpack_require__(20).f;
	var $trim = __webpack_require__(92).trim;
	var NUMBER = 'Number';
	var $Number = global[NUMBER];
	var Base = $Number;
	var proto = $Number.prototype;
	// Opera ~12 has broken Object#toString
	var BROKEN_COF = cof(__webpack_require__(55)(proto)) == NUMBER;
	var TRIM = 'trim' in String.prototype;

	// 7.1.3 ToNumber(argument)
	var toNumber = function (argument) {
	  var it = toPrimitive(argument, false);
	  if (typeof it == 'string' && it.length > 2) {
	    it = TRIM ? it.trim() : $trim(it, 3);
	    var first = it.charCodeAt(0);
	    var third, radix, maxCode;
	    if (first === 43 || first === 45) {
	      third = it.charCodeAt(2);
	      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
	    } else if (first === 48) {
	      switch (it.charCodeAt(1)) {
	        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i
	        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i
	        default: return +it;
	      }
	      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {
	        code = digits.charCodeAt(i);
	        // parseInt parses a string to a first unavailable symbol
	        // but ToNumber should return NaN if a string contains unavailable symbols
	        if (code < 48 || code > maxCode) return NaN;
	      } return parseInt(digits, radix);
	    }
	  } return +it;
	};

	if (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {
	  $Number = function Number(value) {
	    var it = arguments.length < 1 ? 0 : value;
	    var that = this;
	    return that instanceof $Number
	      // check on 1..constructor(foo) case
	      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)
	        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);
	  };
	  for (var keys = __webpack_require__(15) ? gOPN(Base) : (
	    // ES3:
	    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
	    // ES6 (in case, if modules with ES6 Number statics required before):
	    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
	    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'
	  ).split(','), j = 0, key; keys.length > j; j++) {
	    if (has(Base, key = keys[j]) && !has($Number, key)) {
	      dP($Number, key, gOPD(Base, key));
	    }
	  }
	  $Number.prototype = proto;
	  proto.constructor = $Number;
	  __webpack_require__(27)(global, NUMBER, $Number);
	}


/***/ }),

/***/ 97:
/***/ (function(module, exports, __webpack_require__) {

	var isObject = __webpack_require__(22);
	var setPrototypeOf = __webpack_require__(82).set;
	module.exports = function (that, target, C) {
	  var S = target.constructor;
	  var P;
	  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
	    setPrototypeOf(that, P);
	  } return that;
	};


/***/ }),

/***/ 98:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var toInteger = __webpack_require__(47);
	var aNumberValue = __webpack_require__(99);
	var repeat = __webpack_require__(100);
	var $toFixed = 1.0.toFixed;
	var floor = Math.floor;
	var data = [0, 0, 0, 0, 0, 0];
	var ERROR = 'Number.toFixed: incorrect invocation!';
	var ZERO = '0';

	var multiply = function (n, c) {
	  var i = -1;
	  var c2 = c;
	  while (++i < 6) {
	    c2 += n * data[i];
	    data[i] = c2 % 1e7;
	    c2 = floor(c2 / 1e7);
	  }
	};
	var divide = function (n) {
	  var i = 6;
	  var c = 0;
	  while (--i >= 0) {
	    c += data[i];
	    data[i] = floor(c / n);
	    c = (c % n) * 1e7;
	  }
	};
	var numToString = function () {
	  var i = 6;
	  var s = '';
	  while (--i >= 0) {
	    if (s !== '' || i === 0 || data[i] !== 0) {
	      var t = String(data[i]);
	      s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;
	    }
	  } return s;
	};
	var pow = function (x, n, acc) {
	  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
	};
	var log = function (x) {
	  var n = 0;
	  var x2 = x;
	  while (x2 >= 4096) {
	    n += 12;
	    x2 /= 4096;
	  }
	  while (x2 >= 2) {
	    n += 1;
	    x2 /= 2;
	  } return n;
	};

	$export($export.P + $export.F * (!!$toFixed && (
	  0.00008.toFixed(3) !== '0.000' ||
	  0.9.toFixed(0) !== '1' ||
	  1.255.toFixed(2) !== '1.25' ||
	  1000000000000000128.0.toFixed(0) !== '1000000000000000128'
	) || !__webpack_require__(16)(function () {
	  // V8 ~ Android 4.3-
	  $toFixed.call({});
	})), 'Number', {
	  toFixed: function toFixed(fractionDigits) {
	    var x = aNumberValue(this, ERROR);
	    var f = toInteger(fractionDigits);
	    var s = '';
	    var m = ZERO;
	    var e, z, j, k;
	    if (f < 0 || f > 20) throw RangeError(ERROR);
	    // eslint-disable-next-line no-self-compare
	    if (x != x) return 'NaN';
	    if (x <= -1e21 || x >= 1e21) return String(x);
	    if (x < 0) {
	      s = '-';
	      x = -x;
	    }
	    if (x > 1e-21) {
	      e = log(x * pow(2, 69, 1)) - 69;
	      z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);
	      z *= 0x10000000000000;
	      e = 52 - e;
	      if (e > 0) {
	        multiply(0, z);
	        j = f;
	        while (j >= 7) {
	          multiply(1e7, 0);
	          j -= 7;
	        }
	        multiply(pow(10, j, 1), 0);
	        j = e - 1;
	        while (j >= 23) {
	          divide(1 << 23);
	          j -= 23;
	        }
	        divide(1 << j);
	        multiply(1, 1);
	        divide(2);
	        m = numToString();
	      } else {
	        multiply(0, z);
	        multiply(1 << -e, 0);
	        m = numToString() + repeat.call(ZERO, f);
	      }
	    }
	    if (f > 0) {
	      k = m.length;
	      m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));
	    } else {
	      m = s + m;
	    } return m;
	  }
	});


/***/ }),

/***/ 99:
/***/ (function(module, exports, __webpack_require__) {

	var cof = __webpack_require__(43);
	module.exports = function (it, msg) {
	  if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);
	  return +it;
	};


/***/ }),

/***/ 100:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var toInteger = __webpack_require__(47);
	var defined = __webpack_require__(44);

	module.exports = function repeat(count) {
	  var str = String(defined(this));
	  var res = '';
	  var n = toInteger(count);
	  if (n < 0 || n == Infinity) throw RangeError("Count can't be negative");
	  for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;
	  return res;
	};


/***/ }),

/***/ 101:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var $fails = __webpack_require__(16);
	var aNumberValue = __webpack_require__(99);
	var $toPrecision = 1.0.toPrecision;

	$export($export.P + $export.F * ($fails(function () {
	  // IE7-
	  return $toPrecision.call(1, undefined) !== '1';
	}) || !$fails(function () {
	  // V8 ~ Android 4.3-
	  $toPrecision.call({});
	})), 'Number', {
	  toPrecision: function toPrecision(precision) {
	    var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');
	    return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);
	  }
	});


/***/ }),

/***/ 102:
/***/ (function(module, exports, __webpack_require__) {

	// 20.1.2.1 Number.EPSILON
	var $export = __webpack_require__(17);

	$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });


/***/ }),

/***/ 103:
/***/ (function(module, exports, __webpack_require__) {

	// 20.1.2.2 Number.isFinite(number)
	var $export = __webpack_require__(17);
	var _isFinite = __webpack_require__(13).isFinite;

	$export($export.S, 'Number', {
	  isFinite: function isFinite(it) {
	    return typeof it == 'number' && _isFinite(it);
	  }
	});


/***/ }),

/***/ 104:
/***/ (function(module, exports, __webpack_require__) {

	// 20.1.2.3 Number.isInteger(number)
	var $export = __webpack_require__(17);

	$export($export.S, 'Number', { isInteger: __webpack_require__(105) });


/***/ }),

/***/ 105:
/***/ (function(module, exports, __webpack_require__) {

	// 20.1.2.3 Number.isInteger(number)
	var isObject = __webpack_require__(22);
	var floor = Math.floor;
	module.exports = function isInteger(it) {
	  return !isObject(it) && isFinite(it) && floor(it) === it;
	};


/***/ }),

/***/ 106:
/***/ (function(module, exports, __webpack_require__) {

	// 20.1.2.4 Number.isNaN(number)
	var $export = __webpack_require__(17);

	$export($export.S, 'Number', {
	  isNaN: function isNaN(number) {
	    // eslint-disable-next-line no-self-compare
	    return number != number;
	  }
	});


/***/ }),

/***/ 107:
/***/ (function(module, exports, __webpack_require__) {

	// 20.1.2.5 Number.isSafeInteger(number)
	var $export = __webpack_require__(17);
	var isInteger = __webpack_require__(105);
	var abs = Math.abs;

	$export($export.S, 'Number', {
	  isSafeInteger: function isSafeInteger(number) {
	    return isInteger(number) && abs(number) <= 0x1fffffffffffff;
	  }
	});


/***/ }),

/***/ 108:
/***/ (function(module, exports, __webpack_require__) {

	// 20.1.2.6 Number.MAX_SAFE_INTEGER
	var $export = __webpack_require__(17);

	$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });


/***/ }),

/***/ 109:
/***/ (function(module, exports, __webpack_require__) {

	// 20.1.2.10 Number.MIN_SAFE_INTEGER
	var $export = __webpack_require__(17);

	$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });


/***/ }),

/***/ 110:
/***/ (function(module, exports, __webpack_require__) {

	var $export = __webpack_require__(17);
	var $parseFloat = __webpack_require__(95);
	// 20.1.2.12 Number.parseFloat(string)
	$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });


/***/ }),

/***/ 111:
/***/ (function(module, exports, __webpack_require__) {

	var $export = __webpack_require__(17);
	var $parseInt = __webpack_require__(91);
	// 20.1.2.13 Number.parseInt(string, radix)
	$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });


/***/ }),

/***/ 112:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.3 Math.acosh(x)
	var $export = __webpack_require__(17);
	var log1p = __webpack_require__(113);
	var sqrt = Math.sqrt;
	var $acosh = Math.acosh;

	$export($export.S + $export.F * !($acosh
	  // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509
	  && Math.floor($acosh(Number.MAX_VALUE)) == 710
	  // Tor Browser bug: Math.acosh(Infinity) -> NaN
	  && $acosh(Infinity) == Infinity
	), 'Math', {
	  acosh: function acosh(x) {
	    return (x = +x) < 1 ? NaN : x > 94906265.62425156
	      ? Math.log(x) + Math.LN2
	      : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));
	  }
	});


/***/ }),

/***/ 113:
/***/ (function(module, exports) {

	// 20.2.2.20 Math.log1p(x)
	module.exports = Math.log1p || function log1p(x) {
	  return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);
	};


/***/ }),

/***/ 114:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.5 Math.asinh(x)
	var $export = __webpack_require__(17);
	var $asinh = Math.asinh;

	function asinh(x) {
	  return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));
	}

	// Tor Browser bug: Math.asinh(0) -> -0
	$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });


/***/ }),

/***/ 115:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.7 Math.atanh(x)
	var $export = __webpack_require__(17);
	var $atanh = Math.atanh;

	// Tor Browser bug: Math.atanh(-0) -> 0
	$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {
	  atanh: function atanh(x) {
	    return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;
	  }
	});


/***/ }),

/***/ 116:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.9 Math.cbrt(x)
	var $export = __webpack_require__(17);
	var sign = __webpack_require__(117);

	$export($export.S, 'Math', {
	  cbrt: function cbrt(x) {
	    return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);
	  }
	});


/***/ }),

/***/ 117:
/***/ (function(module, exports) {

	// 20.2.2.28 Math.sign(x)
	module.exports = Math.sign || function sign(x) {
	  // eslint-disable-next-line no-self-compare
	  return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
	};


/***/ }),

/***/ 118:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.11 Math.clz32(x)
	var $export = __webpack_require__(17);

	$export($export.S, 'Math', {
	  clz32: function clz32(x) {
	    return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;
	  }
	});


/***/ }),

/***/ 119:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.12 Math.cosh(x)
	var $export = __webpack_require__(17);
	var exp = Math.exp;

	$export($export.S, 'Math', {
	  cosh: function cosh(x) {
	    return (exp(x = +x) + exp(-x)) / 2;
	  }
	});


/***/ }),

/***/ 120:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.14 Math.expm1(x)
	var $export = __webpack_require__(17);
	var $expm1 = __webpack_require__(121);

	$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });


/***/ }),

/***/ 121:
/***/ (function(module, exports) {

	// 20.2.2.14 Math.expm1(x)
	var $expm1 = Math.expm1;
	module.exports = (!$expm1
	  // Old FF bug
	  || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168
	  // Tor Browser bug
	  || $expm1(-2e-17) != -2e-17
	) ? function expm1(x) {
	  return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;
	} : $expm1;


/***/ }),

/***/ 122:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.16 Math.fround(x)
	var $export = __webpack_require__(17);

	$export($export.S, 'Math', { fround: __webpack_require__(123) });


/***/ }),

/***/ 123:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.16 Math.fround(x)
	var sign = __webpack_require__(117);
	var pow = Math.pow;
	var EPSILON = pow(2, -52);
	var EPSILON32 = pow(2, -23);
	var MAX32 = pow(2, 127) * (2 - EPSILON32);
	var MIN32 = pow(2, -126);

	var roundTiesToEven = function (n) {
	  return n + 1 / EPSILON - 1 / EPSILON;
	};

	module.exports = Math.fround || function fround(x) {
	  var $abs = Math.abs(x);
	  var $sign = sign(x);
	  var a, result;
	  if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
	  a = (1 + EPSILON32 / EPSILON) * $abs;
	  result = a - (a - $abs);
	  // eslint-disable-next-line no-self-compare
	  if (result > MAX32 || result != result) return $sign * Infinity;
	  return $sign * result;
	};


/***/ }),

/***/ 124:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])
	var $export = __webpack_require__(17);
	var abs = Math.abs;

	$export($export.S, 'Math', {
	  hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars
	    var sum = 0;
	    var i = 0;
	    var aLen = arguments.length;
	    var larg = 0;
	    var arg, div;
	    while (i < aLen) {
	      arg = abs(arguments[i++]);
	      if (larg < arg) {
	        div = larg / arg;
	        sum = sum * div * div + 1;
	        larg = arg;
	      } else if (arg > 0) {
	        div = arg / larg;
	        sum += div * div;
	      } else sum += arg;
	    }
	    return larg === Infinity ? Infinity : larg * Math.sqrt(sum);
	  }
	});


/***/ }),

/***/ 125:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.18 Math.imul(x, y)
	var $export = __webpack_require__(17);
	var $imul = Math.imul;

	// some WebKit versions fails with big numbers, some has wrong arity
	$export($export.S + $export.F * __webpack_require__(16)(function () {
	  return $imul(0xffffffff, 5) != -5 || $imul.length != 2;
	}), 'Math', {
	  imul: function imul(x, y) {
	    var UINT16 = 0xffff;
	    var xn = +x;
	    var yn = +y;
	    var xl = UINT16 & xn;
	    var yl = UINT16 & yn;
	    return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
	  }
	});


/***/ }),

/***/ 126:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.21 Math.log10(x)
	var $export = __webpack_require__(17);

	$export($export.S, 'Math', {
	  log10: function log10(x) {
	    return Math.log(x) * Math.LOG10E;
	  }
	});


/***/ }),

/***/ 127:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.20 Math.log1p(x)
	var $export = __webpack_require__(17);

	$export($export.S, 'Math', { log1p: __webpack_require__(113) });


/***/ }),

/***/ 128:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.22 Math.log2(x)
	var $export = __webpack_require__(17);

	$export($export.S, 'Math', {
	  log2: function log2(x) {
	    return Math.log(x) / Math.LN2;
	  }
	});


/***/ }),

/***/ 129:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.28 Math.sign(x)
	var $export = __webpack_require__(17);

	$export($export.S, 'Math', { sign: __webpack_require__(117) });


/***/ }),

/***/ 130:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.30 Math.sinh(x)
	var $export = __webpack_require__(17);
	var expm1 = __webpack_require__(121);
	var exp = Math.exp;

	// V8 near Chromium 38 has a problem with very small numbers
	$export($export.S + $export.F * __webpack_require__(16)(function () {
	  return !Math.sinh(-2e-17) != -2e-17;
	}), 'Math', {
	  sinh: function sinh(x) {
	    return Math.abs(x = +x) < 1
	      ? (expm1(x) - expm1(-x)) / 2
	      : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);
	  }
	});


/***/ }),

/***/ 131:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.33 Math.tanh(x)
	var $export = __webpack_require__(17);
	var expm1 = __webpack_require__(121);
	var exp = Math.exp;

	$export($export.S, 'Math', {
	  tanh: function tanh(x) {
	    var a = expm1(x = +x);
	    var b = expm1(-x);
	    return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
	  }
	});


/***/ }),

/***/ 132:
/***/ (function(module, exports, __webpack_require__) {

	// 20.2.2.34 Math.trunc(x)
	var $export = __webpack_require__(17);

	$export($export.S, 'Math', {
	  trunc: function trunc(it) {
	    return (it > 0 ? Math.floor : Math.ceil)(it);
	  }
	});


/***/ }),

/***/ 133:
/***/ (function(module, exports, __webpack_require__) {

	var $export = __webpack_require__(17);
	var toAbsoluteIndex = __webpack_require__(48);
	var fromCharCode = String.fromCharCode;
	var $fromCodePoint = String.fromCodePoint;

	// length should be 1, old FF problem
	$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
	  // 21.1.2.2 String.fromCodePoint(...codePoints)
	  fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars
	    var res = [];
	    var aLen = arguments.length;
	    var i = 0;
	    var code;
	    while (aLen > i) {
	      code = +arguments[i++];
	      if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');
	      res.push(code < 0x10000
	        ? fromCharCode(code)
	        : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
	      );
	    } return res.join('');
	  }
	});


/***/ }),

/***/ 134:
/***/ (function(module, exports, __webpack_require__) {

	var $export = __webpack_require__(17);
	var toIObject = __webpack_require__(41);
	var toLength = __webpack_require__(46);

	$export($export.S, 'String', {
	  // 21.1.2.4 String.raw(callSite, ...substitutions)
	  raw: function raw(callSite) {
	    var tpl = toIObject(callSite.raw);
	    var len = toLength(tpl.length);
	    var aLen = arguments.length;
	    var res = [];
	    var i = 0;
	    while (len > i) {
	      res.push(String(tpl[i++]));
	      if (i < aLen) res.push(String(arguments[i]));
	    } return res.join('');
	  }
	});


/***/ }),

/***/ 135:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// 21.1.3.25 String.prototype.trim()
	__webpack_require__(92)('trim', function ($trim) {
	  return function trim() {
	    return $trim(this, 3);
	  };
	});


/***/ }),

/***/ 136:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $at = __webpack_require__(137)(true);

	// 21.1.3.27 String.prototype[@@iterator]()
	__webpack_require__(138)(String, 'String', function (iterated) {
	  this._t = String(iterated); // target
	  this._i = 0;                // next index
	// 21.1.5.2.1 %StringIteratorPrototype%.next()
	}, function () {
	  var O = this._t;
	  var index = this._i;
	  var point;
	  if (index >= O.length) return { value: undefined, done: true };
	  point = $at(O, index);
	  this._i += point.length;
	  return { value: point, done: false };
	});


/***/ }),

/***/ 137:
/***/ (function(module, exports, __webpack_require__) {

	var toInteger = __webpack_require__(47);
	var defined = __webpack_require__(44);
	// true  -> String#at
	// false -> String#codePointAt
	module.exports = function (TO_STRING) {
	  return function (that, pos) {
	    var s = String(defined(that));
	    var i = toInteger(pos);
	    var l = s.length;
	    var a, b;
	    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
	    a = s.charCodeAt(i);
	    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
	      ? TO_STRING ? s.charAt(i) : a
	      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
	  };
	};


/***/ }),

/***/ 138:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var LIBRARY = __webpack_require__(37);
	var $export = __webpack_require__(17);
	var redefine = __webpack_require__(27);
	var hide = __webpack_require__(19);
	var has = __webpack_require__(14);
	var Iterators = __webpack_require__(139);
	var $iterCreate = __webpack_require__(140);
	var setToStringTag = __webpack_require__(33);
	var getPrototypeOf = __webpack_require__(68);
	var ITERATOR = __webpack_require__(34)('iterator');
	var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
	var FF_ITERATOR = '@@iterator';
	var KEYS = 'keys';
	var VALUES = 'values';

	var returnThis = function () { return this; };

	module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
	  $iterCreate(Constructor, NAME, next);
	  var getMethod = function (kind) {
	    if (!BUGGY && kind in proto) return proto[kind];
	    switch (kind) {
	      case KEYS: return function keys() { return new Constructor(this, kind); };
	      case VALUES: return function values() { return new Constructor(this, kind); };
	    } return function entries() { return new Constructor(this, kind); };
	  };
	  var TAG = NAME + ' Iterator';
	  var DEF_VALUES = DEFAULT == VALUES;
	  var VALUES_BUG = false;
	  var proto = Base.prototype;
	  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
	  var $default = $native || getMethod(DEFAULT);
	  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
	  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
	  var methods, key, IteratorPrototype;
	  // Fix native
	  if ($anyNative) {
	    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
	    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
	      // Set @@toStringTag to native iterators
	      setToStringTag(IteratorPrototype, TAG, true);
	      // fix for some old engines
	      if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);
	    }
	  }
	  // fix Array#{values, @@iterator}.name in V8 / FF
	  if (DEF_VALUES && $native && $native.name !== VALUES) {
	    VALUES_BUG = true;
	    $default = function values() { return $native.call(this); };
	  }
	  // Define iterator
	  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
	    hide(proto, ITERATOR, $default);
	  }
	  // Plug for library
	  Iterators[NAME] = $default;
	  Iterators[TAG] = returnThis;
	  if (DEFAULT) {
	    methods = {
	      values: DEF_VALUES ? $default : getMethod(VALUES),
	      keys: IS_SET ? $default : getMethod(KEYS),
	      entries: $entries
	    };
	    if (FORCED) for (key in methods) {
	      if (!(key in proto)) redefine(proto, key, methods[key]);
	    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
	  }
	  return methods;
	};


/***/ }),

/***/ 139:
/***/ (function(module, exports) {

	module.exports = {};


/***/ }),

/***/ 140:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var create = __webpack_require__(55);
	var descriptor = __webpack_require__(26);
	var setToStringTag = __webpack_require__(33);
	var IteratorPrototype = {};

	// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
	__webpack_require__(19)(IteratorPrototype, __webpack_require__(34)('iterator'), function () { return this; });

	module.exports = function (Constructor, NAME, next) {
	  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
	  setToStringTag(Constructor, NAME + ' Iterator');
	};


/***/ }),

/***/ 141:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var $at = __webpack_require__(137)(false);
	$export($export.P, 'String', {
	  // 21.1.3.3 String.prototype.codePointAt(pos)
	  codePointAt: function codePointAt(pos) {
	    return $at(this, pos);
	  }
	});


/***/ }),

/***/ 142:
/***/ (function(module, exports, __webpack_require__) {

	// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])
	'use strict';
	var $export = __webpack_require__(17);
	var toLength = __webpack_require__(46);
	var context = __webpack_require__(143);
	var ENDS_WITH = 'endsWith';
	var $endsWith = ''[ENDS_WITH];

	$export($export.P + $export.F * __webpack_require__(145)(ENDS_WITH), 'String', {
	  endsWith: function endsWith(searchString /* , endPosition = @length */) {
	    var that = context(this, searchString, ENDS_WITH);
	    var endPosition = arguments.length > 1 ? arguments[1] : undefined;
	    var len = toLength(that.length);
	    var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);
	    var search = String(searchString);
	    return $endsWith
	      ? $endsWith.call(that, search, end)
	      : that.slice(end - search.length, end) === search;
	  }
	});


/***/ }),

/***/ 143:
/***/ (function(module, exports, __webpack_require__) {

	// helper for String#{startsWith, endsWith, includes}
	var isRegExp = __webpack_require__(144);
	var defined = __webpack_require__(44);

	module.exports = function (that, searchString, NAME) {
	  if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
	  return String(defined(that));
	};


/***/ }),

/***/ 144:
/***/ (function(module, exports, __webpack_require__) {

	// 7.2.8 IsRegExp(argument)
	var isObject = __webpack_require__(22);
	var cof = __webpack_require__(43);
	var MATCH = __webpack_require__(34)('match');
	module.exports = function (it) {
	  var isRegExp;
	  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
	};


/***/ }),

/***/ 145:
/***/ (function(module, exports, __webpack_require__) {

	var MATCH = __webpack_require__(34)('match');
	module.exports = function (KEY) {
	  var re = /./;
	  try {
	    '/./'[KEY](re);
	  } catch (e) {
	    try {
	      re[MATCH] = false;
	      return !'/./'[KEY](re);
	    } catch (f) { /* empty */ }
	  } return true;
	};


/***/ }),

/***/ 146:
/***/ (function(module, exports, __webpack_require__) {

	// 21.1.3.7 String.prototype.includes(searchString, position = 0)
	'use strict';
	var $export = __webpack_require__(17);
	var context = __webpack_require__(143);
	var INCLUDES = 'includes';

	$export($export.P + $export.F * __webpack_require__(145)(INCLUDES), 'String', {
	  includes: function includes(searchString /* , position = 0 */) {
	    return !!~context(this, searchString, INCLUDES)
	      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
	  }
	});


/***/ }),

/***/ 147:
/***/ (function(module, exports, __webpack_require__) {

	var $export = __webpack_require__(17);

	$export($export.P, 'String', {
	  // 21.1.3.13 String.prototype.repeat(count)
	  repeat: __webpack_require__(100)
	});


/***/ }),

/***/ 148:
/***/ (function(module, exports, __webpack_require__) {

	// 21.1.3.18 String.prototype.startsWith(searchString [, position ])
	'use strict';
	var $export = __webpack_require__(17);
	var toLength = __webpack_require__(46);
	var context = __webpack_require__(143);
	var STARTS_WITH = 'startsWith';
	var $startsWith = ''[STARTS_WITH];

	$export($export.P + $export.F * __webpack_require__(145)(STARTS_WITH), 'String', {
	  startsWith: function startsWith(searchString /* , position = 0 */) {
	    var that = context(this, searchString, STARTS_WITH);
	    var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));
	    var search = String(searchString);
	    return $startsWith
	      ? $startsWith.call(that, search, index)
	      : that.slice(index, index + search.length) === search;
	  }
	});


/***/ }),

/***/ 149:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// B.2.3.2 String.prototype.anchor(name)
	__webpack_require__(150)('anchor', function (createHTML) {
	  return function anchor(name) {
	    return createHTML(this, 'a', 'name', name);
	  };
	});


/***/ }),

/***/ 150:
/***/ (function(module, exports, __webpack_require__) {

	var $export = __webpack_require__(17);
	var fails = __webpack_require__(16);
	var defined = __webpack_require__(44);
	var quot = /"/g;
	// B.2.3.2.1 CreateHTML(string, tag, attribute, value)
	var createHTML = function (string, tag, attribute, value) {
	  var S = String(defined(string));
	  var p1 = '<' + tag;
	  if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '&quot;') + '"';
	  return p1 + '>' + S + '</' + tag + '>';
	};
	module.exports = function (NAME, exec) {
	  var O = {};
	  O[NAME] = exec(createHTML);
	  $export($export.P + $export.F * fails(function () {
	    var test = ''[NAME]('"');
	    return test !== test.toLowerCase() || test.split('"').length > 3;
	  }), 'String', O);
	};


/***/ }),

/***/ 151:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// B.2.3.3 String.prototype.big()
	__webpack_require__(150)('big', function (createHTML) {
	  return function big() {
	    return createHTML(this, 'big', '', '');
	  };
	});


/***/ }),

/***/ 152:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// B.2.3.4 String.prototype.blink()
	__webpack_require__(150)('blink', function (createHTML) {
	  return function blink() {
	    return createHTML(this, 'blink', '', '');
	  };
	});


/***/ }),

/***/ 153:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// B.2.3.5 String.prototype.bold()
	__webpack_require__(150)('bold', function (createHTML) {
	  return function bold() {
	    return createHTML(this, 'b', '', '');
	  };
	});


/***/ }),

/***/ 154:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// B.2.3.6 String.prototype.fixed()
	__webpack_require__(150)('fixed', function (createHTML) {
	  return function fixed() {
	    return createHTML(this, 'tt', '', '');
	  };
	});


/***/ }),

/***/ 155:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// B.2.3.7 String.prototype.fontcolor(color)
	__webpack_require__(150)('fontcolor', function (createHTML) {
	  return function fontcolor(color) {
	    return createHTML(this, 'font', 'color', color);
	  };
	});


/***/ }),

/***/ 156:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// B.2.3.8 String.prototype.fontsize(size)
	__webpack_require__(150)('fontsize', function (createHTML) {
	  return function fontsize(size) {
	    return createHTML(this, 'font', 'size', size);
	  };
	});


/***/ }),

/***/ 157:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// B.2.3.9 String.prototype.italics()
	__webpack_require__(150)('italics', function (createHTML) {
	  return function italics() {
	    return createHTML(this, 'i', '', '');
	  };
	});


/***/ }),

/***/ 158:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// B.2.3.10 String.prototype.link(url)
	__webpack_require__(150)('link', function (createHTML) {
	  return function link(url) {
	    return createHTML(this, 'a', 'href', url);
	  };
	});


/***/ }),

/***/ 159:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// B.2.3.11 String.prototype.small()
	__webpack_require__(150)('small', function (createHTML) {
	  return function small() {
	    return createHTML(this, 'small', '', '');
	  };
	});


/***/ }),

/***/ 160:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// B.2.3.12 String.prototype.strike()
	__webpack_require__(150)('strike', function (createHTML) {
	  return function strike() {
	    return createHTML(this, 'strike', '', '');
	  };
	});


/***/ }),

/***/ 161:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// B.2.3.13 String.prototype.sub()
	__webpack_require__(150)('sub', function (createHTML) {
	  return function sub() {
	    return createHTML(this, 'sub', '', '');
	  };
	});


/***/ }),

/***/ 162:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// B.2.3.14 String.prototype.sup()
	__webpack_require__(150)('sup', function (createHTML) {
	  return function sup() {
	    return createHTML(this, 'sup', '', '');
	  };
	});


/***/ }),

/***/ 163:
/***/ (function(module, exports, __webpack_require__) {

	// 20.3.3.1 / 15.9.4.4 Date.now()
	var $export = __webpack_require__(17);

	$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });


/***/ }),

/***/ 164:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var toObject = __webpack_require__(67);
	var toPrimitive = __webpack_require__(25);

	$export($export.P + $export.F * __webpack_require__(16)(function () {
	  return new Date(NaN).toJSON() !== null
	    || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;
	}), 'Date', {
	  // eslint-disable-next-line no-unused-vars
	  toJSON: function toJSON(key) {
	    var O = toObject(this);
	    var pv = toPrimitive(O);
	    return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();
	  }
	});


/***/ }),

/***/ 165:
/***/ (function(module, exports, __webpack_require__) {

	// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
	var $export = __webpack_require__(17);
	var toISOString = __webpack_require__(166);

	// PhantomJS / old WebKit has a broken implementations
	$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {
	  toISOString: toISOString
	});


/***/ }),

/***/ 166:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
	var fails = __webpack_require__(16);
	var getTime = Date.prototype.getTime;
	var $toISOString = Date.prototype.toISOString;

	var lz = function (num) {
	  return num > 9 ? num : '0' + num;
	};

	// PhantomJS / old WebKit has a broken implementations
	module.exports = (fails(function () {
	  return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';
	}) || !fails(function () {
	  $toISOString.call(new Date(NaN));
	})) ? function toISOString() {
	  if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');
	  var d = this;
	  var y = d.getUTCFullYear();
	  var m = d.getUTCMilliseconds();
	  var s = y < 0 ? '-' : y > 9999 ? '+' : '';
	  return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +
	    '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +
	    'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +
	    ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';
	} : $toISOString;


/***/ }),

/***/ 167:
/***/ (function(module, exports, __webpack_require__) {

	var DateProto = Date.prototype;
	var INVALID_DATE = 'Invalid Date';
	var TO_STRING = 'toString';
	var $toString = DateProto[TO_STRING];
	var getTime = DateProto.getTime;
	if (new Date(NaN) + '' != INVALID_DATE) {
	  __webpack_require__(27)(DateProto, TO_STRING, function toString() {
	    var value = getTime.call(this);
	    // eslint-disable-next-line no-self-compare
	    return value === value ? $toString.call(this) : INVALID_DATE;
	  });
	}


/***/ }),

/***/ 168:
/***/ (function(module, exports, __webpack_require__) {

	var TO_PRIMITIVE = __webpack_require__(34)('toPrimitive');
	var proto = Date.prototype;

	if (!(TO_PRIMITIVE in proto)) __webpack_require__(19)(proto, TO_PRIMITIVE, __webpack_require__(169));


/***/ }),

/***/ 169:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var anObject = __webpack_require__(21);
	var toPrimitive = __webpack_require__(25);
	var NUMBER = 'number';

	module.exports = function (hint) {
	  if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');
	  return toPrimitive(anObject(this), hint != NUMBER);
	};


/***/ }),

/***/ 170:
/***/ (function(module, exports, __webpack_require__) {

	// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
	var $export = __webpack_require__(17);

	$export($export.S, 'Array', { isArray: __webpack_require__(54) });


/***/ }),

/***/ 171:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var ctx = __webpack_require__(29);
	var $export = __webpack_require__(17);
	var toObject = __webpack_require__(67);
	var call = __webpack_require__(172);
	var isArrayIter = __webpack_require__(173);
	var toLength = __webpack_require__(46);
	var createProperty = __webpack_require__(174);
	var getIterFn = __webpack_require__(175);

	$export($export.S + $export.F * !__webpack_require__(176)(function (iter) { Array.from(iter); }), 'Array', {
	  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
	  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
	    var O = toObject(arrayLike);
	    var C = typeof this == 'function' ? this : Array;
	    var aLen = arguments.length;
	    var mapfn = aLen > 1 ? arguments[1] : undefined;
	    var mapping = mapfn !== undefined;
	    var index = 0;
	    var iterFn = getIterFn(O);
	    var length, result, step, iterator;
	    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
	    // if object isn't iterable or it's array with default iterator - use simple case
	    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
	      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
	        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
	      }
	    } else {
	      length = toLength(O.length);
	      for (result = new C(length); length > index; index++) {
	        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
	      }
	    }
	    result.length = index;
	    return result;
	  }
	});


/***/ }),

/***/ 172:
/***/ (function(module, exports, __webpack_require__) {

	// call something on iterator step with safe closing on error
	var anObject = __webpack_require__(21);
	module.exports = function (iterator, fn, value, entries) {
	  try {
	    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
	  // 7.4.6 IteratorClose(iterator, completion)
	  } catch (e) {
	    var ret = iterator['return'];
	    if (ret !== undefined) anObject(ret.call(iterator));
	    throw e;
	  }
	};


/***/ }),

/***/ 173:
/***/ (function(module, exports, __webpack_require__) {

	// check on default Array iterator
	var Iterators = __webpack_require__(139);
	var ITERATOR = __webpack_require__(34)('iterator');
	var ArrayProto = Array.prototype;

	module.exports = function (it) {
	  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
	};


/***/ }),

/***/ 174:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $defineProperty = __webpack_require__(20);
	var createDesc = __webpack_require__(26);

	module.exports = function (object, index, value) {
	  if (index in object) $defineProperty.f(object, index, createDesc(0, value));
	  else object[index] = value;
	};


/***/ }),

/***/ 175:
/***/ (function(module, exports, __webpack_require__) {

	var classof = __webpack_require__(84);
	var ITERATOR = __webpack_require__(34)('iterator');
	var Iterators = __webpack_require__(139);
	module.exports = __webpack_require__(18).getIteratorMethod = function (it) {
	  if (it != undefined) return it[ITERATOR]
	    || it['@@iterator']
	    || Iterators[classof(it)];
	};


/***/ }),

/***/ 176:
/***/ (function(module, exports, __webpack_require__) {

	var ITERATOR = __webpack_require__(34)('iterator');
	var SAFE_CLOSING = false;

	try {
	  var riter = [7][ITERATOR]();
	  riter['return'] = function () { SAFE_CLOSING = true; };
	  // eslint-disable-next-line no-throw-literal
	  Array.from(riter, function () { throw 2; });
	} catch (e) { /* empty */ }

	module.exports = function (exec, skipClosing) {
	  if (!skipClosing && !SAFE_CLOSING) return false;
	  var safe = false;
	  try {
	    var arr = [7];
	    var iter = arr[ITERATOR]();
	    iter.next = function () { return { done: safe = true }; };
	    arr[ITERATOR] = function () { return iter; };
	    exec(arr);
	  } catch (e) { /* empty */ }
	  return safe;
	};


/***/ }),

/***/ 177:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var createProperty = __webpack_require__(174);

	// WebKit Array.of isn't generic
	$export($export.S + $export.F * __webpack_require__(16)(function () {
	  function F() { /* empty */ }
	  return !(Array.of.call(F) instanceof F);
	}), 'Array', {
	  // 22.1.2.3 Array.of( ...items)
	  of: function of(/* ...args */) {
	    var index = 0;
	    var aLen = arguments.length;
	    var result = new (typeof this == 'function' ? this : Array)(aLen);
	    while (aLen > index) createProperty(result, index, arguments[index++]);
	    result.length = aLen;
	    return result;
	  }
	});


/***/ }),

/***/ 178:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// 22.1.3.13 Array.prototype.join(separator)
	var $export = __webpack_require__(17);
	var toIObject = __webpack_require__(41);
	var arrayJoin = [].join;

	// fallback for not array-like strings
	$export($export.P + $export.F * (__webpack_require__(42) != Object || !__webpack_require__(179)(arrayJoin)), 'Array', {
	  join: function join(separator) {
	    return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);
	  }
	});


/***/ }),

/***/ 179:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var fails = __webpack_require__(16);

	module.exports = function (method, arg) {
	  return !!method && fails(function () {
	    // eslint-disable-next-line no-useless-call
	    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);
	  });
	};


/***/ }),

/***/ 180:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var html = __webpack_require__(57);
	var cof = __webpack_require__(43);
	var toAbsoluteIndex = __webpack_require__(48);
	var toLength = __webpack_require__(46);
	var arraySlice = [].slice;

	// fallback for not array-like ES3 strings and DOM objects
	$export($export.P + $export.F * __webpack_require__(16)(function () {
	  if (html) arraySlice.call(html);
	}), 'Array', {
	  slice: function slice(begin, end) {
	    var len = toLength(this.length);
	    var klass = cof(this);
	    end = end === undefined ? len : end;
	    if (klass == 'Array') return arraySlice.call(this, begin, end);
	    var start = toAbsoluteIndex(begin, len);
	    var upTo = toAbsoluteIndex(end, len);
	    var size = toLength(upTo - start);
	    var cloned = Array(size);
	    var i = 0;
	    for (; i < size; i++) cloned[i] = klass == 'String'
	      ? this.charAt(start + i)
	      : this[start + i];
	    return cloned;
	  }
	});


/***/ }),

/***/ 181:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var aFunction = __webpack_require__(30);
	var toObject = __webpack_require__(67);
	var fails = __webpack_require__(16);
	var $sort = [].sort;
	var test = [1, 2, 3];

	$export($export.P + $export.F * (fails(function () {
	  // IE8-
	  test.sort(undefined);
	}) || !fails(function () {
	  // V8 bug
	  test.sort(null);
	  // Old WebKit
	}) || !__webpack_require__(179)($sort)), 'Array', {
	  // 22.1.3.25 Array.prototype.sort(comparefn)
	  sort: function sort(comparefn) {
	    return comparefn === undefined
	      ? $sort.call(toObject(this))
	      : $sort.call(toObject(this), aFunction(comparefn));
	  }
	});


/***/ }),

/***/ 182:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var $forEach = __webpack_require__(183)(0);
	var STRICT = __webpack_require__(179)([].forEach, true);

	$export($export.P + $export.F * !STRICT, 'Array', {
	  // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])
	  forEach: function forEach(callbackfn /* , thisArg */) {
	    return $forEach(this, callbackfn, arguments[1]);
	  }
	});


/***/ }),

/***/ 183:
/***/ (function(module, exports, __webpack_require__) {

	// 0 -> Array#forEach
	// 1 -> Array#map
	// 2 -> Array#filter
	// 3 -> Array#some
	// 4 -> Array#every
	// 5 -> Array#find
	// 6 -> Array#findIndex
	var ctx = __webpack_require__(29);
	var IObject = __webpack_require__(42);
	var toObject = __webpack_require__(67);
	var toLength = __webpack_require__(46);
	var asc = __webpack_require__(184);
	module.exports = function (TYPE, $create) {
	  var IS_MAP = TYPE == 1;
	  var IS_FILTER = TYPE == 2;
	  var IS_SOME = TYPE == 3;
	  var IS_EVERY = TYPE == 4;
	  var IS_FIND_INDEX = TYPE == 6;
	  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
	  var create = $create || asc;
	  return function ($this, callbackfn, that) {
	    var O = toObject($this);
	    var self = IObject(O);
	    var f = ctx(callbackfn, that, 3);
	    var length = toLength(self.length);
	    var index = 0;
	    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
	    var val, res;
	    for (;length > index; index++) if (NO_HOLES || index in self) {
	      val = self[index];
	      res = f(val, index, O);
	      if (TYPE) {
	        if (IS_MAP) result[index] = res;   // map
	        else if (res) switch (TYPE) {
	          case 3: return true;             // some
	          case 5: return val;              // find
	          case 6: return index;            // findIndex
	          case 2: result.push(val);        // filter
	        } else if (IS_EVERY) return false; // every
	      }
	    }
	    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
	  };
	};


/***/ }),

/***/ 184:
/***/ (function(module, exports, __webpack_require__) {

	// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
	var speciesConstructor = __webpack_require__(185);

	module.exports = function (original, length) {
	  return new (speciesConstructor(original))(length);
	};


/***/ }),

/***/ 185:
/***/ (function(module, exports, __webpack_require__) {

	var isObject = __webpack_require__(22);
	var isArray = __webpack_require__(54);
	var SPECIES = __webpack_require__(34)('species');

	module.exports = function (original) {
	  var C;
	  if (isArray(original)) {
	    C = original.constructor;
	    // cross-realm fallback
	    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
	    if (isObject(C)) {
	      C = C[SPECIES];
	      if (C === null) C = undefined;
	    }
	  } return C === undefined ? Array : C;
	};


/***/ }),

/***/ 186:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var $map = __webpack_require__(183)(1);

	$export($export.P + $export.F * !__webpack_require__(179)([].map, true), 'Array', {
	  // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
	  map: function map(callbackfn /* , thisArg */) {
	    return $map(this, callbackfn, arguments[1]);
	  }
	});


/***/ }),

/***/ 187:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var $filter = __webpack_require__(183)(2);

	$export($export.P + $export.F * !__webpack_require__(179)([].filter, true), 'Array', {
	  // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
	  filter: function filter(callbackfn /* , thisArg */) {
	    return $filter(this, callbackfn, arguments[1]);
	  }
	});


/***/ }),

/***/ 188:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var $some = __webpack_require__(183)(3);

	$export($export.P + $export.F * !__webpack_require__(179)([].some, true), 'Array', {
	  // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])
	  some: function some(callbackfn /* , thisArg */) {
	    return $some(this, callbackfn, arguments[1]);
	  }
	});


/***/ }),

/***/ 189:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var $every = __webpack_require__(183)(4);

	$export($export.P + $export.F * !__webpack_require__(179)([].every, true), 'Array', {
	  // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])
	  every: function every(callbackfn /* , thisArg */) {
	    return $every(this, callbackfn, arguments[1]);
	  }
	});


/***/ }),

/***/ 190:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var $reduce = __webpack_require__(191);

	$export($export.P + $export.F * !__webpack_require__(179)([].reduce, true), 'Array', {
	  // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])
	  reduce: function reduce(callbackfn /* , initialValue */) {
	    return $reduce(this, callbackfn, arguments.length, arguments[1], false);
	  }
	});


/***/ }),

/***/ 191:
/***/ (function(module, exports, __webpack_require__) {

	var aFunction = __webpack_require__(30);
	var toObject = __webpack_require__(67);
	var IObject = __webpack_require__(42);
	var toLength = __webpack_require__(46);

	module.exports = function (that, callbackfn, aLen, memo, isRight) {
	  aFunction(callbackfn);
	  var O = toObject(that);
	  var self = IObject(O);
	  var length = toLength(O.length);
	  var index = isRight ? length - 1 : 0;
	  var i = isRight ? -1 : 1;
	  if (aLen < 2) for (;;) {
	    if (index in self) {
	      memo = self[index];
	      index += i;
	      break;
	    }
	    index += i;
	    if (isRight ? index < 0 : length <= index) {
	      throw TypeError('Reduce of empty array with no initial value');
	    }
	  }
	  for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {
	    memo = callbackfn(memo, self[index], index, O);
	  }
	  return memo;
	};


/***/ }),

/***/ 192:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var $reduce = __webpack_require__(191);

	$export($export.P + $export.F * !__webpack_require__(179)([].reduceRight, true), 'Array', {
	  // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])
	  reduceRight: function reduceRight(callbackfn /* , initialValue */) {
	    return $reduce(this, callbackfn, arguments.length, arguments[1], true);
	  }
	});


/***/ }),

/***/ 193:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var $indexOf = __webpack_require__(45)(false);
	var $native = [].indexOf;
	var NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;

	$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(179)($native)), 'Array', {
	  // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])
	  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {
	    return NEGATIVE_ZERO
	      // convert -0 to +0
	      ? $native.apply(this, arguments) || 0
	      : $indexOf(this, searchElement, arguments[1]);
	  }
	});


/***/ }),

/***/ 194:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var toIObject = __webpack_require__(41);
	var toInteger = __webpack_require__(47);
	var toLength = __webpack_require__(46);
	var $native = [].lastIndexOf;
	var NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;

	$export($export.P + $export.F * (NEGATIVE_ZERO || !__webpack_require__(179)($native)), 'Array', {
	  // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])
	  lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {
	    // convert -0 to +0
	    if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;
	    var O = toIObject(this);
	    var length = toLength(O.length);
	    var index = length - 1;
	    if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));
	    if (index < 0) index = length + index;
	    for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;
	    return -1;
	  }
	});


/***/ }),

/***/ 195:
/***/ (function(module, exports, __webpack_require__) {

	// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
	var $export = __webpack_require__(17);

	$export($export.P, 'Array', { copyWithin: __webpack_require__(196) });

	__webpack_require__(197)('copyWithin');


/***/ }),

/***/ 196:
/***/ (function(module, exports, __webpack_require__) {

	// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
	'use strict';
	var toObject = __webpack_require__(67);
	var toAbsoluteIndex = __webpack_require__(48);
	var toLength = __webpack_require__(46);

	module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {
	  var O = toObject(this);
	  var len = toLength(O.length);
	  var to = toAbsoluteIndex(target, len);
	  var from = toAbsoluteIndex(start, len);
	  var end = arguments.length > 2 ? arguments[2] : undefined;
	  var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);
	  var inc = 1;
	  if (from < to && to < from + count) {
	    inc = -1;
	    from += count - 1;
	    to += count - 1;
	  }
	  while (count-- > 0) {
	    if (from in O) O[to] = O[from];
	    else delete O[to];
	    to += inc;
	    from += inc;
	  } return O;
	};


/***/ }),

/***/ 197:
/***/ (function(module, exports, __webpack_require__) {

	// 22.1.3.31 Array.prototype[@@unscopables]
	var UNSCOPABLES = __webpack_require__(34)('unscopables');
	var ArrayProto = Array.prototype;
	if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(19)(ArrayProto, UNSCOPABLES, {});
	module.exports = function (key) {
	  ArrayProto[UNSCOPABLES][key] = true;
	};


/***/ }),

/***/ 198:
/***/ (function(module, exports, __webpack_require__) {

	// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
	var $export = __webpack_require__(17);

	$export($export.P, 'Array', { fill: __webpack_require__(199) });

	__webpack_require__(197)('fill');


/***/ }),

/***/ 199:
/***/ (function(module, exports, __webpack_require__) {

	// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
	'use strict';
	var toObject = __webpack_require__(67);
	var toAbsoluteIndex = __webpack_require__(48);
	var toLength = __webpack_require__(46);
	module.exports = function fill(value /* , start = 0, end = @length */) {
	  var O = toObject(this);
	  var length = toLength(O.length);
	  var aLen = arguments.length;
	  var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);
	  var end = aLen > 2 ? arguments[2] : undefined;
	  var endPos = end === undefined ? length : toAbsoluteIndex(end, length);
	  while (endPos > index) O[index++] = value;
	  return O;
	};


/***/ }),

/***/ 200:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
	var $export = __webpack_require__(17);
	var $find = __webpack_require__(183)(5);
	var KEY = 'find';
	var forced = true;
	// Shouldn't skip holes
	if (KEY in []) Array(1)[KEY](function () { forced = false; });
	$export($export.P + $export.F * forced, 'Array', {
	  find: function find(callbackfn /* , that = undefined */) {
	    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
	  }
	});
	__webpack_require__(197)(KEY);


/***/ }),

/***/ 201:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
	var $export = __webpack_require__(17);
	var $find = __webpack_require__(183)(6);
	var KEY = 'findIndex';
	var forced = true;
	// Shouldn't skip holes
	if (KEY in []) Array(1)[KEY](function () { forced = false; });
	$export($export.P + $export.F * forced, 'Array', {
	  findIndex: function findIndex(callbackfn /* , that = undefined */) {
	    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
	  }
	});
	__webpack_require__(197)(KEY);


/***/ }),

/***/ 202:
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(203)('Array');


/***/ }),

/***/ 203:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var global = __webpack_require__(13);
	var dP = __webpack_require__(20);
	var DESCRIPTORS = __webpack_require__(15);
	var SPECIES = __webpack_require__(34)('species');

	module.exports = function (KEY) {
	  var C = global[KEY];
	  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
	    configurable: true,
	    get: function () { return this; }
	  });
	};


/***/ }),

/***/ 204:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var addToUnscopables = __webpack_require__(197);
	var step = __webpack_require__(205);
	var Iterators = __webpack_require__(139);
	var toIObject = __webpack_require__(41);

	// 22.1.3.4 Array.prototype.entries()
	// 22.1.3.13 Array.prototype.keys()
	// 22.1.3.29 Array.prototype.values()
	// 22.1.3.30 Array.prototype[@@iterator]()
	module.exports = __webpack_require__(138)(Array, 'Array', function (iterated, kind) {
	  this._t = toIObject(iterated); // target
	  this._i = 0;                   // next index
	  this._k = kind;                // kind
	// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
	}, function () {
	  var O = this._t;
	  var kind = this._k;
	  var index = this._i++;
	  if (!O || index >= O.length) {
	    this._t = undefined;
	    return step(1);
	  }
	  if (kind == 'keys') return step(0, index);
	  if (kind == 'values') return step(0, O[index]);
	  return step(0, [index, O[index]]);
	}, 'values');

	// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
	Iterators.Arguments = Iterators.Array;

	addToUnscopables('keys');
	addToUnscopables('values');
	addToUnscopables('entries');


/***/ }),

/***/ 205:
/***/ (function(module, exports) {

	module.exports = function (done, value) {
	  return { value: value, done: !!done };
	};


/***/ }),

/***/ 206:
/***/ (function(module, exports, __webpack_require__) {

	var global = __webpack_require__(13);
	var inheritIfRequired = __webpack_require__(97);
	var dP = __webpack_require__(20).f;
	var gOPN = __webpack_require__(59).f;
	var isRegExp = __webpack_require__(144);
	var $flags = __webpack_require__(207);
	var $RegExp = global.RegExp;
	var Base = $RegExp;
	var proto = $RegExp.prototype;
	var re1 = /a/g;
	var re2 = /a/g;
	// "new" creates a new object, old webkit buggy here
	var CORRECT_NEW = new $RegExp(re1) !== re1;

	if (__webpack_require__(15) && (!CORRECT_NEW || __webpack_require__(16)(function () {
	  re2[__webpack_require__(34)('match')] = false;
	  // RegExp constructor can alter flags and IsRegExp works correct with @@match
	  return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';
	}))) {
	  $RegExp = function RegExp(p, f) {
	    var tiRE = this instanceof $RegExp;
	    var piRE = isRegExp(p);
	    var fiU = f === undefined;
	    return !tiRE && piRE && p.constructor === $RegExp && fiU ? p
	      : inheritIfRequired(CORRECT_NEW
	        ? new Base(piRE && !fiU ? p.source : p, f)
	        : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)
	      , tiRE ? this : proto, $RegExp);
	  };
	  var proxy = function (key) {
	    key in $RegExp || dP($RegExp, key, {
	      configurable: true,
	      get: function () { return Base[key]; },
	      set: function (it) { Base[key] = it; }
	    });
	  };
	  for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);
	  proto.constructor = $RegExp;
	  $RegExp.prototype = proto;
	  __webpack_require__(27)(global, 'RegExp', $RegExp);
	}

	__webpack_require__(203)('RegExp');


/***/ }),

/***/ 207:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// 21.2.5.3 get RegExp.prototype.flags
	var anObject = __webpack_require__(21);
	module.exports = function () {
	  var that = anObject(this);
	  var result = '';
	  if (that.global) result += 'g';
	  if (that.ignoreCase) result += 'i';
	  if (that.multiline) result += 'm';
	  if (that.unicode) result += 'u';
	  if (that.sticky) result += 'y';
	  return result;
	};


/***/ }),

/***/ 208:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	__webpack_require__(209);
	var anObject = __webpack_require__(21);
	var $flags = __webpack_require__(207);
	var DESCRIPTORS = __webpack_require__(15);
	var TO_STRING = 'toString';
	var $toString = /./[TO_STRING];

	var define = function (fn) {
	  __webpack_require__(27)(RegExp.prototype, TO_STRING, fn, true);
	};

	// 21.2.5.14 RegExp.prototype.toString()
	if (__webpack_require__(16)(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {
	  define(function toString() {
	    var R = anObject(this);
	    return '/'.concat(R.source, '/',
	      'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
	  });
	// FF44- RegExp#toString has a wrong name
	} else if ($toString.name != TO_STRING) {
	  define(function toString() {
	    return $toString.call(this);
	  });
	}


/***/ }),

/***/ 209:
/***/ (function(module, exports, __webpack_require__) {

	// 21.2.5.3 get RegExp.prototype.flags()
	if (__webpack_require__(15) && /./g.flags != 'g') __webpack_require__(20).f(RegExp.prototype, 'flags', {
	  configurable: true,
	  get: __webpack_require__(207)
	});


/***/ }),

/***/ 210:
/***/ (function(module, exports, __webpack_require__) {

	// @@match logic
	__webpack_require__(211)('match', 1, function (defined, MATCH, $match) {
	  // 21.1.3.11 String.prototype.match(regexp)
	  return [function match(regexp) {
	    'use strict';
	    var O = defined(this);
	    var fn = regexp == undefined ? undefined : regexp[MATCH];
	    return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
	  }, $match];
	});


/***/ }),

/***/ 211:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var hide = __webpack_require__(19);
	var redefine = __webpack_require__(27);
	var fails = __webpack_require__(16);
	var defined = __webpack_require__(44);
	var wks = __webpack_require__(34);

	module.exports = function (KEY, length, exec) {
	  var SYMBOL = wks(KEY);
	  var fns = exec(defined, SYMBOL, ''[KEY]);
	  var strfn = fns[0];
	  var rxfn = fns[1];
	  if (fails(function () {
	    var O = {};
	    O[SYMBOL] = function () { return 7; };
	    return ''[KEY](O) != 7;
	  })) {
	    redefine(String.prototype, KEY, strfn);
	    hide(RegExp.prototype, SYMBOL, length == 2
	      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
	      // 21.2.5.11 RegExp.prototype[@@split](string, limit)
	      ? function (string, arg) { return rxfn.call(string, this, arg); }
	      // 21.2.5.6 RegExp.prototype[@@match](string)
	      // 21.2.5.9 RegExp.prototype[@@search](string)
	      : function (string) { return rxfn.call(string, this); }
	    );
	  }
	};


/***/ }),

/***/ 212:
/***/ (function(module, exports, __webpack_require__) {

	// @@replace logic
	__webpack_require__(211)('replace', 2, function (defined, REPLACE, $replace) {
	  // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)
	  return [function replace(searchValue, replaceValue) {
	    'use strict';
	    var O = defined(this);
	    var fn = searchValue == undefined ? undefined : searchValue[REPLACE];
	    return fn !== undefined
	      ? fn.call(searchValue, O, replaceValue)
	      : $replace.call(String(O), searchValue, replaceValue);
	  }, $replace];
	});


/***/ }),

/***/ 213:
/***/ (function(module, exports, __webpack_require__) {

	// @@search logic
	__webpack_require__(211)('search', 1, function (defined, SEARCH, $search) {
	  // 21.1.3.15 String.prototype.search(regexp)
	  return [function search(regexp) {
	    'use strict';
	    var O = defined(this);
	    var fn = regexp == undefined ? undefined : regexp[SEARCH];
	    return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
	  }, $search];
	});


/***/ }),

/***/ 214:
/***/ (function(module, exports, __webpack_require__) {

	// @@split logic
	__webpack_require__(211)('split', 2, function (defined, SPLIT, $split) {
	  'use strict';
	  var isRegExp = __webpack_require__(144);
	  var _split = $split;
	  var $push = [].push;
	  var $SPLIT = 'split';
	  var LENGTH = 'length';
	  var LAST_INDEX = 'lastIndex';
	  if (
	    'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
	    'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
	    'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||
	    '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||
	    '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
	    ''[$SPLIT](/.?/)[LENGTH]
	  ) {
	    var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group
	    // based on es5-shim implementation, need to rework it
	    $split = function (separator, limit) {
	      var string = String(this);
	      if (separator === undefined && limit === 0) return [];
	      // If `separator` is not a regex, use native split
	      if (!isRegExp(separator)) return _split.call(string, separator, limit);
	      var output = [];
	      var flags = (separator.ignoreCase ? 'i' : '') +
	                  (separator.multiline ? 'm' : '') +
	                  (separator.unicode ? 'u' : '') +
	                  (separator.sticky ? 'y' : '');
	      var lastLastIndex = 0;
	      var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;
	      // Make `global` and avoid `lastIndex` issues by working with a copy
	      var separatorCopy = new RegExp(separator.source, flags + 'g');
	      var separator2, match, lastIndex, lastLength, i;
	      // Doesn't need flags gy, but they don't hurt
	      if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\s)', flags);
	      while (match = separatorCopy.exec(string)) {
	        // `separatorCopy.lastIndex` is not reliable cross-browser
	        lastIndex = match.index + match[0][LENGTH];
	        if (lastIndex > lastLastIndex) {
	          output.push(string.slice(lastLastIndex, match.index));
	          // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG
	          // eslint-disable-next-line no-loop-func
	          if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {
	            for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;
	          });
	          if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));
	          lastLength = match[0][LENGTH];
	          lastLastIndex = lastIndex;
	          if (output[LENGTH] >= splitLimit) break;
	        }
	        if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop
	      }
	      if (lastLastIndex === string[LENGTH]) {
	        if (lastLength || !separatorCopy.test('')) output.push('');
	      } else output.push(string.slice(lastLastIndex));
	      return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
	    };
	  // Chakra, V8
	  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {
	    $split = function (separator, limit) {
	      return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);
	    };
	  }
	  // 21.1.3.17 String.prototype.split(separator, limit)
	  return [function split(separator, limit) {
	    var O = defined(this);
	    var fn = separator == undefined ? undefined : separator[SPLIT];
	    return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);
	  }, $split];
	});


/***/ }),

/***/ 215:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var LIBRARY = __webpack_require__(37);
	var global = __webpack_require__(13);
	var ctx = __webpack_require__(29);
	var classof = __webpack_require__(84);
	var $export = __webpack_require__(17);
	var isObject = __webpack_require__(22);
	var aFunction = __webpack_require__(30);
	var anInstance = __webpack_require__(216);
	var forOf = __webpack_require__(217);
	var speciesConstructor = __webpack_require__(218);
	var task = __webpack_require__(219).set;
	var microtask = __webpack_require__(220)();
	var newPromiseCapabilityModule = __webpack_require__(221);
	var perform = __webpack_require__(222);
	var promiseResolve = __webpack_require__(223);
	var PROMISE = 'Promise';
	var TypeError = global.TypeError;
	var process = global.process;
	var $Promise = global[PROMISE];
	var isNode = classof(process) == 'process';
	var empty = function () { /* empty */ };
	var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;
	var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;

	var USE_NATIVE = !!function () {
	  try {
	    // correct subclassing with @@species support
	    var promise = $Promise.resolve(1);
	    var FakePromise = (promise.constructor = {})[__webpack_require__(34)('species')] = function (exec) {
	      exec(empty, empty);
	    };
	    // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
	    return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;
	  } catch (e) { /* empty */ }
	}();

	// helpers
	var sameConstructor = LIBRARY ? function (a, b) {
	  // with library wrapper special case
	  return a === b || a === $Promise && b === Wrapper;
	} : function (a, b) {
	  return a === b;
	};
	var isThenable = function (it) {
	  var then;
	  return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
	};
	var notify = function (promise, isReject) {
	  if (promise._n) return;
	  promise._n = true;
	  var chain = promise._c;
	  microtask(function () {
	    var value = promise._v;
	    var ok = promise._s == 1;
	    var i = 0;
	    var run = function (reaction) {
	      var handler = ok ? reaction.ok : reaction.fail;
	      var resolve = reaction.resolve;
	      var reject = reaction.reject;
	      var domain = reaction.domain;
	      var result, then;
	      try {
	        if (handler) {
	          if (!ok) {
	            if (promise._h == 2) onHandleUnhandled(promise);
	            promise._h = 1;
	          }
	          if (handler === true) result = value;
	          else {
	            if (domain) domain.enter();
	            result = handler(value);
	            if (domain) domain.exit();
	          }
	          if (result === reaction.promise) {
	            reject(TypeError('Promise-chain cycle'));
	          } else if (then = isThenable(result)) {
	            then.call(result, resolve, reject);
	          } else resolve(result);
	        } else reject(value);
	      } catch (e) {
	        reject(e);
	      }
	    };
	    while (chain.length > i) run(chain[i++]); // variable length - can't use forEach
	    promise._c = [];
	    promise._n = false;
	    if (isReject && !promise._h) onUnhandled(promise);
	  });
	};
	var onUnhandled = function (promise) {
	  task.call(global, function () {
	    var value = promise._v;
	    var unhandled = isUnhandled(promise);
	    var result, handler, console;
	    if (unhandled) {
	      result = perform(function () {
	        if (isNode) {
	          process.emit('unhandledRejection', value, promise);
	        } else if (handler = global.onunhandledrejection) {
	          handler({ promise: promise, reason: value });
	        } else if ((console = global.console) && console.error) {
	          console.error('Unhandled promise rejection', value);
	        }
	      });
	      // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
	      promise._h = isNode || isUnhandled(promise) ? 2 : 1;
	    } promise._a = undefined;
	    if (unhandled && result.e) throw result.v;
	  });
	};
	var isUnhandled = function (promise) {
	  if (promise._h == 1) return false;
	  var chain = promise._a || promise._c;
	  var i = 0;
	  var reaction;
	  while (chain.length > i) {
	    reaction = chain[i++];
	    if (reaction.fail || !isUnhandled(reaction.promise)) return false;
	  } return true;
	};
	var onHandleUnhandled = function (promise) {
	  task.call(global, function () {
	    var handler;
	    if (isNode) {
	      process.emit('rejectionHandled', promise);
	    } else if (handler = global.onrejectionhandled) {
	      handler({ promise: promise, reason: promise._v });
	    }
	  });
	};
	var $reject = function (value) {
	  var promise = this;
	  if (promise._d) return;
	  promise._d = true;
	  promise = promise._w || promise; // unwrap
	  promise._v = value;
	  promise._s = 2;
	  if (!promise._a) promise._a = promise._c.slice();
	  notify(promise, true);
	};
	var $resolve = function (value) {
	  var promise = this;
	  var then;
	  if (promise._d) return;
	  promise._d = true;
	  promise = promise._w || promise; // unwrap
	  try {
	    if (promise === value) throw TypeError("Promise can't be resolved itself");
	    if (then = isThenable(value)) {
	      microtask(function () {
	        var wrapper = { _w: promise, _d: false }; // wrap
	        try {
	          then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
	        } catch (e) {
	          $reject.call(wrapper, e);
	        }
	      });
	    } else {
	      promise._v = value;
	      promise._s = 1;
	      notify(promise, false);
	    }
	  } catch (e) {
	    $reject.call({ _w: promise, _d: false }, e); // wrap
	  }
	};

	// constructor polyfill
	if (!USE_NATIVE) {
	  // 25.4.3.1 Promise(executor)
	  $Promise = function Promise(executor) {
	    anInstance(this, $Promise, PROMISE, '_h');
	    aFunction(executor);
	    Internal.call(this);
	    try {
	      executor(ctx($resolve, this, 1), ctx($reject, this, 1));
	    } catch (err) {
	      $reject.call(this, err);
	    }
	  };
	  // eslint-disable-next-line no-unused-vars
	  Internal = function Promise(executor) {
	    this._c = [];             // <- awaiting reactions
	    this._a = undefined;      // <- checked in isUnhandled reactions
	    this._s = 0;              // <- state
	    this._d = false;          // <- done
	    this._v = undefined;      // <- value
	    this._h = 0;              // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
	    this._n = false;          // <- notify
	  };
	  Internal.prototype = __webpack_require__(224)($Promise.prototype, {
	    // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
	    then: function then(onFulfilled, onRejected) {
	      var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
	      reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
	      reaction.fail = typeof onRejected == 'function' && onRejected;
	      reaction.domain = isNode ? process.domain : undefined;
	      this._c.push(reaction);
	      if (this._a) this._a.push(reaction);
	      if (this._s) notify(this, false);
	      return reaction.promise;
	    },
	    // 25.4.5.1 Promise.prototype.catch(onRejected)
	    'catch': function (onRejected) {
	      return this.then(undefined, onRejected);
	    }
	  });
	  OwnPromiseCapability = function () {
	    var promise = new Internal();
	    this.promise = promise;
	    this.resolve = ctx($resolve, promise, 1);
	    this.reject = ctx($reject, promise, 1);
	  };
	  newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
	    return sameConstructor($Promise, C)
	      ? new OwnPromiseCapability(C)
	      : newGenericPromiseCapability(C);
	  };
	}

	$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });
	__webpack_require__(33)($Promise, PROMISE);
	__webpack_require__(203)(PROMISE);
	Wrapper = __webpack_require__(18)[PROMISE];

	// statics
	$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
	  // 25.4.4.5 Promise.reject(r)
	  reject: function reject(r) {
	    var capability = newPromiseCapability(this);
	    var $$reject = capability.reject;
	    $$reject(r);
	    return capability.promise;
	  }
	});
	$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
	  // 25.4.4.6 Promise.resolve(x)
	  resolve: function resolve(x) {
	    // instanceof instead of internal slot check because we should fix it without replacement native Promise core
	    if (x instanceof $Promise && sameConstructor(x.constructor, this)) return x;
	    return promiseResolve(this, x);
	  }
	});
	$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(176)(function (iter) {
	  $Promise.all(iter)['catch'](empty);
	})), PROMISE, {
	  // 25.4.4.1 Promise.all(iterable)
	  all: function all(iterable) {
	    var C = this;
	    var capability = newPromiseCapability(C);
	    var resolve = capability.resolve;
	    var reject = capability.reject;
	    var result = perform(function () {
	      var values = [];
	      var index = 0;
	      var remaining = 1;
	      forOf(iterable, false, function (promise) {
	        var $index = index++;
	        var alreadyCalled = false;
	        values.push(undefined);
	        remaining++;
	        C.resolve(promise).then(function (value) {
	          if (alreadyCalled) return;
	          alreadyCalled = true;
	          values[$index] = value;
	          --remaining || resolve(values);
	        }, reject);
	      });
	      --remaining || resolve(values);
	    });
	    if (result.e) reject(result.v);
	    return capability.promise;
	  },
	  // 25.4.4.4 Promise.race(iterable)
	  race: function race(iterable) {
	    var C = this;
	    var capability = newPromiseCapability(C);
	    var reject = capability.reject;
	    var result = perform(function () {
	      forOf(iterable, false, function (promise) {
	        C.resolve(promise).then(capability.resolve, reject);
	      });
	    });
	    if (result.e) reject(result.v);
	    return capability.promise;
	  }
	});


/***/ }),

/***/ 216:
/***/ (function(module, exports) {

	module.exports = function (it, Constructor, name, forbiddenField) {
	  if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {
	    throw TypeError(name + ': incorrect invocation!');
	  } return it;
	};


/***/ }),

/***/ 217:
/***/ (function(module, exports, __webpack_require__) {

	var ctx = __webpack_require__(29);
	var call = __webpack_require__(172);
	var isArrayIter = __webpack_require__(173);
	var anObject = __webpack_require__(21);
	var toLength = __webpack_require__(46);
	var getIterFn = __webpack_require__(175);
	var BREAK = {};
	var RETURN = {};
	var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {
	  var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);
	  var f = ctx(fn, that, entries ? 2 : 1);
	  var index = 0;
	  var length, step, iterator, result;
	  if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');
	  // fast case for arrays with default iterator
	  if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {
	    result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
	    if (result === BREAK || result === RETURN) return result;
	  } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {
	    result = call(iterator, f, step.value, entries);
	    if (result === BREAK || result === RETURN) return result;
	  }
	};
	exports.BREAK = BREAK;
	exports.RETURN = RETURN;


/***/ }),

/***/ 218:
/***/ (function(module, exports, __webpack_require__) {

	// 7.3.20 SpeciesConstructor(O, defaultConstructor)
	var anObject = __webpack_require__(21);
	var aFunction = __webpack_require__(30);
	var SPECIES = __webpack_require__(34)('species');
	module.exports = function (O, D) {
	  var C = anObject(O).constructor;
	  var S;
	  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
	};


/***/ }),

/***/ 219:
/***/ (function(module, exports, __webpack_require__) {

	var ctx = __webpack_require__(29);
	var invoke = __webpack_require__(87);
	var html = __webpack_require__(57);
	var cel = __webpack_require__(24);
	var global = __webpack_require__(13);
	var process = global.process;
	var setTask = global.setImmediate;
	var clearTask = global.clearImmediate;
	var MessageChannel = global.MessageChannel;
	var Dispatch = global.Dispatch;
	var counter = 0;
	var queue = {};
	var ONREADYSTATECHANGE = 'onreadystatechange';
	var defer, channel, port;
	var run = function () {
	  var id = +this;
	  // eslint-disable-next-line no-prototype-builtins
	  if (queue.hasOwnProperty(id)) {
	    var fn = queue[id];
	    delete queue[id];
	    fn();
	  }
	};
	var listener = function (event) {
	  run.call(event.data);
	};
	// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
	if (!setTask || !clearTask) {
	  setTask = function setImmediate(fn) {
	    var args = [];
	    var i = 1;
	    while (arguments.length > i) args.push(arguments[i++]);
	    queue[++counter] = function () {
	      // eslint-disable-next-line no-new-func
	      invoke(typeof fn == 'function' ? fn : Function(fn), args);
	    };
	    defer(counter);
	    return counter;
	  };
	  clearTask = function clearImmediate(id) {
	    delete queue[id];
	  };
	  // Node.js 0.8-
	  if (__webpack_require__(43)(process) == 'process') {
	    defer = function (id) {
	      process.nextTick(ctx(run, id, 1));
	    };
	  // Sphere (JS game engine) Dispatch API
	  } else if (Dispatch && Dispatch.now) {
	    defer = function (id) {
	      Dispatch.now(ctx(run, id, 1));
	    };
	  // Browsers with MessageChannel, includes WebWorkers
	  } else if (MessageChannel) {
	    channel = new MessageChannel();
	    port = channel.port2;
	    channel.port1.onmessage = listener;
	    defer = ctx(port.postMessage, port, 1);
	  // Browsers with postMessage, skip WebWorkers
	  // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
	  } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {
	    defer = function (id) {
	      global.postMessage(id + '', '*');
	    };
	    global.addEventListener('message', listener, false);
	  // IE8-
	  } else if (ONREADYSTATECHANGE in cel('script')) {
	    defer = function (id) {
	      html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {
	        html.removeChild(this);
	        run.call(id);
	      };
	    };
	  // Rest old browsers
	  } else {
	    defer = function (id) {
	      setTimeout(ctx(run, id, 1), 0);
	    };
	  }
	}
	module.exports = {
	  set: setTask,
	  clear: clearTask
	};


/***/ }),

/***/ 220:
/***/ (function(module, exports, __webpack_require__) {

	var global = __webpack_require__(13);
	var macrotask = __webpack_require__(219).set;
	var Observer = global.MutationObserver || global.WebKitMutationObserver;
	var process = global.process;
	var Promise = global.Promise;
	var isNode = __webpack_require__(43)(process) == 'process';

	module.exports = function () {
	  var head, last, notify;

	  var flush = function () {
	    var parent, fn;
	    if (isNode && (parent = process.domain)) parent.exit();
	    while (head) {
	      fn = head.fn;
	      head = head.next;
	      try {
	        fn();
	      } catch (e) {
	        if (head) notify();
	        else last = undefined;
	        throw e;
	      }
	    } last = undefined;
	    if (parent) parent.enter();
	  };

	  // Node.js
	  if (isNode) {
	    notify = function () {
	      process.nextTick(flush);
	    };
	  // browsers with MutationObserver
	  } else if (Observer) {
	    var toggle = true;
	    var node = document.createTextNode('');
	    new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new
	    notify = function () {
	      node.data = toggle = !toggle;
	    };
	  // environments with maybe non-completely correct, but existent Promise
	  } else if (Promise && Promise.resolve) {
	    var promise = Promise.resolve();
	    notify = function () {
	      promise.then(flush);
	    };
	  // for other environments - macrotask based on:
	  // - setImmediate
	  // - MessageChannel
	  // - window.postMessag
	  // - onreadystatechange
	  // - setTimeout
	  } else {
	    notify = function () {
	      // strange IE + webpack dev server bug - use .call(global)
	      macrotask.call(global, flush);
	    };
	  }

	  return function (fn) {
	    var task = { fn: fn, next: undefined };
	    if (last) last.next = task;
	    if (!head) {
	      head = task;
	      notify();
	    } last = task;
	  };
	};


/***/ }),

/***/ 221:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// 25.4.1.5 NewPromiseCapability(C)
	var aFunction = __webpack_require__(30);

	function PromiseCapability(C) {
	  var resolve, reject;
	  this.promise = new C(function ($$resolve, $$reject) {
	    if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
	    resolve = $$resolve;
	    reject = $$reject;
	  });
	  this.resolve = aFunction(resolve);
	  this.reject = aFunction(reject);
	}

	module.exports.f = function (C) {
	  return new PromiseCapability(C);
	};


/***/ }),

/***/ 222:
/***/ (function(module, exports) {

	module.exports = function (exec) {
	  try {
	    return { e: false, v: exec() };
	  } catch (e) {
	    return { e: true, v: e };
	  }
	};


/***/ }),

/***/ 223:
/***/ (function(module, exports, __webpack_require__) {

	var newPromiseCapability = __webpack_require__(221);

	module.exports = function (C, x) {
	  var promiseCapability = newPromiseCapability.f(C);
	  var resolve = promiseCapability.resolve;
	  resolve(x);
	  return promiseCapability.promise;
	};


/***/ }),

/***/ 224:
/***/ (function(module, exports, __webpack_require__) {

	var redefine = __webpack_require__(27);
	module.exports = function (target, src, safe) {
	  for (var key in src) redefine(target, key, src[key], safe);
	  return target;
	};


/***/ }),

/***/ 225:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var strong = __webpack_require__(226);
	var validate = __webpack_require__(227);
	var MAP = 'Map';

	// 23.1 Map Objects
	module.exports = __webpack_require__(228)(MAP, function (get) {
	  return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
	}, {
	  // 23.1.3.6 Map.prototype.get(key)
	  get: function get(key) {
	    var entry = strong.getEntry(validate(this, MAP), key);
	    return entry && entry.v;
	  },
	  // 23.1.3.9 Map.prototype.set(key, value)
	  set: function set(key, value) {
	    return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);
	  }
	}, strong, true);


/***/ }),

/***/ 226:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var dP = __webpack_require__(20).f;
	var create = __webpack_require__(55);
	var redefineAll = __webpack_require__(224);
	var ctx = __webpack_require__(29);
	var anInstance = __webpack_require__(216);
	var forOf = __webpack_require__(217);
	var $iterDefine = __webpack_require__(138);
	var step = __webpack_require__(205);
	var setSpecies = __webpack_require__(203);
	var DESCRIPTORS = __webpack_require__(15);
	var fastKey = __webpack_require__(31).fastKey;
	var validate = __webpack_require__(227);
	var SIZE = DESCRIPTORS ? '_s' : 'size';

	var getEntry = function (that, key) {
	  // fast case
	  var index = fastKey(key);
	  var entry;
	  if (index !== 'F') return that._i[index];
	  // frozen object case
	  for (entry = that._f; entry; entry = entry.n) {
	    if (entry.k == key) return entry;
	  }
	};

	module.exports = {
	  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
	    var C = wrapper(function (that, iterable) {
	      anInstance(that, C, NAME, '_i');
	      that._t = NAME;         // collection type
	      that._i = create(null); // index
	      that._f = undefined;    // first entry
	      that._l = undefined;    // last entry
	      that[SIZE] = 0;         // size
	      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
	    });
	    redefineAll(C.prototype, {
	      // 23.1.3.1 Map.prototype.clear()
	      // 23.2.3.2 Set.prototype.clear()
	      clear: function clear() {
	        for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {
	          entry.r = true;
	          if (entry.p) entry.p = entry.p.n = undefined;
	          delete data[entry.i];
	        }
	        that._f = that._l = undefined;
	        that[SIZE] = 0;
	      },
	      // 23.1.3.3 Map.prototype.delete(key)
	      // 23.2.3.4 Set.prototype.delete(value)
	      'delete': function (key) {
	        var that = validate(this, NAME);
	        var entry = getEntry(that, key);
	        if (entry) {
	          var next = entry.n;
	          var prev = entry.p;
	          delete that._i[entry.i];
	          entry.r = true;
	          if (prev) prev.n = next;
	          if (next) next.p = prev;
	          if (that._f == entry) that._f = next;
	          if (that._l == entry) that._l = prev;
	          that[SIZE]--;
	        } return !!entry;
	      },
	      // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
	      // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
	      forEach: function forEach(callbackfn /* , that = undefined */) {
	        validate(this, NAME);
	        var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
	        var entry;
	        while (entry = entry ? entry.n : this._f) {
	          f(entry.v, entry.k, this);
	          // revert to the last existing entry
	          while (entry && entry.r) entry = entry.p;
	        }
	      },
	      // 23.1.3.7 Map.prototype.has(key)
	      // 23.2.3.7 Set.prototype.has(value)
	      has: function has(key) {
	        return !!getEntry(validate(this, NAME), key);
	      }
	    });
	    if (DESCRIPTORS) dP(C.prototype, 'size', {
	      get: function () {
	        return validate(this, NAME)[SIZE];
	      }
	    });
	    return C;
	  },
	  def: function (that, key, value) {
	    var entry = getEntry(that, key);
	    var prev, index;
	    // change existing entry
	    if (entry) {
	      entry.v = value;
	    // create new entry
	    } else {
	      that._l = entry = {
	        i: index = fastKey(key, true), // <- index
	        k: key,                        // <- key
	        v: value,                      // <- value
	        p: prev = that._l,             // <- previous entry
	        n: undefined,                  // <- next entry
	        r: false                       // <- removed
	      };
	      if (!that._f) that._f = entry;
	      if (prev) prev.n = entry;
	      that[SIZE]++;
	      // add to index
	      if (index !== 'F') that._i[index] = entry;
	    } return that;
	  },
	  getEntry: getEntry,
	  setStrong: function (C, NAME, IS_MAP) {
	    // add .keys, .values, .entries, [@@iterator]
	    // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
	    $iterDefine(C, NAME, function (iterated, kind) {
	      this._t = validate(iterated, NAME); // target
	      this._k = kind;                     // kind
	      this._l = undefined;                // previous
	    }, function () {
	      var that = this;
	      var kind = that._k;
	      var entry = that._l;
	      // revert to the last existing entry
	      while (entry && entry.r) entry = entry.p;
	      // get next entry
	      if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {
	        // or finish the iteration
	        that._t = undefined;
	        return step(1);
	      }
	      // return step by kind
	      if (kind == 'keys') return step(0, entry.k);
	      if (kind == 'values') return step(0, entry.v);
	      return step(0, [entry.k, entry.v]);
	    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);

	    // add [@@species], 23.1.2.2, 23.2.2.2
	    setSpecies(NAME);
	  }
	};


/***/ }),

/***/ 227:
/***/ (function(module, exports, __webpack_require__) {

	var isObject = __webpack_require__(22);
	module.exports = function (it, TYPE) {
	  if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');
	  return it;
	};


/***/ }),

/***/ 228:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var global = __webpack_require__(13);
	var $export = __webpack_require__(17);
	var redefine = __webpack_require__(27);
	var redefineAll = __webpack_require__(224);
	var meta = __webpack_require__(31);
	var forOf = __webpack_require__(217);
	var anInstance = __webpack_require__(216);
	var isObject = __webpack_require__(22);
	var fails = __webpack_require__(16);
	var $iterDetect = __webpack_require__(176);
	var setToStringTag = __webpack_require__(33);
	var inheritIfRequired = __webpack_require__(97);

	module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {
	  var Base = global[NAME];
	  var C = Base;
	  var ADDER = IS_MAP ? 'set' : 'add';
	  var proto = C && C.prototype;
	  var O = {};
	  var fixMethod = function (KEY) {
	    var fn = proto[KEY];
	    redefine(proto, KEY,
	      KEY == 'delete' ? function (a) {
	        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
	      } : KEY == 'has' ? function has(a) {
	        return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
	      } : KEY == 'get' ? function get(a) {
	        return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
	      } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }
	        : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }
	    );
	  };
	  if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {
	    new C().entries().next();
	  }))) {
	    // create collection constructor
	    C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
	    redefineAll(C.prototype, methods);
	    meta.NEED = true;
	  } else {
	    var instance = new C();
	    // early implementations not supports chaining
	    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;
	    // V8 ~  Chromium 40- weak-collections throws on primitives, but should return false
	    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });
	    // most early implementations doesn't supports iterables, most modern - not close it correctly
	    var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new
	    // for early implementations -0 and +0 not the same
	    var BUGGY_ZERO = !IS_WEAK && fails(function () {
	      // V8 ~ Chromium 42- fails only with 5+ elements
	      var $instance = new C();
	      var index = 5;
	      while (index--) $instance[ADDER](index, index);
	      return !$instance.has(-0);
	    });
	    if (!ACCEPT_ITERABLES) {
	      C = wrapper(function (target, iterable) {
	        anInstance(target, C, NAME);
	        var that = inheritIfRequired(new Base(), target, C);
	        if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
	        return that;
	      });
	      C.prototype = proto;
	      proto.constructor = C;
	    }
	    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {
	      fixMethod('delete');
	      fixMethod('has');
	      IS_MAP && fixMethod('get');
	    }
	    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);
	    // weak collections should not contains .clear method
	    if (IS_WEAK && proto.clear) delete proto.clear;
	  }

	  setToStringTag(C, NAME);

	  O[NAME] = C;
	  $export($export.G + $export.W + $export.F * (C != Base), O);

	  if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);

	  return C;
	};


/***/ }),

/***/ 229:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var strong = __webpack_require__(226);
	var validate = __webpack_require__(227);
	var SET = 'Set';

	// 23.2 Set Objects
	module.exports = __webpack_require__(228)(SET, function (get) {
	  return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
	}, {
	  // 23.2.3.1 Set.prototype.add(value)
	  add: function add(value) {
	    return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);
	  }
	}, strong);


/***/ }),

/***/ 230:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var each = __webpack_require__(183)(0);
	var redefine = __webpack_require__(27);
	var meta = __webpack_require__(31);
	var assign = __webpack_require__(78);
	var weak = __webpack_require__(231);
	var isObject = __webpack_require__(22);
	var fails = __webpack_require__(16);
	var validate = __webpack_require__(227);
	var WEAK_MAP = 'WeakMap';
	var getWeak = meta.getWeak;
	var isExtensible = Object.isExtensible;
	var uncaughtFrozenStore = weak.ufstore;
	var tmp = {};
	var InternalMap;

	var wrapper = function (get) {
	  return function WeakMap() {
	    return get(this, arguments.length > 0 ? arguments[0] : undefined);
	  };
	};

	var methods = {
	  // 23.3.3.3 WeakMap.prototype.get(key)
	  get: function get(key) {
	    if (isObject(key)) {
	      var data = getWeak(key);
	      if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);
	      return data ? data[this._i] : undefined;
	    }
	  },
	  // 23.3.3.5 WeakMap.prototype.set(key, value)
	  set: function set(key, value) {
	    return weak.def(validate(this, WEAK_MAP), key, value);
	  }
	};

	// 23.3 WeakMap Objects
	var $WeakMap = module.exports = __webpack_require__(228)(WEAK_MAP, wrapper, methods, weak, true, true);

	// IE11 WeakMap frozen keys fix
	if (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {
	  InternalMap = weak.getConstructor(wrapper, WEAK_MAP);
	  assign(InternalMap.prototype, methods);
	  meta.NEED = true;
	  each(['delete', 'has', 'get', 'set'], function (key) {
	    var proto = $WeakMap.prototype;
	    var method = proto[key];
	    redefine(proto, key, function (a, b) {
	      // store frozen objects on internal weakmap shim
	      if (isObject(a) && !isExtensible(a)) {
	        if (!this._f) this._f = new InternalMap();
	        var result = this._f[key](a, b);
	        return key == 'set' ? this : result;
	      // store all the rest on native weakmap
	      } return method.call(this, a, b);
	    });
	  });
	}


/***/ }),

/***/ 231:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var redefineAll = __webpack_require__(224);
	var getWeak = __webpack_require__(31).getWeak;
	var anObject = __webpack_require__(21);
	var isObject = __webpack_require__(22);
	var anInstance = __webpack_require__(216);
	var forOf = __webpack_require__(217);
	var createArrayMethod = __webpack_require__(183);
	var $has = __webpack_require__(14);
	var validate = __webpack_require__(227);
	var arrayFind = createArrayMethod(5);
	var arrayFindIndex = createArrayMethod(6);
	var id = 0;

	// fallback for uncaught frozen keys
	var uncaughtFrozenStore = function (that) {
	  return that._l || (that._l = new UncaughtFrozenStore());
	};
	var UncaughtFrozenStore = function () {
	  this.a = [];
	};
	var findUncaughtFrozen = function (store, key) {
	  return arrayFind(store.a, function (it) {
	    return it[0] === key;
	  });
	};
	UncaughtFrozenStore.prototype = {
	  get: function (key) {
	    var entry = findUncaughtFrozen(this, key);
	    if (entry) return entry[1];
	  },
	  has: function (key) {
	    return !!findUncaughtFrozen(this, key);
	  },
	  set: function (key, value) {
	    var entry = findUncaughtFrozen(this, key);
	    if (entry) entry[1] = value;
	    else this.a.push([key, value]);
	  },
	  'delete': function (key) {
	    var index = arrayFindIndex(this.a, function (it) {
	      return it[0] === key;
	    });
	    if (~index) this.a.splice(index, 1);
	    return !!~index;
	  }
	};

	module.exports = {
	  getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {
	    var C = wrapper(function (that, iterable) {
	      anInstance(that, C, NAME, '_i');
	      that._t = NAME;      // collection type
	      that._i = id++;      // collection id
	      that._l = undefined; // leak store for uncaught frozen objects
	      if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);
	    });
	    redefineAll(C.prototype, {
	      // 23.3.3.2 WeakMap.prototype.delete(key)
	      // 23.4.3.3 WeakSet.prototype.delete(value)
	      'delete': function (key) {
	        if (!isObject(key)) return false;
	        var data = getWeak(key);
	        if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);
	        return data && $has(data, this._i) && delete data[this._i];
	      },
	      // 23.3.3.4 WeakMap.prototype.has(key)
	      // 23.4.3.4 WeakSet.prototype.has(value)
	      has: function has(key) {
	        if (!isObject(key)) return false;
	        var data = getWeak(key);
	        if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);
	        return data && $has(data, this._i);
	      }
	    });
	    return C;
	  },
	  def: function (that, key, value) {
	    var data = getWeak(anObject(key), true);
	    if (data === true) uncaughtFrozenStore(that).set(key, value);
	    else data[that._i] = value;
	    return that;
	  },
	  ufstore: uncaughtFrozenStore
	};


/***/ }),

/***/ 232:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var weak = __webpack_require__(231);
	var validate = __webpack_require__(227);
	var WEAK_SET = 'WeakSet';

	// 23.4 WeakSet Objects
	__webpack_require__(228)(WEAK_SET, function (get) {
	  return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };
	}, {
	  // 23.4.3.1 WeakSet.prototype.add(value)
	  add: function add(value) {
	    return weak.def(validate(this, WEAK_SET), value, true);
	  }
	}, weak, false, true);


/***/ }),

/***/ 233:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var $export = __webpack_require__(17);
	var $typed = __webpack_require__(234);
	var buffer = __webpack_require__(235);
	var anObject = __webpack_require__(21);
	var toAbsoluteIndex = __webpack_require__(48);
	var toLength = __webpack_require__(46);
	var isObject = __webpack_require__(22);
	var ArrayBuffer = __webpack_require__(13).ArrayBuffer;
	var speciesConstructor = __webpack_require__(218);
	var $ArrayBuffer = buffer.ArrayBuffer;
	var $DataView = buffer.DataView;
	var $isView = $typed.ABV && ArrayBuffer.isView;
	var $slice = $ArrayBuffer.prototype.slice;
	var VIEW = $typed.VIEW;
	var ARRAY_BUFFER = 'ArrayBuffer';

	$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });

	$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {
	  // 24.1.3.1 ArrayBuffer.isView(arg)
	  isView: function isView(it) {
	    return $isView && $isView(it) || isObject(it) && VIEW in it;
	  }
	});

	$export($export.P + $export.U + $export.F * __webpack_require__(16)(function () {
	  return !new $ArrayBuffer(2).slice(1, undefined).byteLength;
	}), ARRAY_BUFFER, {
	  // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)
	  slice: function slice(start, end) {
	    if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix
	    var len = anObject(this).byteLength;
	    var first = toAbsoluteIndex(start, len);
	    var final = toAbsoluteIndex(end === undefined ? len : end, len);
	    var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first));
	    var viewS = new $DataView(this);
	    var viewT = new $DataView(result);
	    var index = 0;
	    while (first < final) {
	      viewT.setUint8(index++, viewS.getUint8(first++));
	    } return result;
	  }
	});

	__webpack_require__(203)(ARRAY_BUFFER);


/***/ }),

/***/ 234:
/***/ (function(module, exports, __webpack_require__) {

	var global = __webpack_require__(13);
	var hide = __webpack_require__(19);
	var uid = __webpack_require__(28);
	var TYPED = uid('typed_array');
	var VIEW = uid('view');
	var ABV = !!(global.ArrayBuffer && global.DataView);
	var CONSTR = ABV;
	var i = 0;
	var l = 9;
	var Typed;

	var TypedArrayConstructors = (
	  'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'
	).split(',');

	while (i < l) {
	  if (Typed = global[TypedArrayConstructors[i++]]) {
	    hide(Typed.prototype, TYPED, true);
	    hide(Typed.prototype, VIEW, true);
	  } else CONSTR = false;
	}

	module.exports = {
	  ABV: ABV,
	  CONSTR: CONSTR,
	  TYPED: TYPED,
	  VIEW: VIEW
	};


/***/ }),

/***/ 235:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	var global = __webpack_require__(13);
	var DESCRIPTORS = __webpack_require__(15);
	var LIBRARY = __webpack_require__(37);
	var $typed = __webpack_require__(234);
	var hide = __webpack_require__(19);
	var redefineAll = __webpack_require__(224);
	var fails = __webpack_require__(16);
	var anInstance = __webpack_require__(216);
	var toInteger = __webpack_require__(47);
	var toLength = __webpack_require__(46);
	var toIndex = __webpack_require__(236);
	var gOPN = __webpack_require__(59).f;
	var dP = __webpack_require__(20).f;
	var arrayFill = __webpack_require__(199);
	var setToStringTag = __webpack_require__(33);
	var ARRAY_BUFFER = 'ArrayBuffer';
	var DATA_VIEW = 'DataView';
	var PROTOTYPE = 'prototype';
	var WRONG_LENGTH = 'Wrong length!';
	var WRONG_INDEX = 'Wrong index!';
	var $ArrayBuffer = global[ARRAY_BUFFER];
	var $DataView = global[DATA_VIEW];
	var Math = global.Math;
	var RangeError = global.RangeError;
	// eslint-disable-next-line no-shadow-restricted-names
	var Infinity = global.Infinity;
	var BaseBuffer = $ArrayBuffer;
	var abs = Math.abs;
	var pow = Math.pow;
	var floor = Math.floor;
	var log = Math.log;
	var LN2 = Math.LN2;
	var BUFFER = 'buffer';
	var BYTE_LENGTH = 'byteLength';
	var BYTE_OFFSET = 'byteOffset';
	var $BUFFER = DESCRIPTORS ? '_b' : BUFFER;
	var $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;
	var $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;

	// IEEE754 conversions based on https://github.com/feross/ieee754
	function packIEEE754(value, mLen, nBytes) {
	  var buffer = Array(nBytes);
	  var eLen = nBytes * 8 - mLen - 1;
	  var eMax = (1 << eLen) - 1;
	  var eBias = eMax >> 1;
	  var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;
	  var i = 0;
	  var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
	  var e, m, c;
	  value = abs(value);
	  // eslint-disable-next-line no-self-compare
	  if (value != value || value === Infinity) {
	    // eslint-disable-next-line no-self-compare
	    m = value != value ? 1 : 0;
	    e = eMax;
	  } else {
	    e = floor(log(value) / LN2);
	    if (value * (c = pow(2, -e)) < 1) {
	      e--;
	      c *= 2;
	    }
	    if (e + eBias >= 1) {
	      value += rt / c;
	    } else {
	      value += rt * pow(2, 1 - eBias);
	    }
	    if (value * c >= 2) {
	      e++;
	      c /= 2;
	    }
	    if (e + eBias >= eMax) {
	      m = 0;
	      e = eMax;
	    } else if (e + eBias >= 1) {
	      m = (value * c - 1) * pow(2, mLen);
	      e = e + eBias;
	    } else {
	      m = value * pow(2, eBias - 1) * pow(2, mLen);
	      e = 0;
	    }
	  }
	  for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);
	  e = e << mLen | m;
	  eLen += mLen;
	  for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);
	  buffer[--i] |= s * 128;
	  return buffer;
	}
	function unpackIEEE754(buffer, mLen, nBytes) {
	  var eLen = nBytes * 8 - mLen - 1;
	  var eMax = (1 << eLen) - 1;
	  var eBias = eMax >> 1;
	  var nBits = eLen - 7;
	  var i = nBytes - 1;
	  var s = buffer[i--];
	  var e = s & 127;
	  var m;
	  s >>= 7;
	  for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);
	  m = e & (1 << -nBits) - 1;
	  e >>= -nBits;
	  nBits += mLen;
	  for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);
	  if (e === 0) {
	    e = 1 - eBias;
	  } else if (e === eMax) {
	    return m ? NaN : s ? -Infinity : Infinity;
	  } else {
	    m = m + pow(2, mLen);
	    e = e - eBias;
	  } return (s ? -1 : 1) * m * pow(2, e - mLen);
	}

	function unpackI32(bytes) {
	  return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];
	}
	function packI8(it) {
	  return [it & 0xff];
	}
	function packI16(it) {
	  return [it & 0xff, it >> 8 & 0xff];
	}
	function packI32(it) {
	  return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];
	}
	function packF64(it) {
	  return packIEEE754(it, 52, 8);
	}
	function packF32(it) {
	  return packIEEE754(it, 23, 4);
	}

	function addGetter(C, key, internal) {
	  dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });
	}

	function get(view, bytes, index, isLittleEndian) {
	  var numIndex = +index;
	  var intIndex = toIndex(numIndex);
	  if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);
	  var store = view[$BUFFER]._b;
	  var start = intIndex + view[$OFFSET];
	  var pack = store.slice(start, start + bytes);
	  return isLittleEndian ? pack : pack.reverse();
	}
	function set(view, bytes, index, conversion, value, isLittleEndian) {
	  var numIndex = +index;
	  var intIndex = toIndex(numIndex);
	  if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);
	  var store = view[$BUFFER]._b;
	  var start = intIndex + view[$OFFSET];
	  var pack = conversion(+value);
	  for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];
	}

	if (!$typed.ABV) {
	  $ArrayBuffer = function ArrayBuffer(length) {
	    anInstance(this, $ArrayBuffer, ARRAY_BUFFER);
	    var byteLength = toIndex(length);
	    this._b = arrayFill.call(Array(byteLength), 0);
	    this[$LENGTH] = byteLength;
	  };

	  $DataView = function DataView(buffer, byteOffset, byteLength) {
	    anInstance(this, $DataView, DATA_VIEW);
	    anInstance(buffer, $ArrayBuffer, DATA_VIEW);
	    var bufferLength = buffer[$LENGTH];
	    var offset = toInteger(byteOffset);
	    if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');
	    byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
	    if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);
	    this[$BUFFER] = buffer;
	    this[$OFFSET] = offset;
	    this[$LENGTH] = byteLength;
	  };

	  if (DESCRIPTORS) {
	    addGetter($ArrayBuffer, BYTE_LENGTH, '_l');
	    addGetter($DataView, BUFFER, '_b');
	    addGetter($DataView, BYTE_LENGTH, '_l');
	    addGetter($DataView, BYTE_OFFSET, '_o');
	  }

	  redefineAll($DataView[PROTOTYPE], {
	    getInt8: function getInt8(byteOffset) {
	      return get(this, 1, byteOffset)[0] << 24 >> 24;
	    },
	    getUint8: function getUint8(byteOffset) {
	      return get(this, 1, byteOffset)[0];
	    },
	    getInt16: function getInt16(byteOffset /* , littleEndian */) {
	      var bytes = get(this, 2, byteOffset, arguments[1]);
	      return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
	    },
	    getUint16: function getUint16(byteOffset /* , littleEndian */) {
	      var bytes = get(this, 2, byteOffset, arguments[1]);
	      return bytes[1] << 8 | bytes[0];
	    },
	    getInt32: function getInt32(byteOffset /* , littleEndian */) {
	      return unpackI32(get(this, 4, byteOffset, arguments[1]));
	    },
	    getUint32: function getUint32(byteOffset /* , littleEndian */) {
	      return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;
	    },
	    getFloat32: function getFloat32(byteOffset /* , littleEndian */) {
	      return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);
	    },
	    getFloat64: function getFloat64(byteOffset /* , littleEndian */) {
	      return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);
	    },
	    setInt8: function setInt8(byteOffset, value) {
	      set(this, 1, byteOffset, packI8, value);
	    },
	    setUint8: function setUint8(byteOffset, value) {
	      set(this, 1, byteOffset, packI8, value);
	    },
	    setInt16: function setInt16(byteOffset, value /* , littleEndian */) {
	      set(this, 2, byteOffset, packI16, value, arguments[2]);
	    },
	    setUint16: function setUint16(byteOffset, value /* , littleEndian */) {
	      set(this, 2, byteOffset, packI16, value, arguments[2]);
	    },
	    setInt32: function setInt32(byteOffset, value /* , littleEndian */) {
	      set(this, 4, byteOffset, packI32, value, arguments[2]);
	    },
	    setUint32: function setUint32(byteOffset, value /* , littleEndian */) {
	      set(this, 4, byteOffset, packI32, value, arguments[2]);
	    },
	    setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {
	      set(this, 4, byteOffset, packF32, value, arguments[2]);
	    },
	    setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {
	      set(this, 8, byteOffset, packF64, value, arguments[2]);
	    }
	  });
	} else {
	  if (!fails(function () {
	    $ArrayBuffer(1);
	  }) || !fails(function () {
	    new $ArrayBuffer(-1); // eslint-disable-line no-new
	  }) || fails(function () {
	    new $ArrayBuffer(); // eslint-disable-line no-new
	    new $ArrayBuffer(1.5); // eslint-disable-line no-new
	    new $ArrayBuffer(NaN); // eslint-disable-line no-new
	    return $ArrayBuffer.name != ARRAY_BUFFER;
	  })) {
	    $ArrayBuffer = function ArrayBuffer(length) {
	      anInstance(this, $ArrayBuffer);
	      return new BaseBuffer(toIndex(length));
	    };
	    var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];
	    for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {
	      if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);
	    }
	    if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;
	  }
	  // iOS Safari 7.x bug
	  var view = new $DataView(new $ArrayBuffer(2));
	  var $setInt8 = $DataView[PROTOTYPE].setInt8;
	  view.setInt8(0, 2147483648);
	  view.setInt8(1, 2147483649);
	  if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {
	    setInt8: function setInt8(byteOffset, value) {
	      $setInt8.call(this, byteOffset, value << 24 >> 24);
	    },
	    setUint8: function setUint8(byteOffset, value) {
	      $setInt8.call(this, byteOffset, value << 24 >> 24);
	    }
	  }, true);
	}
	setToStringTag($ArrayBuffer, ARRAY_BUFFER);
	setToStringTag($DataView, DATA_VIEW);
	hide($DataView[PROTOTYPE], $typed.VIEW, true);
	exports[ARRAY_BUFFER] = $ArrayBuffer;
	exports[DATA_VIEW] = $DataView;


/***/ }),

/***/ 236:
/***/ (function(module, exports, __webpack_require__) {

	// https://tc39.github.io/ecma262/#sec-toindex
	var toInteger = __webpack_require__(47);
	var toLength = __webpack_require__(46);
	module.exports = function (it) {
	  if (it === undefined) return 0;
	  var number = toInteger(it);
	  var length = toLength(number);
	  if (number !== length) throw RangeError('Wrong length!');
	  return length;
	};


/***/ }),

/***/ 237:
/***/ (function(module, exports, __webpack_require__) {

	var $export = __webpack_require__(17);
	$export($export.G + $export.W + $export.F * !__webpack_require__(234).ABV, {
	  DataView: __webpack_require__(235).DataView
	});


/***/ }),

/***/ 238:
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(239)('Int8', 1, function (init) {
	  return function Int8Array(data, byteOffset, length) {
	    return init(this, data, byteOffset, length);
	  };
	});


/***/ }),

/***/ 239:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	if (__webpack_require__(15)) {
	  var LIBRARY = __webpack_require__(37);
	  var global = __webpack_require__(13);
	  var fails = __webpack_require__(16);
	  var $export = __webpack_require__(17);
	  var $typed = __webpack_require__(234);
	  var $buffer = __webpack_require__(235);
	  var ctx = __webpack_require__(29);
	  var anInstance = __webpack_require__(216);
	  var propertyDesc = __webpack_require__(26);
	  var hide = __webpack_require__(19);
	  var redefineAll = __webpack_require__(224);
	  var toInteger = __webpack_require__(47);
	  var toLength = __webpack_require__(46);
	  var toIndex = __webpack_require__(236);
	  var toAbsoluteIndex = __webpack_require__(48);
	  var toPrimitive = __webpack_require__(25);
	  var has = __webpack_require__(14);
	  var classof = __webpack_require__(84);
	  var isObject = __webpack_require__(22);
	  var toObject = __webpack_require__(67);
	  var isArrayIter = __webpack_require__(173);
	  var create = __webpack_require__(55);
	  var getPrototypeOf = __webpack_require__(68);
	  var gOPN = __webpack_require__(59).f;
	  var getIterFn = __webpack_require__(175);
	  var uid = __webpack_require__(28);
	  var wks = __webpack_require__(34);
	  var createArrayMethod = __webpack_require__(183);
	  var createArrayIncludes = __webpack_require__(45);
	  var speciesConstructor = __webpack_require__(218);
	  var ArrayIterators = __webpack_require__(204);
	  var Iterators = __webpack_require__(139);
	  var $iterDetect = __webpack_require__(176);
	  var setSpecies = __webpack_require__(203);
	  var arrayFill = __webpack_require__(199);
	  var arrayCopyWithin = __webpack_require__(196);
	  var $DP = __webpack_require__(20);
	  var $GOPD = __webpack_require__(60);
	  var dP = $DP.f;
	  var gOPD = $GOPD.f;
	  var RangeError = global.RangeError;
	  var TypeError = global.TypeError;
	  var Uint8Array = global.Uint8Array;
	  var ARRAY_BUFFER = 'ArrayBuffer';
	  var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;
	  var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';
	  var PROTOTYPE = 'prototype';
	  var ArrayProto = Array[PROTOTYPE];
	  var $ArrayBuffer = $buffer.ArrayBuffer;
	  var $DataView = $buffer.DataView;
	  var arrayForEach = createArrayMethod(0);
	  var arrayFilter = createArrayMethod(2);
	  var arraySome = createArrayMethod(3);
	  var arrayEvery = createArrayMethod(4);
	  var arrayFind = createArrayMethod(5);
	  var arrayFindIndex = createArrayMethod(6);
	  var arrayIncludes = createArrayIncludes(true);
	  var arrayIndexOf = createArrayIncludes(false);
	  var arrayValues = ArrayIterators.values;
	  var arrayKeys = ArrayIterators.keys;
	  var arrayEntries = ArrayIterators.entries;
	  var arrayLastIndexOf = ArrayProto.lastIndexOf;
	  var arrayReduce = ArrayProto.reduce;
	  var arrayReduceRight = ArrayProto.reduceRight;
	  var arrayJoin = ArrayProto.join;
	  var arraySort = ArrayProto.sort;
	  var arraySlice = ArrayProto.slice;
	  var arrayToString = ArrayProto.toString;
	  var arrayToLocaleString = ArrayProto.toLocaleString;
	  var ITERATOR = wks('iterator');
	  var TAG = wks('toStringTag');
	  var TYPED_CONSTRUCTOR = uid('typed_constructor');
	  var DEF_CONSTRUCTOR = uid('def_constructor');
	  var ALL_CONSTRUCTORS = $typed.CONSTR;
	  var TYPED_ARRAY = $typed.TYPED;
	  var VIEW = $typed.VIEW;
	  var WRONG_LENGTH = 'Wrong length!';

	  var $map = createArrayMethod(1, function (O, length) {
	    return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);
	  });

	  var LITTLE_ENDIAN = fails(function () {
	    // eslint-disable-next-line no-undef
	    return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
	  });

	  var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {
	    new Uint8Array(1).set({});
	  });

	  var toOffset = function (it, BYTES) {
	    var offset = toInteger(it);
	    if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');
	    return offset;
	  };

	  var validate = function (it) {
	    if (isObject(it) && TYPED_ARRAY in it) return it;
	    throw TypeError(it + ' is not a typed array!');
	  };

	  var allocate = function (C, length) {
	    if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {
	      throw TypeError('It is not a typed array constructor!');
	    } return new C(length);
	  };

	  var speciesFromList = function (O, list) {
	    return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);
	  };

	  var fromList = function (C, list) {
	    var index = 0;
	    var length = list.length;
	    var result = allocate(C, length);
	    while (length > index) result[index] = list[index++];
	    return result;
	  };

	  var addGetter = function (it, key, internal) {
	    dP(it, key, { get: function () { return this._d[internal]; } });
	  };

	  var $from = function from(source /* , mapfn, thisArg */) {
	    var O = toObject(source);
	    var aLen = arguments.length;
	    var mapfn = aLen > 1 ? arguments[1] : undefined;
	    var mapping = mapfn !== undefined;
	    var iterFn = getIterFn(O);
	    var i, length, values, result, step, iterator;
	    if (iterFn != undefined && !isArrayIter(iterFn)) {
	      for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {
	        values.push(step.value);
	      } O = values;
	    }
	    if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);
	    for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {
	      result[i] = mapping ? mapfn(O[i], i) : O[i];
	    }
	    return result;
	  };

	  var $of = function of(/* ...items */) {
	    var index = 0;
	    var length = arguments.length;
	    var result = allocate(this, length);
	    while (length > index) result[index] = arguments[index++];
	    return result;
	  };

	  // iOS Safari 6.x fails here
	  var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });

	  var $toLocaleString = function toLocaleString() {
	    return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);
	  };

	  var proto = {
	    copyWithin: function copyWithin(target, start /* , end */) {
	      return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
	    },
	    every: function every(callbackfn /* , thisArg */) {
	      return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
	    },
	    fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars
	      return arrayFill.apply(validate(this), arguments);
	    },
	    filter: function filter(callbackfn /* , thisArg */) {
	      return speciesFromList(this, arrayFilter(validate(this), callbackfn,
	        arguments.length > 1 ? arguments[1] : undefined));
	    },
	    find: function find(predicate /* , thisArg */) {
	      return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
	    },
	    findIndex: function findIndex(predicate /* , thisArg */) {
	      return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
	    },
	    forEach: function forEach(callbackfn /* , thisArg */) {
	      arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
	    },
	    indexOf: function indexOf(searchElement /* , fromIndex */) {
	      return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
	    },
	    includes: function includes(searchElement /* , fromIndex */) {
	      return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
	    },
	    join: function join(separator) { // eslint-disable-line no-unused-vars
	      return arrayJoin.apply(validate(this), arguments);
	    },
	    lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars
	      return arrayLastIndexOf.apply(validate(this), arguments);
	    },
	    map: function map(mapfn /* , thisArg */) {
	      return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);
	    },
	    reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars
	      return arrayReduce.apply(validate(this), arguments);
	    },
	    reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars
	      return arrayReduceRight.apply(validate(this), arguments);
	    },
	    reverse: function reverse() {
	      var that = this;
	      var length = validate(that).length;
	      var middle = Math.floor(length / 2);
	      var index = 0;
	      var value;
	      while (index < middle) {
	        value = that[index];
	        that[index++] = that[--length];
	        that[length] = value;
	      } return that;
	    },
	    some: function some(callbackfn /* , thisArg */) {
	      return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
	    },
	    sort: function sort(comparefn) {
	      return arraySort.call(validate(this), comparefn);
	    },
	    subarray: function subarray(begin, end) {
	      var O = validate(this);
	      var length = O.length;
	      var $begin = toAbsoluteIndex(begin, length);
	      return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(
	        O.buffer,
	        O.byteOffset + $begin * O.BYTES_PER_ELEMENT,
	        toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)
	      );
	    }
	  };

	  var $slice = function slice(start, end) {
	    return speciesFromList(this, arraySlice.call(validate(this), start, end));
	  };

	  var $set = function set(arrayLike /* , offset */) {
	    validate(this);
	    var offset = toOffset(arguments[1], 1);
	    var length = this.length;
	    var src = toObject(arrayLike);
	    var len = toLength(src.length);
	    var index = 0;
	    if (len + offset > length) throw RangeError(WRONG_LENGTH);
	    while (index < len) this[offset + index] = src[index++];
	  };

	  var $iterators = {
	    entries: function entries() {
	      return arrayEntries.call(validate(this));
	    },
	    keys: function keys() {
	      return arrayKeys.call(validate(this));
	    },
	    values: function values() {
	      return arrayValues.call(validate(this));
	    }
	  };

	  var isTAIndex = function (target, key) {
	    return isObject(target)
	      && target[TYPED_ARRAY]
	      && typeof key != 'symbol'
	      && key in target
	      && String(+key) == String(key);
	  };
	  var $getDesc = function getOwnPropertyDescriptor(target, key) {
	    return isTAIndex(target, key = toPrimitive(key, true))
	      ? propertyDesc(2, target[key])
	      : gOPD(target, key);
	  };
	  var $setDesc = function defineProperty(target, key, desc) {
	    if (isTAIndex(target, key = toPrimitive(key, true))
	      && isObject(desc)
	      && has(desc, 'value')
	      && !has(desc, 'get')
	      && !has(desc, 'set')
	      // TODO: add validation descriptor w/o calling accessors
	      && !desc.configurable
	      && (!has(desc, 'writable') || desc.writable)
	      && (!has(desc, 'enumerable') || desc.enumerable)
	    ) {
	      target[key] = desc.value;
	      return target;
	    } return dP(target, key, desc);
	  };

	  if (!ALL_CONSTRUCTORS) {
	    $GOPD.f = $getDesc;
	    $DP.f = $setDesc;
	  }

	  $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {
	    getOwnPropertyDescriptor: $getDesc,
	    defineProperty: $setDesc
	  });

	  if (fails(function () { arrayToString.call({}); })) {
	    arrayToString = arrayToLocaleString = function toString() {
	      return arrayJoin.call(this);
	    };
	  }

	  var $TypedArrayPrototype$ = redefineAll({}, proto);
	  redefineAll($TypedArrayPrototype$, $iterators);
	  hide($TypedArrayPrototype$, ITERATOR, $iterators.values);
	  redefineAll($TypedArrayPrototype$, {
	    slice: $slice,
	    set: $set,
	    constructor: function () { /* noop */ },
	    toString: arrayToString,
	    toLocaleString: $toLocaleString
	  });
	  addGetter($TypedArrayPrototype$, 'buffer', 'b');
	  addGetter($TypedArrayPrototype$, 'byteOffset', 'o');
	  addGetter($TypedArrayPrototype$, 'byteLength', 'l');
	  addGetter($TypedArrayPrototype$, 'length', 'e');
	  dP($TypedArrayPrototype$, TAG, {
	    get: function () { return this[TYPED_ARRAY]; }
	  });

	  // eslint-disable-next-line max-statements
	  module.exports = function (KEY, BYTES, wrapper, CLAMPED) {
	    CLAMPED = !!CLAMPED;
	    var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';
	    var GETTER = 'get' + KEY;
	    var SETTER = 'set' + KEY;
	    var TypedArray = global[NAME];
	    var Base = TypedArray || {};
	    var TAC = TypedArray && getPrototypeOf(TypedArray);
	    var FORCED = !TypedArray || !$typed.ABV;
	    var O = {};
	    var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];
	    var getter = function (that, index) {
	      var data = that._d;
	      return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);
	    };
	    var setter = function (that, index, value) {
	      var data = that._d;
	      if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;
	      data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);
	    };
	    var addElement = function (that, index) {
	      dP(that, index, {
	        get: function () {
	          return getter(this, index);
	        },
	        set: function (value) {
	          return setter(this, index, value);
	        },
	        enumerable: true
	      });
	    };
	    if (FORCED) {
	      TypedArray = wrapper(function (that, data, $offset, $length) {
	        anInstance(that, TypedArray, NAME, '_d');
	        var index = 0;
	        var offset = 0;
	        var buffer, byteLength, length, klass;
	        if (!isObject(data)) {
	          length = toIndex(data);
	          byteLength = length * BYTES;
	          buffer = new $ArrayBuffer(byteLength);
	        } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {
	          buffer = data;
	          offset = toOffset($offset, BYTES);
	          var $len = data.byteLength;
	          if ($length === undefined) {
	            if ($len % BYTES) throw RangeError(WRONG_LENGTH);
	            byteLength = $len - offset;
	            if (byteLength < 0) throw RangeError(WRONG_LENGTH);
	          } else {
	            byteLength = toLength($length) * BYTES;
	            if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);
	          }
	          length = byteLength / BYTES;
	        } else if (TYPED_ARRAY in data) {
	          return fromList(TypedArray, data);
	        } else {
	          return $from.call(TypedArray, data);
	        }
	        hide(that, '_d', {
	          b: buffer,
	          o: offset,
	          l: byteLength,
	          e: length,
	          v: new $DataView(buffer)
	        });
	        while (index < length) addElement(that, index++);
	      });
	      TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);
	      hide(TypedArrayPrototype, 'constructor', TypedArray);
	    } else if (!fails(function () {
	      TypedArray(1);
	    }) || !fails(function () {
	      new TypedArray(-1); // eslint-disable-line no-new
	    }) || !$iterDetect(function (iter) {
	      new TypedArray(); // eslint-disable-line no-new
	      new TypedArray(null); // eslint-disable-line no-new
	      new TypedArray(1.5); // eslint-disable-line no-new
	      new TypedArray(iter); // eslint-disable-line no-new
	    }, true)) {
	      TypedArray = wrapper(function (that, data, $offset, $length) {
	        anInstance(that, TypedArray, NAME);
	        var klass;
	        // `ws` module bug, temporarily remove validation length for Uint8Array
	        // https://github.com/websockets/ws/pull/645
	        if (!isObject(data)) return new Base(toIndex(data));
	        if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {
	          return $length !== undefined
	            ? new Base(data, toOffset($offset, BYTES), $length)
	            : $offset !== undefined
	              ? new Base(data, toOffset($offset, BYTES))
	              : new Base(data);
	        }
	        if (TYPED_ARRAY in data) return fromList(TypedArray, data);
	        return $from.call(TypedArray, data);
	      });
	      arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {
	        if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);
	      });
	      TypedArray[PROTOTYPE] = TypedArrayPrototype;
	      if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;
	    }
	    var $nativeIterator = TypedArrayPrototype[ITERATOR];
	    var CORRECT_ITER_NAME = !!$nativeIterator
	      && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);
	    var $iterator = $iterators.values;
	    hide(TypedArray, TYPED_CONSTRUCTOR, true);
	    hide(TypedArrayPrototype, TYPED_ARRAY, NAME);
	    hide(TypedArrayPrototype, VIEW, true);
	    hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);

	    if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {
	      dP(TypedArrayPrototype, TAG, {
	        get: function () { return NAME; }
	      });
	    }

	    O[NAME] = TypedArray;

	    $export($export.G + $export.W + $export.F * (TypedArray != Base), O);

	    $export($export.S, NAME, {
	      BYTES_PER_ELEMENT: BYTES
	    });

	    $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {
	      from: $from,
	      of: $of
	    });

	    if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);

	    $export($export.P, NAME, proto);

	    setSpecies(NAME);

	    $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });

	    $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);

	    if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;

	    $export($export.P + $export.F * fails(function () {
	      new TypedArray(1).slice();
	    }), NAME, { slice: $slice });

	    $export($export.P + $export.F * (fails(function () {
	      return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();
	    }) || !fails(function () {
	      TypedArrayPrototype.toLocaleString.call([1, 2]);
	    })), NAME, { toLocaleString: $toLocaleString });

	    Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;
	    if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);
	  };
	} else module.exports = function () { /* empty */ };


/***/ }),

/***/ 240:
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(239)('Uint8', 1, function (init) {
	  return function Uint8Array(data, byteOffset, length) {
	    return init(this, data, byteOffset, length);
	  };
	});


/***/ }),

/***/ 241:
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(239)('Uint8', 1, function (init) {
	  return function Uint8ClampedArray(data, byteOffset, length) {
	    return init(this, data, byteOffset, length);
	  };
	}, true);


/***/ }),

/***/ 242:
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(239)('Int16', 2, function (init) {
	  return function Int16Array(data, byteOffset, length) {
	    return init(this, data, byteOffset, length);
	  };
	});


/***/ }),

/***/ 243:
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(239)('Uint16', 2, function (init) {
	  return function Uint16Array(data, byteOffset, length) {
	    return init(this, data, byteOffset, length);
	  };
	});


/***/ }),

/***/ 244:
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(239)('Int32', 4, function (init) {
	  return function Int32Array(data, byteOffset, length) {
	    return init(this, data, byteOffset, length);
	  };
	});


/***/ }),

/***/ 245:
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(239)('Uint32', 4, function (init) {
	  return function Uint32Array(data, byteOffset, length) {
	    return init(this, data, byteOffset, length);
	  };
	});


/***/ }),

/***/ 246:
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(239)('Float32', 4, function (init) {
	  return function Float32Array(data, byteOffset, length) {
	    return init(this, data, byteOffset, length);
	  };
	});


/***/ }),

/***/ 247:
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__(239)('Float64', 8, function (init) {
	  return function Float64Array(data, byteOffset, length) {
	    return init(this, data, byteOffset, length);
	  };
	});


/***/ }),

/***/ 248:
/***/ (function(module, exports, __webpack_require__) {

	// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
	var $export = __webpack_require__(17);
	var aFunction = __webpack_require__(30);
	var anObject = __webpack_require__(21);
	var rApply = (__webpack_require__(13).Reflect || {}).apply;
	var fApply = Function.apply;
	// MS Edge argumentsList argument is optional
	$export($export.S + $export.F * !__webpack_require__(16)(function () {
	  rApply(function () { /* empty */ });
	}), 'Reflect', {
	  apply: function apply(target, thisArgument, argumentsList) {
	    var T = aFunction(target);
	    var L = anObject(argumentsList);
	    return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);
	  }
	});


/***/ }),

/***/ 249:
/***/ (function(module, exports, __webpack_require__) {

	// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
	var $export = __webpack_require__(17);
	var create = __webpack_require__(55);
	var aFunction = __webpack_require__(30);
	var anObject = __webpack_require__(21);
	var isObject = __webpack_require__(22);
	var fails = __webpack_require__(16);
	var bind = __webpack_require__(86);
	var rConstruct = (__webpack_require__(13).Reflect || {}).construct;

	// MS Edge supports only 2 arguments and argumentsList argument is optional
	// FF Nightly sets third argument as `new.target`, but does not create `this` from it
	var NEW_TARGET_BUG = fails(function () {
	  function F() { /* empty */ }
	  return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);
	});
	var ARGS_BUG = !fails(function () {
	  rConstruct(function () { /* empty */ });
	});

	$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {
	  construct: function construct(Target, args /* , newTarget */) {
	    aFunction(Target);
	    anObject(args);
	    var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
	    if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);
	    if (Target == newTarget) {
	      // w/o altered newTarget, optimization for 0-4 arguments
	      switch (args.length) {
	        case 0: return new Target();
	        case 1: return new Target(args[0]);
	        case 2: return new Target(args[0], args[1]);
	        case 3: return new Target(args[0], args[1], args[2]);
	        case 4: return new Target(args[0], args[1], args[2], args[3]);
	      }
	      // w/o altered newTarget, lot of arguments case
	      var $args = [null];
	      $args.push.apply($args, args);
	      return new (bind.apply(Target, $args))();
	    }
	    // with altered newTarget, not support built-in constructors
	    var proto = newTarget.prototype;
	    var instance = create(isObject(proto) ? proto : Object.prototype);
	    var result = Function.apply.call(Target, instance, args);
	    return isObject(result) ? result : instance;
	  }
	});


/***/ }),

/***/ 250:
/***/ (function(module, exports, __webpack_require__) {

	// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)
	var dP = __webpack_require__(20);
	var $export = __webpack_require__(17);
	var anObject = __webpack_require__(21);
	var toPrimitive = __webpack_require__(25);

	// MS Edge has broken Reflect.defineProperty - throwing instead of returning false
	$export($export.S + $export.F * __webpack_require__(16)(function () {
	  // eslint-disable-next-line no-undef
	  Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });
	}), 'Reflect', {
	  defineProperty: function defineProperty(target, propertyKey, attributes) {
	    anObject(target);
	    propertyKey = toPrimitive(propertyKey, true);
	    anObject(attributes);
	    try {
	      dP.f(target, propertyKey, attributes);
	      return true;
	    } catch (e) {
	      return false;
	    }
	  }
	});


/***/ }),

/***/ 251:
/***/ (function(module, exports, __webpack_require__) {

	// 26.1.4 Reflect.deleteProperty(target, propertyKey)
	var $export = __webpack_require__(17);
	var gOPD = __webpack_require__(60).f;
	var anObject = __webpack_require__(21);

	$export($export.S, 'Reflect', {
	  deleteProperty: function deleteProperty(target, propertyKey) {
	    var desc = gOPD(anObject(target), propertyKey);
	    return desc && !desc.configurable ? false : delete target[propertyKey];
	  }
	});


/***/ }),

/***/ 252:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';
	// 26.1.5 Reflect.enumerate(target)
	var $export = __webpack_require__(17);
	var anObject = __webpack_require__(21);
	var Enumerate = function (iterated) {
	  this._t = anObject(iterated); // target
	  this._i = 0;                  // next index
	  var keys = this._k = [];      // keys
	  var key;
	  for (key in iterated) keys.push(key);
	};
	__webpack_require__(140)(Enumerate, 'Object', function () {
	  var that = this;
	  var keys = that._k;
	  var key;
	  do {
	    if (that._i >= keys.length) return { value: undefined, done: true };
	  } while (!((key = keys[that._i++]) in that._t));
	  return { value: key, done: false };
	});

	$export($export.S, 'Reflect', {
	  enumerate: function enumerate(target) {
	    return new Enumerate(target);
	  }
	});


/***/ }),

/***/ 253:
/***/ (function(module, exports, __webpack_require__) {

	// 26.1.6 Reflect.get(target, propertyKey [, receiver])
	var gOPD = __webpack_require__(60);
	var getPrototypeOf = __webpack_require__(68);
	var has = __webpack_require__(14);
	var $export = __webpack_require__(17);
	var isObject = __webpack_require__(22);
	var anObject = __webpack_require__(21);

	function get(target, propertyKey /* , receiver */) {
	  var receiver = arguments.length < 3 ? target : arguments[2];
	  var desc, proto;
	  if (anObject(target) === receiver) return target[propertyKey];
	  if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')
	    ? desc.value
	    : desc.get !== undefined
	      ? desc.get.call(receiver)
	      : undefined;
	  if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);
	}

	$export($export.S, 'Reflect', { get: get });


/***/ }),

/***/ 254:
/***/ (function(module, exports, __webpack_require__) {

	// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)
	var gOPD = __webpack_require__(60);
	var $export = __webpack_require__(17);
	var anObject = __webpack_require__(21);

	$export($export.S, 'Reflect', {
	  getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {
	    return gOPD.f(anObject(target), propertyKey);
	  }
	});


/***/ }),

/***/ 255:
/***/ (function(module, exports, __webpack_require__) {

	// 26.1.8 Reflect.getPrototypeOf(target)
	var $export = __webpack_require__(17);
	var getProto = __webpack_require__(68);
	var anObject = __webpack_require__(21);

	$export($export.S, 'Reflect', {
	  getPrototypeOf: function getPrototypeOf(target) {
	    return getProto(anObject(target));
	  }
	});


/***/ }),

/***/ 256:
/***/ (function(module, exports, __webpack_require__) {

	// 26.1.9 Reflect.has(target, propertyKey)
	var $export = __webpack_require__(17);

	$export($export.S, 'Reflect', {
	  has: function has(target, propertyKey) {
	    return propertyKey in target;
	  }
	});


/***/ }),

/***/ 257:
/***/ (function(module, exports, __webpack_require__) {

	// 26.1.10 Reflect.isExtensible(target)
	var $export = __webpack_require__(17);
	var anObject = __webpack_require__(21);
	var $isExtensible = Object.isExtensible;

	$export($export.S, 'Reflect', {
	  isExtensible: function isExtensible(target) {
	    anObject(target);
	    return $isExtensible ? $isExtensible(target) : true;
	  }
	});


/***/ }),

/***/ 258:
/***/ (function(module, exports, __webpack_require__) {

	// 26.1.11 Reflect.ownKeys(target)
	var $export = __webpack_require__(17);

	$export($export.S, 'Reflect', { ownKeys: __webpack_require__(259) });


/***/ }),

/***/ 259:
/***/ (function(module, exports, __webpack_require__) {

	// all object keys, includes non-enumerable and symbols
	var gOPN = __webpack_require__(59);
	var gOPS = __webpack_require__(52);
	var anObject = __webpack_require__(21);
	var Reflect = __webpack_require__(13).Reflect;
	module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
	  var keys = gOPN.f(anObject(it));
	  var getSymbols = gOPS.f;
	  return getSymbols ? keys.concat(getSymbols(it)) : keys;
	};


/***/ }),

/***/ 260:
/***/ (function(module, exports, __webpack_require__) {

	// 26.1.12 Reflect.preventExtensions(target)
	var $export = __webpack_require__(17);
	var anObject = __webpack_require__(21);
	var $preventExtensions = Object.preventExtensions;

	$export($export.S, 'Reflect', {
	  preventExtensions: function preventExtensions(target) {
	    anObject(target);
	    try {
	      if ($preventExtensions) $preventExtensions(target);
	      return true;
	    } catch (e) {
	      return false;
	    }
	  }
	});


/***/ }),

/***/ 261:
/***/ (function(module, exports, __webpack_require__) {

	// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])
	var dP = __webpack_require__(20);
	var gOPD = __webpack_require__(60);
	var getPrototypeOf = __webpack_require__(68);
	var has = __webpack_require__(14);
	var $export = __webpack_require__(17);
	var createDesc = __webpack_require__(26);
	var anObject = __webpack_require__(21);
	var isObject = __webpack_require__(22);

	function set(target, propertyKey, V /* , receiver */) {
	  var receiver = arguments.length < 4 ? target : arguments[3];
	  var ownDesc = gOPD.f(anObject(target), propertyKey);
	  var existingDescriptor, proto;
	  if (!ownDesc) {
	    if (isObject(proto = getPrototypeOf(target))) {
	      return set(proto, propertyKey, V, receiver);
	    }
	    ownDesc = createDesc(0);
	  }
	  if (has(ownDesc, 'value')) {
	    if (ownDesc.writable === false || !isObject(receiver)) return false;
	    existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);
	    existingDescriptor.value = V;
	    dP.f(receiver, propertyKey, existingDescriptor);
	    return true;
	  }
	  return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);
	}

	$export($export.S, 'Reflect', { set: set });


/***/ }),

/***/ 262:
/***/ (function(module, exports, __webpack_require__) {

	// 26.1.14 Reflect.setPrototypeOf(target, proto)
	var $export = __webpack_require__(17);
	var setProto = __webpack_require__(82);

	if (setProto) $export($export.S, 'Reflect', {
	  setPrototypeOf: function setPrototypeOf(target, proto) {
	    setProto.check(target, proto);
	    try {
	      setProto.set(target, proto);
	      return true;
	    } catch (e) {
	      return false;
	    }
	  }
	});


/***/ }),

/***/ 263:
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require) {
	    return {
	        'backbone': __webpack_require__("require/backbone"),
	        'models/services/server/ServerInfo': __webpack_require__("models/services/server/ServerInfo"),
	        'models/shared/User': __webpack_require__("models/shared/User"),
	        'views/shared/splunkbar/Master': __webpack_require__("views/shared/splunkbar/Master"),
	        'views/shared/appbar/Master': __webpack_require__("views/shared/appbar/Master"),
	        'views/shared/litebar/Master': __webpack_require__("views/shared/litebar/Master"),
	        'views/shared/footer/Master': __webpack_require__("views/shared/footer/Master"),
	        'models/shared/Application': __webpack_require__("models/shared/Application"),
	        'models/config': __webpack_require__("models/config"),
	        'views/shared/litebar/Master': __webpack_require__("views/shared/litebar/Master"),
	        'collections/services/data/ui/Tours': __webpack_require__("collections/services/data/ui/Tours"),
	        'util/splunkd_utils': __webpack_require__("util/splunkd_utils")
	    };
	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ 264:
/***/ (function(module, exports, __webpack_require__) {

	/*** IMPORTS FROM imports-loader ***/
	var jQuery = __webpack_require__("shim/jquery");

	(function($) {
	  
	  var addMethods = function(source) {
	    var ancestor   = this.superclass && this.superclass.prototype;
	    var properties = $.keys(source);

	    if (!$.keys({ toString: true }).length) properties.push("toString", "valueOf");

	    for (var i = 0, length = properties.length; i < length; i++) {
	      var property = properties[i], value = source[property];
	      if (ancestor && $.isFunction(value) && $.argumentNames(value)[0] == "$super") {
	        
	        var method = value, value = $.extend($.wrap((function(m) {
	          return function() { return ancestor[m].apply(this, arguments) };
	        })(property), method), {
	          valueOf:  function() { return method },
	          toString: function() { return method.toString() }
	        });
	      }
	      this.prototype[property] = value;
	    }

	    return this;
	  }
	  
	  $.extend({
	    keys: function(obj) {
	      var keys = [];
	      for (var key in obj) keys.push(key);
	      return keys;
	    },

	    argumentNames: function(func) {
	      var names = func.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(/, ?/);
	      return names.length == 1 && !names[0] ? [] : names;
	    },

	    bind: function(func, scope) {
	      return function() {
	        return func.apply(scope, $.makeArray(arguments));
	      }
	    },

	    wrap: function(func, wrapper) {
	      var __method = func;
	      return function() {
	        return wrapper.apply(this, [$.bind(__method, this)].concat($.makeArray(arguments)));
	      }
	    },
	    
	    klass: function() {
	      var parent = null, properties = $.makeArray(arguments);
	      if ($.isFunction(properties[0])) parent = properties.shift();

	      var klass = function() { 
	        this.initialize.apply(this, arguments);
	      };

	      klass.superclass = parent;
	      klass.subclasses = [];
	      klass.addMethods = addMethods;

	      if (parent) {
	        var subclass = function() { };
	        subclass.prototype = parent.prototype;
	        klass.prototype = new subclass;
	        parent.subclasses.push(klass);
	      }

	      for (var i = 0; i < properties.length; i++)
	        klass.addMethods(properties[i]);

	      if (!klass.prototype.initialize)
	        klass.prototype.initialize = function() {};

	      klass.prototype.constructor = klass;

	      return klass;
	    }/*,
	    delegate: function(rules) {
	      return function(e) {
	        var target = $(e.target);
	        for (var selector in rules) {
	          if (target.is(selector) || ((target = target.parents(selector)) && target.length > 0)) 
	            return rules[selector].apply(this, [target].concat($.makeArray(arguments)));
	        }
	      }
	    }*/
	  });
	  
	  var bindEvents = function(instance) {
	    for (var member in instance) {
	      if (member.match(/^on(.+)/) && typeof instance[member] == 'function') {
	        instance.element.bind(RegExp.$1, $.bind(instance[member], instance));
	      }
	    }
	  }
	  
	  var behaviorWrapper = function(behavior) {
	    return $.klass(behavior, {
	      initialize: function($super, element, args) {
	        this.element = $(element);
	        if ($super) $super.apply(this, args);
	      }
	    });
	  }
	  
	  var attachBehavior = function(el, behavior, args) {
	      var wrapper = behaviorWrapper(behavior);
	      instance = new wrapper(el, args);

	      bindEvents(instance);

	      if (!behavior.instances) behavior.instances = [];

	      behavior.instances.push(instance);
	      
	      return instance;
	  };
	  
	  
	  $.fn.extend({
	    attach: function() {
	      var args = $.makeArray(arguments), behavior = args.shift();
	      
	      if ($.livequery && this.selector) {
	        return this.livequery(function() {
	          attachBehavior(this, behavior, args);
	        });
	      } else {
	        return this.each(function() {
	          attachBehavior(this, behavior, args);
	        });
	      }
	    },
	    attachAndReturn: function() {
	      var args = $.makeArray(arguments), behavior = args.shift();
	      
	      return $.map(this, function(el) {
	        return attachBehavior(el, behavior, args);
	      });
	    },
	    /*delegate: function(type, rules) {
	      return this.bind(type, $.delegate(rules));
	    },*/
	    attached: function(behavior) {
	      var instances = [];
	      
	      if (!behavior.instances) return instances;
	      
	      this.each(function(i, element) {
	        $.each(behavior.instances, function(i, instance) {
	          if (instance.element.get(0) == element) instances.push(instance);
	        });
	      });
	      
	      return instances;
	    },
	    firstAttached: function(behavior) {
	      return this.attached(behavior)[0];
	    }
	  });
	  
	  var Remote = $.klass({
	    initialize: function(options) {
	      if (this.element.attr('nodeName') == 'FORM') this.element.attach(Remote.Form, options);
	      else this.element.attach(Remote.Link, options);
	    }
	  });
	  
	  Remote.Base = $.klass({
	    initialize : function(options) {
	      this.options = $.extend({
	        
	      }, options || {});
	    },
	    _makeRequest : function(options) {
	      $.ajax(options);
	      return false;
	    }
	  });
	  
	  Remote.Link = $.klass(Remote.Base, {
	    onclick: function() {
	      var options = $.extend({ url: this.element.attr('href'), type: 'GET' }, this.options);
	      return this._makeRequest(options);
	    }
	  });
	  
	  Remote.Form = $.klass(Remote.Base, {
	    onclick: function(e) {
	      var target = e.target;
	      
	      if ($.inArray(target.nodeName.toLowerCase(), ['input', 'button']) >= 0 && target.type.match(/submit|image/))
	        this._submitButton = target;
	    },
	    onsubmit: function() {
	      var data = this.element.serializeArray();
	      
	      if (this._submitButton) data.push({ name: this._submitButton.name, value: this._submitButton.value });
	      
	      var options = $.extend({
	        url : this.element.attr('action'),
	        type : this.element.attr('method') || 'GET',
	        data : data
	      }, this.options);
	      
	      this._makeRequest(options);
	      
	      return false;
	    }
	  });
	  
	  $.ajaxSetup({ 
	    beforeSend: function(xhr) {
	      xhr.setRequestHeader("Accept", "text/javascript, text/html, application/xml, text/xml, */*");
	    } 
	  });
	  
	})(jQuery);


/***/ }),

/***/ 265:
/***/ (function(module, exports, __webpack_require__) {

	/*** IMPORTS FROM imports-loader ***/
	var $ = __webpack_require__("shim/jquery");

	Splunk.namespace("Splunk.Session");
	/**
	 * A simple class that dispatches jQuery document events Splunk.Session.TIMEOUT_EVENT and Splunk.Session.START_EVENT.
	 * Events triggered on UI activity/no-activity configuration setting POLLER_TIMEOUT_INTERVAL.
	 */
	Splunk.Session = $.klass({
	    EVENT_BUFFER_TIMEOUT: 1000,//Never operate on many DOM events without a governor (ie., 1000ms governor cancels >30 scroll events).
	    UI_INACTIVITY_TIMEOUT: 60,
	    START_EVENT: "SessionStart",
	    TIMEOUT_EVENT: "SessionTimeout",
	    RESTART_EVENT: "HaltOnRestart", //Stop all the pollers when restart is initiated from the UI
	    UI_EVENT_TYPES: ["click", "keydown", "mouseover", "scroll"],
	    /**
	     * Initializes Session.
	     */
	    initialize: function(){
	        this.logger = Splunk.Logger.getLogger("session.js");
	        this.eventBuffer = [];
	        this.timeoutDelay = Splunk.util.getConfigValue("UI_INACTIVITY_TIMEOUT", this.UI_INACTIVITY_TIMEOUT);
	        this.timeoutDelay *= 60000;

	        // SPL-82672 if timeoutDelay is > 2147483647 they are most likely treating it as milliseconds.
	        if(this.timeoutDelay > 2147483647) {
	            this.logger.warn("ui_inactivity_timeout must be treated as minutes not milliseconds. Defaulting to 60 min");
	            this.timeoutDelay = 3600000;
	        }

	        this.timeoutID = null;
	        $(document).bind(this.START_EVENT, this.onSessionStart.bind(this));
	        if(!this.timeoutDelay<1){
	            $(document).bind(this.TIMEOUT_EVENT, this.onSessionTimeout.bind(this));
	            $(document).bind(this.UI_EVENT_TYPES.join(" "), this.onUIEvent.bind(this));
	            this.startTimeout();
	        }
	        $(document).trigger(this.START_EVENT, new Date());
	    },
	    /**
	     * Top level UI event listener and dispatcher, triggers Splunk.Session.START_EVENT if timeoutID is null, resets the 
	     * timer if timeoutID not null.
	     *
	     * @param {Object} event A DOM event.
	     */
	    onUIEvent: function(event){
	        if(this.timeoutID){
	            this.eventBuffer.push("");
	            if(this.eventBuffer.length===1){
	                this.resetTimeout();
	                setTimeout(
	                    function(){
	                        this.eventBuffer = [];
	                    }.bind(this),
	                    this.EVENT_BUFFER_TIMEOUT
	                );
	            }
	        }else{
	            this.startTimeout();
	            $(document).trigger(this.START_EVENT, new Date());
	        }
	    },
	    /**
	     * Start of new UI activity/session.
	     * 
	     * @param {Object) event The jQuery passed event.
	     * @param {Date} date The time the event was fired.
	     */
	    onSessionStart: function(event, date){},
	    /**
	     * End of UI activity/session.
	     * 
	     * @param {Object) event The jQuery passed event.
	     * @param {Date} date The time the event was fired.
	     */
	    onSessionTimeout: function(event, date){},
	    /**
	     * Reset timeout, stop and start again.
	     */
	    resetTimeout: function(){
	        this.stopTimeout();
	        this.startTimeout();
	    },
	    /**
	     * Inform subscribers of server restart started
	     */
	    signalRestart: function(){
	        $(document).trigger(this.RESTART_EVENT);
	    },
	    /**
	     * Start timeout, set timeoutID.
	     */
	    startTimeout: function(){
	        this.timeoutID = window.setTimeout(this.timeoutHandler.bind(this), this.timeoutDelay);
	    },
	    /**
	     * Stop timeout, if timeoutID exists clear the previous delay and set timeoutID back to null.
	     * 
	     * Note: Passing an invalid ID to clearTimeout does not have any effect (and doesn't throw an exception).
	     */
	    stopTimeout: function(){
	        if(this.timeoutID){
	            window.clearTimeout(this.timeoutID);
	            this.timeoutID = null;
	        }
	    },
	    /**
	     * Handler for successful timeout, set timeoutID back to null, trigger Splunk.Session.TIMEOUT_EVENT.
	     */
	    timeoutHandler: function(){
	        this.stopTimeout();
	        $(document).trigger(this.TIMEOUT_EVENT, new Date());
	    }
	});
	Splunk.Session.instance = null;
	/**
	 * Singleton reference to Session object.
	 *
	 * @return A reference to a shared Session object.
	 * @type Object
	 */
	Splunk.Session.getInstance = function(){
	    if(!Splunk.Session.instance){
	        Splunk.Session.instance = new Splunk.Session();
	    }
	    return Splunk.Session.instance;
	};



/***/ }),

/***/ 266:
/***/ (function(module, exports) {

	module.exports = function(module) {
		if(!module.webpackPolyfill) {
			module.deprecate = function() {};
			module.paths = [];
			// module.parent = undefined by default
			module.children = [];
			module.webpackPolyfill = 1;
		}
		return module;
	}


/***/ }),

/***/ 267:
/***/ (function(module, exports, __webpack_require__) {

	var map = {
		"./de": "contrib/moment/lang/de",
		"./de.js": "contrib/moment/lang/de",
		"./en-debug": "contrib/moment/lang/en-debug",
		"./en-debug.js": "contrib/moment/lang/en-debug",
		"./en-gb": "contrib/moment/lang/en-gb",
		"./en-gb.js": "contrib/moment/lang/en-gb",
		"./en-us": "contrib/moment/lang/en-us",
		"./en-us.js": "contrib/moment/lang/en-us",
		"./fr": "contrib/moment/lang/fr",
		"./fr.js": "contrib/moment/lang/fr",
		"./it": "contrib/moment/lang/it",
		"./it.js": "contrib/moment/lang/it",
		"./ja": "contrib/moment/lang/ja",
		"./ja.js": "contrib/moment/lang/ja",
		"./ko": "contrib/moment/lang/ko",
		"./ko.js": "contrib/moment/lang/ko",
		"./zh-cn": "contrib/moment/lang/zh-cn",
		"./zh-cn.js": "contrib/moment/lang/zh-cn",
		"./zh-tw": "contrib/moment/lang/zh-tw",
		"./zh-tw.js": "contrib/moment/lang/zh-tw"
	};
	function webpackContext(req) {
		return __webpack_require__(webpackContextResolve(req));
	};
	function webpackContextResolve(req) {
		return map[req] || (function() { throw new Error("Cannot find module '" + req + "'.") }());
	};
	webpackContext.keys = function webpackContextKeys() {
		return Object.keys(map);
	};
	webpackContext.resolve = webpackContextResolve;
	module.exports = webpackContext;
	webpackContext.id = 267;


/***/ }),

/***/ 268:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n.view---modules-nav-enterprise---7-0-0---3Zsef {\n    background-color: #eee;\n    border: 1px solid #bfbfbf;\n    /* border-bottom-color: $interactiveBorderBottomColor; */\n    /* border-top-color: $interactiveBorderTopColor; */\n\n    /*  remove gradient for IE to fix clipping */\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n\n    box-shadow: 1px 2px 5px rgba(0,0,0,0.2);\n\n    border-radius: 3px;\n\n    top:100%;\n    left: 50%;\n    margin: 8px 0 0 -103px;\n\n    display:none;\n    position:absolute;\n    z-index: 1060;\n    /*  placement of arrow */\n\n    white-space: normal;\n}\n\n/* prevent inheriting nowrap from btn-group */\n\n.view---modules-nav-enterprise---7-0-0---3Zsef[data-popdown-point=down] {\n    margin-top: 0;\n}\n\n.view---modules-nav-enterprise---7-0-0---3Zsef[data-popdown-point=left] {\n    /* point left */\n    margin-left: 5px;\n    margin-top: 0;\n}\n\n/*  open state */\n\n.view---modules-nav-enterprise---7-0-0---3Zsef.[data-popdown-state=open] {\n    display:block;\n}\n\n/*  SPL-68751 - IE10 box shadow animation artifacts fix */\n\n.view---modules-nav-enterprise---7-0-0---3Zsef:after    {\n    content: \"\";\n    font-size: 0;\n    display: inline;\n    overflow: hidden;\n}\n\n.dialogPadded---modules-nav-enterprise---7-0-0---3gqFc {\n    padding: 10px;\n}\n\n.arrow---modules-nav-enterprise---7-0-0---34iNZ {\n    width: 0;\n    height: 0;\n    border-left: 8px solid transparent;\n    border-right: 8px solid transparent;\n\n    border-bottom: 8px solid #bfbfbf;\n    position: absolute;\n    top: -8px;\n    left: 50%;\n    margin-left: -4px;\n}\n\n/*  generated arrow */\n\n.arrow---modules-nav-enterprise---7-0-0---34iNZ:before {\n    content: \"\";\n    display: block;\n    width: 0;\n    height: 0;\n    border-left: 8px solid transparent;\n    border-right: 8px solid transparent;\n    border-bottom: 8px solid #fff;\n    position: absolute;\n    top: 1px;\n    left:0;\n    margin-left: -8px;\n}\n\n[data-placement=over] > .arrow---modules-nav-enterprise---7-0-0---34iNZ {\n    // point up\n        border-top: 8px solid #bfbfbf;\n    border-bottom: none;\n    top: auto;\n    bottom: -8px;\n}\n\n[data-placement=over] > .arrow---modules-nav-enterprise---7-0-0---34iNZ:before {\n    border-top: 8px solid #fff;\n    border-bottom: none;\n    position: absolute;\n    top: auto;\n    bottom: 1px;\n}\n\n.arrow---modules-nav-enterprise---7-0-0---34iNZ[data-placement=right] > .arrow---modules-nav-enterprise---7-0-0---34iNZ {\n    // point left\n        border-right: 8px solid #bfbfbf;\n    border-top: 8px solid transparent;\n    border-bottom: 8px solid transparent;\n    border-left: none;\n    top: 50%;\n    left: -8px;\n    margin: -8px 0 0 0 ;\n}\n\n.arrow---modules-nav-enterprise---7-0-0---34iNZ[data-placement=right] > .arrow---modules-nav-enterprise---7-0-0---34iNZ:before {\n    border-right: 8px solid #fff;\n    border-top: 8px solid transparent;\n    border-bottom: 8px solid transparent;\n    border-left: none;\n    position: absolute;\n    top: 0;\n    left: 1px;\n    margin: -8px 0 0 0 ;\n}\n\n\n.body---modules-nav-enterprise---7-0-0---tAUkB {\n    margin: 0;\n    border-radius: 3px;\n    background-color: #fff;\n}\n\n\n.body---modules-nav-enterprise---7-0-0---tAUkB:before,\n    .body---modules-nav-enterprise---7-0-0---tAUkB:after {\n    display: table;\n    content: \"\";\n    /*  Fixes Opera/contenteditable bug: */\n    /*  http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952 */\n    line-height: 0;\n}\n\n\n.body---modules-nav-enterprise---7-0-0---tAUkB:after {\n    clear: both;\n}\n\n.footer---modules-nav-enterprise---7-0-0---1tMP1 {\n    border-top: 1px solid #ccc;\n    padding: 5px;\n    border-bottom-left-radius: 3px;\n    border-bottom-right-radius: 3px;\n}\n\n.footer---modules-nav-enterprise---7-0-0---1tMP1:before,\n    .footer---modules-nav-enterprise---7-0-0---1tMP1:after {\n    display: table;\n    content: \"\";\n    /*  Fixes Opera/contenteditable bug: */\n    /*  http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952 */\n    line-height: 0;\n}\n\n.footer---modules-nav-enterprise---7-0-0---1tMP1:after {\n    clear: both;\n}\n\n\n/*  Splunk: Dropdown arrow/caret */\n/*  =========================== */\n\n\n.dropup---modules-nav-enterprise---7-0-0---VzmK_,\n.dropdown---modules-nav-enterprise---7-0-0---1am36 {\n  position: relative;\n}\n\n.dropdown-toggle---modules-nav-enterprise---7-0-0---3evra:active,\n.open---modules-nav-enterprise---7-0-0---2xXzt .dropdown-toggle---modules-nav-enterprise---7-0-0---3evra {\n  outline: 0;\n}\n\n/*  Dropdowns */\n/*  --------- */\n\n.menu---modules-nav-enterprise---7-0-0---e8pNS  {\n    width: auto;\n    list-style: none;\n    word-wrap: break-word;\n    line-height: 21.33333px;\n    padding: 0;\n    background-clip: padding-box;\n    min-width: 120px;\n\n    list-style: none;\n    overflow-x: hidden;\n    overflow-y: auto;\n    /* in rare cases that long strings increase the container size, this will minimize the issues */\n    max-width: 100%;\n    max-height: 270px;\n    box-sizing: border-box;\n    border-radius:0;\n}\n\n.menu---modules-nav-enterprise---7-0-0---e8pNS + .menu---modules-nav-enterprise---7-0-0---e8pNS {\n    border-top: 1px solid #bfbfbf\n}\n\n.menu---modules-nav-enterprise---7-0-0---e8pNS li {\n    position: relative;\n}\n\n.menu---modules-nav-enterprise---7-0-0---e8pNS li > a {\n    display: block;\n    clear: both;\n    font-weight: normal;\n    line-height: 16px;\n    position: relative;\n    color: #1e93c6;\n    padding: 5px 10px ;\n    white-space: normal;\n    text-decoration: none;\n    line-height: 16px;\n}\n\n.menu---modules-nav-enterprise---7-0-0---e8pNS li > a:focus:not(.disabled---modules-nav-enterprise---7-0-0---3z9cS) {\n    outline: 0;\n    text-decoration: none;\n    background: rgba(61, 171, 255, 0.12);\n    box-shadow: none;\n    /* override default focus-link() */\n}\n\n.menu---modules-nav-enterprise---7-0-0---e8pNS li > a:hover:not(.disabled---modules-nav-enterprise---7-0-0---3z9cS) {\n    color: #3863a0;\n    background: rgba(0, 0, 0, 0.05);\n    background-color: rgba(0, 0, 0, 0.05);\n    background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.05), rgba(0, 0, 0, 0.05));\n    /*  Standard, IE10 */\n    background-repeat: repeat-x;\n}\n\n.menu---modules-nav-enterprise---7-0-0---e8pNS li > a.disabled---modules-nav-enterprise---7-0-0---3z9cS {\n    color: #bbb;\n}\n\n.menu---modules-nav-enterprise---7-0-0---e8pNS li + li > a {\n    border-top: 1px dotted #ccc;\n}\n\n/* link info style */\n.title---modules-nav-enterprise---7-0-0---1EzN6 {\n    color: #999;\n    text-transform: uppercase;\n    padding: 3px 10px;\n}\n\n.info---modules-nav-enterprise---7-0-0---1jGoI {\n    display: block;\n    font-size: 10.2px;\n}\n\nli > a.primaryLink---modules-nav-enterprise---7-0-0---3vTdN {\n    margin-right: 40px;\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-right: 1px dotted  #ccc;\n    min-width: 100px;\n    -ms-flex: 1 0 0px;\n        flex: 1 0 0;\n}\n\nli > a.secondaryLink---modules-nav-enterprise---7-0-0---1Qkms {\n    position: absolute;\n    right: 0;\n    top: 0;\n    bottom: 0;\n    width: 40px;\n    padding-left:0;\n    padding-right: 0;\n    font-size: 16px;\n    text-align: center;\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n    white-space: nowrap;\n    font-size: 14px;\n}\n.startGroup---modules-nav-enterprise---7-0-0---3afvP {\n\n}\n\n.menu---modules-nav-enterprise---7-0-0---e8pNS > li.startGroup---modules-nav-enterprise---7-0-0---3afvP > a,\n.menu---modules-nav-enterprise---7-0-0---e8pNS .divider---modules-nav-enterprise---7-0-0---3mROa + li > a  {\n    border-top-style: solid;\n    border-color: #ccc;\n}\n\n.selected---modules-nav-enterprise---7-0-0---1xKkB:before {\n    content: '';\n    position: absolute;\n    left: 9px;\n    top: 7px;\n    height: 8px;\n    width: 4px;\n    border-right: 0.15em solid currentColor;\n    border-bottom:0.15em solid currentColor;\n    transform: rotate(42deg) scaleX(0.9);\n}\n\n/*  Sizes */\n/*  ------------------- */\n\n.menuNarrow---modules-nav-enterprise---7-0-0---2H8QW {\n    max-width: 10em;\n}\n\n.menuLarge---modules-nav-enterprise---7-0-0---ADHrQ {\n    max-width: 25em;\n}\n\n.menuLarger---modules-nav-enterprise---7-0-0---sSccF {\n    max-width: 30em;\n}\n\n\n/*  Selectable dropdown */\n/*  ------------------- */\n\n.menuSelectable---modules-nav-enterprise---7-0-0---2_OeE {\n}\n\n.menuSelectable---modules-nav-enterprise---7-0-0---2_OeE li > a {\n    padding-left: 24px;\n}\n\n.header---modules-nav-enterprise---7-0-0---2Pi1U {\n    display: block;\n    padding: 3px 20px;\n    font-size: 12px;\n    line-height: 1.42857143;\n    color: #999;\n}\n\n\n/*  fixed height dropdowns & popdowns */\n/*  --------------------------------- */\n\n.menuTall---modules-nav-enterprise---7-0-0---1ElHZ ul {\n    max-height: 20em;\n    overflow: auto;\n}\n\n.menuShort---modules-nav-enterprise---7-0-0---3pGhI ul {\n    max-height: 10em;\n    overflow: auto;\n}\n\n/*  Typeahead */\n/*  --------- */\n.typeahead---modules-nav-enterprise---7-0-0---uXnbu {\n    z-index: 1051;\n    margin-top: 2px; /*  give it some space to breathe */\n    border-radius: 4px;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---3Zsef",
		"dialogPadded": "dialogPadded---modules-nav-enterprise---7-0-0---3gqFc view---modules-nav-enterprise---7-0-0---3Zsef",
		"arrow": "arrow---modules-nav-enterprise---7-0-0---34iNZ",
		"body": "body---modules-nav-enterprise---7-0-0---tAUkB",
		"footer": "footer---modules-nav-enterprise---7-0-0---1tMP1",
		"dropup": "dropup---modules-nav-enterprise---7-0-0---VzmK_",
		"dropdown": "dropdown---modules-nav-enterprise---7-0-0---1am36",
		"dropdown-toggle": "dropdown-toggle---modules-nav-enterprise---7-0-0---3evra",
		"open": "open---modules-nav-enterprise---7-0-0---2xXzt",
		"menu": "menu---modules-nav-enterprise---7-0-0---e8pNS body---modules-nav-enterprise---7-0-0---tAUkB",
		"disabled": "disabled---modules-nav-enterprise---7-0-0---3z9cS",
		"title": "title---modules-nav-enterprise---7-0-0---1EzN6",
		"info": "info---modules-nav-enterprise---7-0-0---1jGoI",
		"primaryLink": "primaryLink---modules-nav-enterprise---7-0-0---3vTdN",
		"secondaryLink": "secondaryLink---modules-nav-enterprise---7-0-0---1Qkms",
		"startGroup": "startGroup---modules-nav-enterprise---7-0-0---3afvP",
		"divider": "divider---modules-nav-enterprise---7-0-0---3mROa",
		"selected": "selected---modules-nav-enterprise---7-0-0---1xKkB",
		"menuNarrow": "menuNarrow---modules-nav-enterprise---7-0-0---2H8QW menu---modules-nav-enterprise---7-0-0---e8pNS body---modules-nav-enterprise---7-0-0---tAUkB",
		"menuLarge": "menuLarge---modules-nav-enterprise---7-0-0---ADHrQ menu---modules-nav-enterprise---7-0-0---e8pNS body---modules-nav-enterprise---7-0-0---tAUkB",
		"menuLarger": "menuLarger---modules-nav-enterprise---7-0-0---sSccF menu---modules-nav-enterprise---7-0-0---e8pNS body---modules-nav-enterprise---7-0-0---tAUkB",
		"menuSelectable": "menuSelectable---modules-nav-enterprise---7-0-0---2_OeE menu---modules-nav-enterprise---7-0-0---e8pNS body---modules-nav-enterprise---7-0-0---tAUkB",
		"header": "header---modules-nav-enterprise---7-0-0---2Pi1U",
		"menuTall": "menuTall---modules-nav-enterprise---7-0-0---1ElHZ",
		"menuShort": "menuShort---modules-nav-enterprise---7-0-0---3pGhI",
		"typeahead": "typeahead---modules-nav-enterprise---7-0-0---uXnbu"
	};

/***/ }),

/***/ 269:
/***/ (function(module, exports) {

	/*
		MIT License http://www.opensource.org/licenses/mit-license.php
		Author Tobias Koppers @sokra
	*/
	// css base code, injected by the css-loader
	module.exports = function() {
		var list = [];

		// return the list of modules as css string
		list.toString = function toString() {
			var result = [];
			for(var i = 0; i < this.length; i++) {
				var item = this[i];
				if(item[2]) {
					result.push("@media " + item[2] + "{" + item[1] + "}");
				} else {
					result.push(item[1]);
				}
			}
			return result.join("");
		};

		// import a list of modules into the list
		list.i = function(modules, mediaQuery) {
			if(typeof modules === "string")
				modules = [[null, modules, ""]];
			var alreadyImportedModules = {};
			for(var i = 0; i < this.length; i++) {
				var id = this[i][0];
				if(typeof id === "number")
					alreadyImportedModules[id] = true;
			}
			for(i = 0; i < modules.length; i++) {
				var item = modules[i];
				// skip already imported module
				// this implementation is not 100% perfect for weird media query combinations
				//  when a module is imported multiple times with different media queries.
				//  I hope this will never occur (Hey this way we have smaller bundles)
				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
					if(mediaQuery && !item[2]) {
						item[2] = mediaQuery;
					} else if(mediaQuery) {
						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
					}
					list.push(item);
				}
			}
		};
		return list;
	};


/***/ }),

/***/ 270:
/***/ (function(module, exports, __webpack_require__) {

	/*
		MIT License http://www.opensource.org/licenses/mit-license.php
		Author Tobias Koppers @sokra
	*/
	var stylesInDom = {},
		memoize = function(fn) {
			var memo;
			return function () {
				if (typeof memo === "undefined") memo = fn.apply(this, arguments);
				return memo;
			};
		},
		isOldIE = memoize(function() {
			return /msie [6-9]\b/.test(self.navigator.userAgent.toLowerCase());
		}),
		getHeadElement = memoize(function () {
			return document.head || document.getElementsByTagName("head")[0];
		}),
		singletonElement = null,
		singletonCounter = 0,
		styleElementsInsertedAtTop = [];

	module.exports = function(list, options) {
		if(false) {
			if(typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");
		}

		options = options || {};
		// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
		// tags it will allow on a page
		if (typeof options.singleton === "undefined") options.singleton = isOldIE();

		// By default, add <style> tags to the bottom of <head>.
		if (typeof options.insertAt === "undefined") options.insertAt = "bottom";

		var styles = listToStyles(list);
		addStylesToDom(styles, options);

		return function update(newList) {
			var mayRemove = [];
			for(var i = 0; i < styles.length; i++) {
				var item = styles[i];
				var domStyle = stylesInDom[item.id];
				domStyle.refs--;
				mayRemove.push(domStyle);
			}
			if(newList) {
				var newStyles = listToStyles(newList);
				addStylesToDom(newStyles, options);
			}
			for(var i = 0; i < mayRemove.length; i++) {
				var domStyle = mayRemove[i];
				if(domStyle.refs === 0) {
					for(var j = 0; j < domStyle.parts.length; j++)
						domStyle.parts[j]();
					delete stylesInDom[domStyle.id];
				}
			}
		};
	}

	function addStylesToDom(styles, options) {
		for(var i = 0; i < styles.length; i++) {
			var item = styles[i];
			var domStyle = stylesInDom[item.id];
			if(domStyle) {
				domStyle.refs++;
				for(var j = 0; j < domStyle.parts.length; j++) {
					domStyle.parts[j](item.parts[j]);
				}
				for(; j < item.parts.length; j++) {
					domStyle.parts.push(addStyle(item.parts[j], options));
				}
			} else {
				var parts = [];
				for(var j = 0; j < item.parts.length; j++) {
					parts.push(addStyle(item.parts[j], options));
				}
				stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};
			}
		}
	}

	function listToStyles(list) {
		var styles = [];
		var newStyles = {};
		for(var i = 0; i < list.length; i++) {
			var item = list[i];
			var id = item[0];
			var css = item[1];
			var media = item[2];
			var sourceMap = item[3];
			var part = {css: css, media: media, sourceMap: sourceMap};
			if(!newStyles[id])
				styles.push(newStyles[id] = {id: id, parts: [part]});
			else
				newStyles[id].parts.push(part);
		}
		return styles;
	}

	function insertStyleElement(options, styleElement) {
		var head = getHeadElement();
		var lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];
		if (options.insertAt === "top") {
			if(!lastStyleElementInsertedAtTop) {
				head.insertBefore(styleElement, head.firstChild);
			} else if(lastStyleElementInsertedAtTop.nextSibling) {
				head.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);
			} else {
				head.appendChild(styleElement);
			}
			styleElementsInsertedAtTop.push(styleElement);
		} else if (options.insertAt === "bottom") {
			head.appendChild(styleElement);
		} else {
			throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");
		}
	}

	function removeStyleElement(styleElement) {
		styleElement.parentNode.removeChild(styleElement);
		var idx = styleElementsInsertedAtTop.indexOf(styleElement);
		if(idx >= 0) {
			styleElementsInsertedAtTop.splice(idx, 1);
		}
	}

	function createStyleElement(options) {
		var styleElement = document.createElement("style");
		styleElement.type = "text/css";
		insertStyleElement(options, styleElement);
		return styleElement;
	}

	function createLinkElement(options) {
		var linkElement = document.createElement("link");
		linkElement.rel = "stylesheet";
		insertStyleElement(options, linkElement);
		return linkElement;
	}

	function addStyle(obj, options) {
		var styleElement, update, remove;

		if (options.singleton) {
			var styleIndex = singletonCounter++;
			styleElement = singletonElement || (singletonElement = createStyleElement(options));
			update = applyToSingletonTag.bind(null, styleElement, styleIndex, false);
			remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);
		} else if(obj.sourceMap &&
			typeof URL === "function" &&
			typeof URL.createObjectURL === "function" &&
			typeof URL.revokeObjectURL === "function" &&
			typeof Blob === "function" &&
			typeof btoa === "function") {
			styleElement = createLinkElement(options);
			update = updateLink.bind(null, styleElement);
			remove = function() {
				removeStyleElement(styleElement);
				if(styleElement.href)
					URL.revokeObjectURL(styleElement.href);
			};
		} else {
			styleElement = createStyleElement(options);
			update = applyToTag.bind(null, styleElement);
			remove = function() {
				removeStyleElement(styleElement);
			};
		}

		update(obj);

		return function updateStyle(newObj) {
			if(newObj) {
				if(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)
					return;
				update(obj = newObj);
			} else {
				remove();
			}
		};
	}

	var replaceText = (function () {
		var textStore = [];

		return function (index, replacement) {
			textStore[index] = replacement;
			return textStore.filter(Boolean).join('\n');
		};
	})();

	function applyToSingletonTag(styleElement, index, remove, obj) {
		var css = remove ? "" : obj.css;

		if (styleElement.styleSheet) {
			styleElement.styleSheet.cssText = replaceText(index, css);
		} else {
			var cssNode = document.createTextNode(css);
			var childNodes = styleElement.childNodes;
			if (childNodes[index]) styleElement.removeChild(childNodes[index]);
			if (childNodes.length) {
				styleElement.insertBefore(cssNode, childNodes[index]);
			} else {
				styleElement.appendChild(cssNode);
			}
		}
	}

	function applyToTag(styleElement, obj) {
		var css = obj.css;
		var media = obj.media;

		if(media) {
			styleElement.setAttribute("media", media)
		}

		if(styleElement.styleSheet) {
			styleElement.styleSheet.cssText = css;
		} else {
			while(styleElement.firstChild) {
				styleElement.removeChild(styleElement.firstChild);
			}
			styleElement.appendChild(document.createTextNode(css));
		}
	}

	function updateLink(linkElement, obj) {
		var css = obj.css;
		var sourceMap = obj.sourceMap;

		if(sourceMap) {
			// http://stackoverflow.com/a/26603875
			css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
		}

		var blob = new Blob([css], { type: "text/css" });

		var oldSrc = linkElement.href;

		linkElement.href = URL.createObjectURL(blob);

		if(oldSrc)
			URL.revokeObjectURL(oldSrc);
	}


/***/ }),

/***/ 271:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  wrapper */\n.view---modules-nav-enterprise---7-0-0---25Lec {\n\tposition: relative;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---25Lec"
	};

/***/ }),

/***/ 272:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n@font-face {\n    font-family: 'IconViewFont';\n    src: url(" + __webpack_require__(273) + ") format('woff');\n    font-weight: normal;\n    font-style: normal;\n    /*  unicode-range: U+00-FF; */\n}\n\n.view---modules-nav-enterprise---7-0-0---18scF {\n    font-family: \"IconViewFont\";\n    font-style: normal;\n    font-weight: normal;\n    text-decoration: none;\n    display: inline-block\n}\n\n.space---modules-nav-enterprise---7-0-0---3-vFp:before            {content: \" \"; }\n\n/*splunk logo*/\n.splunk---modules-nav-enterprise---7-0-0---nKTms:before                 {content: \"splunk\"; }\n.greater---modules-nav-enterprise---7-0-0---1JeQ1:before                {content: \">\"; }\n.greaterRegistered---modules-nav-enterprise---7-0-0---2rG5y:before      {content: \">\\AE\"; }\n.hunk---modules-nav-enterprise---7-0-0---2afoe:before                   {content: \"\\F000\"; }\n.enterprise---modules-nav-enterprise---7-0-0---1ZR4M:before             {content: \"\\F001\"; }\n.cloudLogo---modules-nav-enterprise---7-0-0---1FEAw:before              {content: \"\\F002\"; }\n.lite---modules-nav-enterprise---7-0-0---1zz5k:before                   {content: \"\\F003\"; }\n\n/* shapes */\n.circle---modules-nav-enterprise---7-0-0---2VwlF:before                 {content: \"\\ECD0\"; }\n.circleFilled---modules-nav-enterprise---7-0-0---l3kG_:before           {content: \"\\25CF\"; }\n.boxFilled---modules-nav-enterprise---7-0-0---2Th1I:before              {content: \"\\25A0\"; }\n.triangleUpSmall---modules-nav-enterprise---7-0-0---P2jUH:before        {content: \"\\25B4\"; }\n.triangleRight---modules-nav-enterprise---7-0-0---3WFDr:before          {content: \"\\25B6\"; }\n.triangleRightSmall---modules-nav-enterprise---7-0-0---26c51:before     {content: \"\\25B8\"; }\n.triangleDown---modules-nav-enterprise---7-0-0---2YPpY:before           {content: \"\\25BC\"; }\n.triangleDownSmall---modules-nav-enterprise---7-0-0---2oEma:before      {content: \"\\25BE\"; }\n.triangleLeft---modules-nav-enterprise---7-0-0---1YldC:before           {content: \"\\25C0\"; }\n.triangleLeftSmall---modules-nav-enterprise---7-0-0---31bE6:before      {content: \"\\25C2\"; }\n\n\n/*arrows & pointers*/\n.arrowUp---modules-nav-enterprise---7-0-0---2bA7F:before                {content: \"\\EC01\"; }\n.arrowRight---modules-nav-enterprise---7-0-0---2VBtY:before             {content: \"\\27A1\"; }\n.arrowDown---modules-nav-enterprise---7-0-0---1s8L3:before              {content: \"\\EC02\"; }\n.arrowLeft---modules-nav-enterprise---7-0-0---3RpuM:before              {content: \"\\EC00\"; }\n\n.twoArrowsCycle---modules-nav-enterprise---7-0-0---UKHo4:before         {content: \"\\EC12\"; }\n.external---modules-nav-enterprise---7-0-0---37qg5:before               {content: \"\\EC13\"; }\n\n.rotateCounter---modules-nav-enterprise---7-0-0---3jvZX:before          {content: \"\\21BA\"; }\n.rotate---modules-nav-enterprise---7-0-0---1DDmo:before                 {content: \"\\21BB\"; }\n\n.location---modules-nav-enterprise---7-0-0---1VC9A:before               {content: \"\\EC80\"; }\n\n.chevronLeft---modules-nav-enterprise---7-0-0---9X3dF:before            {content: \"\\2039\"; }\n.chevronRight---modules-nav-enterprise---7-0-0---Afbp5:before           {content: \"\\203A\"; }\n.chevronUp---modules-nav-enterprise---7-0-0---t86Yc:before              {content: \"\\2C4\"; }\n.chevronDown---modules-nav-enterprise---7-0-0---2rxtK:before            {content: \"\\2C5\"; }\n.caret---modules-nav-enterprise---7-0-0---RPBls:before                  {content: \"\\2C5\"; }\n\n\n\n/*actions*/\n.trash---modules-nav-enterprise---7-0-0---2u39G:before                  {content: \"\\EC66\"; }\n.share---modules-nav-enterprise---7-0-0---2gyXV:before                  {content: \"\\27A6\"; }\n.export---modules-nav-enterprise---7-0-0---EjbsA:before                 {content: \"\\EC68\"; }\n.print---modules-nav-enterprise---7-0-0---1xhQG:before                  {content: \"\\EC89\"; }\n.search---modules-nav-enterprise---7-0-0---2j73j:before                 {content: \"\\EC9B\"; }\n.searchThin---modules-nav-enterprise---7-0-0---2S53-:before             {content: \"\\ECC2\"; }\n.pivot---modules-nav-enterprise---7-0-0---2qg4M:before                  {content: \"\\EC12\"; }\n.clone---modules-nav-enterprise---7-0-0---1djd0:before                  {content: \"\\ECE8\"; }\n\n.pause---modules-nav-enterprise---7-0-0---1XZXd:before                  {content: \"\\EC50\"; }\n.stop---modules-nav-enterprise---7-0-0---3l1zY:before                   {content: \"\\25A0\"; }\n.play---modules-nav-enterprise---7-0-0---LR30p:before                   {content: \"\\25B6\"; }\n\n.sort---modules-nav-enterprise---7-0-0---z1pLX:before                   {content: \"\\2195\"; }\n.sortedUp---modules-nav-enterprise---7-0-0---3DxtY:before               {content: \"\\21A5\"; }\n.sortedDown---modules-nav-enterprise---7-0-0---2HiFr:before             {content: \"\\21A7\"; }\n\n.minus---modules-nav-enterprise---7-0-0---1Uaw1:before                  {content: \"\\2212\"; }\n.minusCircle---modules-nav-enterprise---7-0-0---2aCiC:before            {content: \"\\2296\"; margin-right: 0.25em; }\n.plus---modules-nav-enterprise---7-0-0---3cG6H:before                   {content: \"+\"; }\n.plusCircle---modules-nav-enterprise---7-0-0---32Cos:before             {content: \"\\2295\"; }\n.x---modules-nav-enterprise---7-0-0---LKB_d:before                      {content: \"\\2717\"; }\n.xCircle---modules-nav-enterprise---7-0-0---PSZBq:before                {content: \"\\2297\"; }\n\n.close---modules-nav-enterprise---7-0-0---20vBS:before,\n.cancel---modules-nav-enterprise---7-0-0---1wJPD:before                 {content: \"\\2717\"; }\n\n.collapseLeft---modules-nav-enterprise---7-0-0---1MEj5:before           {content: \"\\ECE0\"; }\n.expandRight---modules-nav-enterprise---7-0-0---N1lDh:before            {content: \"\\ECE1\"; }\n\n\n/*concepts*/\n.activity---modules-nav-enterprise---7-0-0---Erh48:before               {content: \"\\ECAE\"; }\n.string---modules-nav-enterprise---7-0-0---3a861:before                 {content: \"a\"; }\n.number---modules-nav-enterprise---7-0-0---3z7gc:before                 {content: \"#\"; }\n.text---modules-nav-enterprise---7-0-0---8wqX-:before                   {content: \"\\ECD9\"; }\n.notAllowed---modules-nav-enterprise---7-0-0---9XPlH:before             {content: \"\\EC9E\"; }\n.data---modules-nav-enterprise---7-0-0---16OWU:before                   {content: \"\\ECA4\"; }\n.dataInput---modules-nav-enterprise---7-0-0---3thyt:before              {content: \"\\ECA3\"; }\n.settings---modules-nav-enterprise---7-0-0---vxudJ:before               {content: \"\\ECA5\"; }\n.distributedEnvironment---modules-nav-enterprise---7-0-0---3jbts:before             {content: \"\\ECA6\"; }\n.visible---modules-nav-enterprise---7-0-0---1yyDY:before                {content: \"\\ECC0\"; }\n.hidden---modules-nav-enterprise---7-0-0---1k4_B:before                 {content: \"\\ECC1\"; }\n.boolean---modules-nav-enterprise---7-0-0---1YGfe:before                {content: \"\\ECD2\"; }\n.menu---modules-nav-enterprise---7-0-0---32p8u:before,\n.rows---modules-nav-enterprise---7-0-0---25BKv:before                   {content: \"\\EC56\"; }\n.tiles---modules-nav-enterprise---7-0-0---OjHjC:before                  {content: \"\\ECF0\"; }\n\n\n/*misc*/\n.info---modules-nav-enterprise---7-0-0---2oISc:before                     {content: \"i\"; }\n.infoCircle---modules-nav-enterprise---7-0-0---_ImUq:before               {content: \"I\"; }\n.question---modules-nav-enterprise---7-0-0---3u4yX:before  {\n    font-family: inherit; /* Roboto */\n    content: \"?\";\n}\n.questionCircle---modules-nav-enterprise---7-0-0---25y4r:before        {content: \"\\EC9D\"; }\n.boxUnchecked---modules-nav-enterprise---7-0-0---3VzE7:before          {content: \"\\2610\"; }\n.boxChecked---modules-nav-enterprise---7-0-0---Jv2WI:before            {content: \"\\2611\"; }\n.checkCircle---modules-nav-enterprise---7-0-0---2RUpp:before           {content: \"\\ECD3\"; }\n.alertCircle---modules-nav-enterprise---7-0-0---2b6M-:before           {content: \"\\ECD4\"; }\n.code---modules-nav-enterprise---7-0-0---lN5QL:before                  {content: \"\\ECD7\"; }\n.codeThin---modules-nav-enterprise---7-0-0---Z3L15:before              {content: \"\\ECD6\"; }\n.alert---modules-nav-enterprise---7-0-0---2qPtc:before,\n.error---modules-nav-enterprise---7-0-0---1rf_M:before                  {content: \"\\26A0\"; }\n.warning---modules-nav-enterprise---7-0-0---1zxRv:before                {content: \"\\ECE2\"; }\n\n/*objects*/\n.bell---modules-nav-enterprise---7-0-0---1RgTm:before                   {content: \"\\EC9C\"; }\n.bookmark---modules-nav-enterprise---7-0-0---3TzA6:before               {content: \"\\ECA1\"; }\n.bulb---modules-nav-enterprise---7-0-0---1CKxv:before                   {content: \"\\EC98\"; }\n.calendar---modules-nav-enterprise---7-0-0---30ePp:before               {content: \"\\EC9A\"; }\n.check---modules-nav-enterprise---7-0-0---1sUXt:before                  {content: \"\\2713\"; }\n.clock---modules-nav-enterprise---7-0-0---2sLol:before                  {content: \"\\231A\"; }\n.cloud---modules-nav-enterprise---7-0-0---2fvcU:before                  {content: \"\\2601\"; }\n.flag---modules-nav-enterprise---7-0-0---2TAv8:before                   {content: \"\\2691\"; }\n.gear---modules-nav-enterprise---7-0-0---2AjW5:before                   {content: \"\\2699\"; }\n.lightning---modules-nav-enterprise---7-0-0----yQd_:before              {content: \"\\2301\"; }\n.link---modules-nav-enterprise---7-0-0---hs8KW:before                   {content: \"\\ECF1\"; }\n.lock---modules-nav-enterprise---7-0-0---2Q9ko:before                   {content: \"\\EC9F\"; }\n.lockUnlocked---modules-nav-enterprise---7-0-0---3yNbl:before           {content: \"\\ECA0\"; }\n.mail---modules-nav-enterprise---7-0-0---3u6h1:before                   {content: \"\\2709\"; }\n.pencil---modules-nav-enterprise---7-0-0---1hzr0:before                 {content: \"\\270F\"; }\n.speechBubble---modules-nav-enterprise---7-0-0---2WpCE:before           {content: \"\\EC99\"; }\n.star---modules-nav-enterprise---7-0-0---3-ePz:before                   {content: \"\\2605\"; }\n.user---modules-nav-enterprise---7-0-0---2yVgj:before                   {content: \"\\EC84\"; }\n.clipboard---modules-nav-enterprise---7-0-0---b-m4i:before              {content: \"\\ECD5\"; }\n.paintbrush---modules-nav-enterprise---7-0-0---_aqnE:before             {content: \"\\ECCA\"; }\n.warningSign---modules-nav-enterprise---7-0-0---23k7y:before            {content: \"\\26A0\"; }\n\n\n/*results and visualizations*/\n.chartArea---modules-nav-enterprise---7-0-0---5pHaF:before             {content: \"\\ECA9\"; }\n.chartBar---modules-nav-enterprise---7-0-0---2pSnl:before              {content: \"\\ECAA\"; }\n.chartColumn---modules-nav-enterprise---7-0-0---3xR2m:before           {content: \"\\ECAB\"; }\n.chartPie---modules-nav-enterprise---7-0-0---2lK7W:before              {content: \"\\ECAC\"; }\n.chartScatter---modules-nav-enterprise---7-0-0---3-Ca7:before          {content: \"\\ECAD\"; }\n.chartBubble---modules-nav-enterprise---7-0-0---1XKGs:before           {content: \"\\ECB8\"; }\n.chartLine---modules-nav-enterprise---7-0-0---1-Q_C:before             {content: \"\\ECAE\"; }\n.singleValue---modules-nav-enterprise---7-0-0---1d8Ib:before           {content: \"\\ECAF\"; }\n.gaugeRadial---modules-nav-enterprise---7-0-0---2IQTk:before           {content: \"\\ECA2\"; }\n.gaugeMarker---modules-nav-enterprise---7-0-0---2mLap:before           {content: \"\\ECB0\"; }\n.gaugeFiller---modules-nav-enterprise---7-0-0---17wFu:before           {content: \"\\ECB1\"; }\n.choroplethMap---modules-nav-enterprise---7-0-0---2m-Yb:before         {content: \"\\ECB9\"; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }\n.externalViz---modules-nav-enterprise---7-0-0---3bt9v:before           {content: \"\\ECF2\"; }\n.labelRotationMinus90---modules-nav-enterprise---7-0-0---2xbIM:before  {content: \"\\ECE3\"; }\n.labelRotationMinus45---modules-nav-enterprise---7-0-0---3ThPx:before  {content: \"\\ECE4\"; }\n.labelRotation0---modules-nav-enterprise---7-0-0---3O-1F:before        {content: \"\\ECE5\"; }\n.labelRotation45---modules-nav-enterprise---7-0-0---3uWTm:before       {content: \"\\ECE6\"; }\n.labelRotation90---modules-nav-enterprise---7-0-0---XXdj8:before       {content: \"\\ECE7\"; }\n\n.chartAreaPlusTable---modules-nav-enterprise---7-0-0---2ROHJ:before             {content: \"\\ECA9    +  \\ECA8\"; }\n.chartBarPlusTable---modules-nav-enterprise---7-0-0---27pcw:before              {content: \"\\ECAA    +  \\ECA8\"; }\n.chartColumnPlusTable---modules-nav-enterprise---7-0-0---dEDH4:before           {content: \"\\ECAB    +  \\ECA8\"; }\n.chartPiePlusTable---modules-nav-enterprise---7-0-0---2g0hd:before              {content: \"\\ECAC    +  \\ECA8\"; }\n.chartScatterPlusTable---modules-nav-enterprise---7-0-0---1LIxM:before          {content: \"\\ECAD    +  \\ECA8\"; }\n.chartBubblePlusTable---modules-nav-enterprise---7-0-0---1r41s:before           {content: \"\\ECB8    +  \\ECA8\"; }\n.chartLinePlusTable---modules-nav-enterprise---7-0-0---3IbFo:before             {content: \"\\ECAE    +  \\ECA8\"; }\n.singleValuePlusTable---modules-nav-enterprise---7-0-0---1rZ1R:before           {content: \"\\ECAF    +  \\ECA8\"; }\n.gaugeRadialPlusTable---modules-nav-enterprise---7-0-0---38Vgz:before           {content: \"\\ECA2    +  \\ECA8\"; }\n.gaugeMarkerPlusTable---modules-nav-enterprise---7-0-0---3CHzm:before           {content: \"\\ECB0    +  \\ECA8\"; }\n.gaugeFillerPlusTable---modules-nav-enterprise---7-0-0----9srO:before           {content: \"\\ECB1    +  \\ECA8\"; }\n.locationPlusTable---modules-nav-enterprise---7-0-0---4-nFp:before              {content: \"\\EC80    +  \\ECA8\"; }\n.choroplethMapPlusTable---modules-nav-enterprise---7-0-0---1fh6O:before         {content: \"\\ECB9    +  \\ECA8\"; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }\n.externalVizPlusTable---modules-nav-enterprise---7-0-0---2mwYT:before           {content: \"\\ECF2    +  \\ECA8\"; }\n\n/*formatting*/\n.list---modules-nav-enterprise---7-0-0---qh5zR:before                   {content: \"\\ECA7\"; }\n.table---modules-nav-enterprise---7-0-0---10NBJ:before                  {content: \"\\ECA8\"; }\n.barBeside---modules-nav-enterprise---7-0-0---14szH:before              {content: \"\\ECB2\"; }\n.barStacked---modules-nav-enterprise---7-0-0---1fdWq:before             {content: \"\\ECB3\"; }\n.barStacked100---modules-nav-enterprise---7-0-0---2V8lF:before          {content: \"\\ECB4\"; }\n.missingValueSkipped---modules-nav-enterprise---7-0-0---1T9-q:before    {content: \"\\ECB5\"; }\n.missingValueZero---modules-nav-enterprise---7-0-0---2fa61:before       {content: \"\\ECB6\"; }\n.missingValueJoin---modules-nav-enterprise---7-0-0---1k73m:before       {content: \"\\ECB7\"; }\n\n\n/*documents*/\n.folder---modules-nav-enterprise---7-0-0---2NEOs:before                 {content: \"\\ECE9\"; }\n.document---modules-nav-enterprise---7-0-0---1JECy:before               {content: \"\\ECC3\"; }\n.report---modules-nav-enterprise---7-0-0---bMvkH:before                 {content: \"\\ECC3\"; }\n.reportSearch---modules-nav-enterprise---7-0-0---1Bl_v:before           {content: \"\\ECC4\"; }\n.reportPivot---modules-nav-enterprise---7-0-0---2T4Op:before            {content: \"\\ECC5\"; }\n.dashboard---modules-nav-enterprise---7-0-0---3BdKK:before              {content: \"\\ECC6\"; }\n.panel---modules-nav-enterprise---7-0-0---1neQi:before                  {content: \"\\ECC7\"; }\n.panelSearch---modules-nav-enterprise---7-0-0---2TQBN:before            {content: \"\\ECC8\"; }\n.panelPivot---modules-nav-enterprise---7-0-0---3Fxen:before             {content: \"\\ECC9\"; }\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---18scF",
		"space": "space---modules-nav-enterprise---7-0-0---3-vFp",
		"splunk": "splunk---modules-nav-enterprise---7-0-0---nKTms",
		"greater": "greater---modules-nav-enterprise---7-0-0---1JeQ1",
		"greaterRegistered": "greaterRegistered---modules-nav-enterprise---7-0-0---2rG5y",
		"hunk": "hunk---modules-nav-enterprise---7-0-0---2afoe",
		"enterprise": "enterprise---modules-nav-enterprise---7-0-0---1ZR4M",
		"cloudLogo": "cloudLogo---modules-nav-enterprise---7-0-0---1FEAw",
		"lite": "lite---modules-nav-enterprise---7-0-0---1zz5k",
		"circle": "circle---modules-nav-enterprise---7-0-0---2VwlF",
		"circleFilled": "circleFilled---modules-nav-enterprise---7-0-0---l3kG_",
		"boxFilled": "boxFilled---modules-nav-enterprise---7-0-0---2Th1I",
		"triangleUpSmall": "triangleUpSmall---modules-nav-enterprise---7-0-0---P2jUH",
		"triangleRight": "triangleRight---modules-nav-enterprise---7-0-0---3WFDr",
		"triangleRightSmall": "triangleRightSmall---modules-nav-enterprise---7-0-0---26c51",
		"triangleDown": "triangleDown---modules-nav-enterprise---7-0-0---2YPpY",
		"triangleDownSmall": "triangleDownSmall---modules-nav-enterprise---7-0-0---2oEma",
		"triangleLeft": "triangleLeft---modules-nav-enterprise---7-0-0---1YldC",
		"triangleLeftSmall": "triangleLeftSmall---modules-nav-enterprise---7-0-0---31bE6",
		"arrowUp": "arrowUp---modules-nav-enterprise---7-0-0---2bA7F",
		"arrowRight": "arrowRight---modules-nav-enterprise---7-0-0---2VBtY",
		"arrowDown": "arrowDown---modules-nav-enterprise---7-0-0---1s8L3",
		"arrowLeft": "arrowLeft---modules-nav-enterprise---7-0-0---3RpuM",
		"twoArrowsCycle": "twoArrowsCycle---modules-nav-enterprise---7-0-0---UKHo4",
		"external": "external---modules-nav-enterprise---7-0-0---37qg5",
		"rotateCounter": "rotateCounter---modules-nav-enterprise---7-0-0---3jvZX",
		"rotate": "rotate---modules-nav-enterprise---7-0-0---1DDmo",
		"location": "location---modules-nav-enterprise---7-0-0---1VC9A",
		"chevronLeft": "chevronLeft---modules-nav-enterprise---7-0-0---9X3dF",
		"chevronRight": "chevronRight---modules-nav-enterprise---7-0-0---Afbp5",
		"chevronUp": "chevronUp---modules-nav-enterprise---7-0-0---t86Yc",
		"chevronDown": "chevronDown---modules-nav-enterprise---7-0-0---2rxtK",
		"caret": "caret---modules-nav-enterprise---7-0-0---RPBls",
		"trash": "trash---modules-nav-enterprise---7-0-0---2u39G",
		"share": "share---modules-nav-enterprise---7-0-0---2gyXV",
		"export": "export---modules-nav-enterprise---7-0-0---EjbsA",
		"print": "print---modules-nav-enterprise---7-0-0---1xhQG",
		"search": "search---modules-nav-enterprise---7-0-0---2j73j",
		"searchThin": "searchThin---modules-nav-enterprise---7-0-0---2S53-",
		"pivot": "pivot---modules-nav-enterprise---7-0-0---2qg4M",
		"clone": "clone---modules-nav-enterprise---7-0-0---1djd0",
		"pause": "pause---modules-nav-enterprise---7-0-0---1XZXd",
		"stop": "stop---modules-nav-enterprise---7-0-0---3l1zY",
		"play": "play---modules-nav-enterprise---7-0-0---LR30p",
		"sort": "sort---modules-nav-enterprise---7-0-0---z1pLX",
		"sortedUp": "sortedUp---modules-nav-enterprise---7-0-0---3DxtY",
		"sortedDown": "sortedDown---modules-nav-enterprise---7-0-0---2HiFr",
		"minus": "minus---modules-nav-enterprise---7-0-0---1Uaw1",
		"minusCircle": "minusCircle---modules-nav-enterprise---7-0-0---2aCiC",
		"plus": "plus---modules-nav-enterprise---7-0-0---3cG6H",
		"plusCircle": "plusCircle---modules-nav-enterprise---7-0-0---32Cos",
		"x": "x---modules-nav-enterprise---7-0-0---LKB_d",
		"xCircle": "xCircle---modules-nav-enterprise---7-0-0---PSZBq",
		"close": "close---modules-nav-enterprise---7-0-0---20vBS",
		"cancel": "cancel---modules-nav-enterprise---7-0-0---1wJPD",
		"collapseLeft": "collapseLeft---modules-nav-enterprise---7-0-0---1MEj5",
		"expandRight": "expandRight---modules-nav-enterprise---7-0-0---N1lDh",
		"activity": "activity---modules-nav-enterprise---7-0-0---Erh48",
		"string": "string---modules-nav-enterprise---7-0-0---3a861",
		"number": "number---modules-nav-enterprise---7-0-0---3z7gc",
		"text": "text---modules-nav-enterprise---7-0-0---8wqX-",
		"notAllowed": "notAllowed---modules-nav-enterprise---7-0-0---9XPlH",
		"data": "data---modules-nav-enterprise---7-0-0---16OWU",
		"dataInput": "dataInput---modules-nav-enterprise---7-0-0---3thyt",
		"settings": "settings---modules-nav-enterprise---7-0-0---vxudJ",
		"distributedEnvironment": "distributedEnvironment---modules-nav-enterprise---7-0-0---3jbts",
		"visible": "visible---modules-nav-enterprise---7-0-0---1yyDY",
		"hidden": "hidden---modules-nav-enterprise---7-0-0---1k4_B",
		"boolean": "boolean---modules-nav-enterprise---7-0-0---1YGfe",
		"menu": "menu---modules-nav-enterprise---7-0-0---32p8u",
		"rows": "rows---modules-nav-enterprise---7-0-0---25BKv",
		"tiles": "tiles---modules-nav-enterprise---7-0-0---OjHjC",
		"info": "info---modules-nav-enterprise---7-0-0---2oISc",
		"infoCircle": "infoCircle---modules-nav-enterprise---7-0-0---_ImUq",
		"question": "question---modules-nav-enterprise---7-0-0---3u4yX",
		"questionCircle": "questionCircle---modules-nav-enterprise---7-0-0---25y4r",
		"boxUnchecked": "boxUnchecked---modules-nav-enterprise---7-0-0---3VzE7",
		"boxChecked": "boxChecked---modules-nav-enterprise---7-0-0---Jv2WI",
		"checkCircle": "checkCircle---modules-nav-enterprise---7-0-0---2RUpp",
		"alertCircle": "alertCircle---modules-nav-enterprise---7-0-0---2b6M-",
		"code": "code---modules-nav-enterprise---7-0-0---lN5QL",
		"codeThin": "codeThin---modules-nav-enterprise---7-0-0---Z3L15",
		"alert": "alert---modules-nav-enterprise---7-0-0---2qPtc",
		"error": "error---modules-nav-enterprise---7-0-0---1rf_M",
		"warning": "warning---modules-nav-enterprise---7-0-0---1zxRv",
		"bell": "bell---modules-nav-enterprise---7-0-0---1RgTm",
		"bookmark": "bookmark---modules-nav-enterprise---7-0-0---3TzA6",
		"bulb": "bulb---modules-nav-enterprise---7-0-0---1CKxv",
		"calendar": "calendar---modules-nav-enterprise---7-0-0---30ePp",
		"check": "check---modules-nav-enterprise---7-0-0---1sUXt",
		"clock": "clock---modules-nav-enterprise---7-0-0---2sLol",
		"cloud": "cloud---modules-nav-enterprise---7-0-0---2fvcU",
		"flag": "flag---modules-nav-enterprise---7-0-0---2TAv8",
		"gear": "gear---modules-nav-enterprise---7-0-0---2AjW5",
		"lightning": "lightning---modules-nav-enterprise---7-0-0----yQd_",
		"link": "link---modules-nav-enterprise---7-0-0---hs8KW",
		"lock": "lock---modules-nav-enterprise---7-0-0---2Q9ko",
		"lockUnlocked": "lockUnlocked---modules-nav-enterprise---7-0-0---3yNbl",
		"mail": "mail---modules-nav-enterprise---7-0-0---3u6h1",
		"pencil": "pencil---modules-nav-enterprise---7-0-0---1hzr0",
		"speechBubble": "speechBubble---modules-nav-enterprise---7-0-0---2WpCE",
		"star": "star---modules-nav-enterprise---7-0-0---3-ePz",
		"user": "user---modules-nav-enterprise---7-0-0---2yVgj",
		"clipboard": "clipboard---modules-nav-enterprise---7-0-0---b-m4i",
		"paintbrush": "paintbrush---modules-nav-enterprise---7-0-0---_aqnE",
		"warningSign": "warningSign---modules-nav-enterprise---7-0-0---23k7y",
		"chartArea": "chartArea---modules-nav-enterprise---7-0-0---5pHaF",
		"chartBar": "chartBar---modules-nav-enterprise---7-0-0---2pSnl",
		"chartColumn": "chartColumn---modules-nav-enterprise---7-0-0---3xR2m",
		"chartPie": "chartPie---modules-nav-enterprise---7-0-0---2lK7W",
		"chartScatter": "chartScatter---modules-nav-enterprise---7-0-0---3-Ca7",
		"chartBubble": "chartBubble---modules-nav-enterprise---7-0-0---1XKGs",
		"chartLine": "chartLine---modules-nav-enterprise---7-0-0---1-Q_C",
		"singleValue": "singleValue---modules-nav-enterprise---7-0-0---1d8Ib",
		"gaugeRadial": "gaugeRadial---modules-nav-enterprise---7-0-0---2IQTk",
		"gaugeMarker": "gaugeMarker---modules-nav-enterprise---7-0-0---2mLap",
		"gaugeFiller": "gaugeFiller---modules-nav-enterprise---7-0-0---17wFu",
		"choroplethMap": "choroplethMap---modules-nav-enterprise---7-0-0---2m-Yb",
		"externalViz": "externalViz---modules-nav-enterprise---7-0-0---3bt9v",
		"labelRotationMinus90": "labelRotationMinus90---modules-nav-enterprise---7-0-0---2xbIM",
		"labelRotationMinus45": "labelRotationMinus45---modules-nav-enterprise---7-0-0---3ThPx",
		"labelRotation0": "labelRotation0---modules-nav-enterprise---7-0-0---3O-1F",
		"labelRotation45": "labelRotation45---modules-nav-enterprise---7-0-0---3uWTm",
		"labelRotation90": "labelRotation90---modules-nav-enterprise---7-0-0---XXdj8",
		"chartAreaPlusTable": "chartAreaPlusTable---modules-nav-enterprise---7-0-0---2ROHJ",
		"chartBarPlusTable": "chartBarPlusTable---modules-nav-enterprise---7-0-0---27pcw",
		"chartColumnPlusTable": "chartColumnPlusTable---modules-nav-enterprise---7-0-0---dEDH4",
		"chartPiePlusTable": "chartPiePlusTable---modules-nav-enterprise---7-0-0---2g0hd",
		"chartScatterPlusTable": "chartScatterPlusTable---modules-nav-enterprise---7-0-0---1LIxM",
		"chartBubblePlusTable": "chartBubblePlusTable---modules-nav-enterprise---7-0-0---1r41s",
		"chartLinePlusTable": "chartLinePlusTable---modules-nav-enterprise---7-0-0---3IbFo",
		"singleValuePlusTable": "singleValuePlusTable---modules-nav-enterprise---7-0-0---1rZ1R",
		"gaugeRadialPlusTable": "gaugeRadialPlusTable---modules-nav-enterprise---7-0-0---38Vgz",
		"gaugeMarkerPlusTable": "gaugeMarkerPlusTable---modules-nav-enterprise---7-0-0---3CHzm",
		"gaugeFillerPlusTable": "gaugeFillerPlusTable---modules-nav-enterprise---7-0-0----9srO",
		"locationPlusTable": "locationPlusTable---modules-nav-enterprise---7-0-0---4-nFp",
		"choroplethMapPlusTable": "choroplethMapPlusTable---modules-nav-enterprise---7-0-0---1fh6O",
		"externalVizPlusTable": "externalVizPlusTable---modules-nav-enterprise---7-0-0---2mwYT",
		"list": "list---modules-nav-enterprise---7-0-0---qh5zR",
		"table": "table---modules-nav-enterprise---7-0-0---10NBJ",
		"barBeside": "barBeside---modules-nav-enterprise---7-0-0---14szH",
		"barStacked": "barStacked---modules-nav-enterprise---7-0-0---1fdWq",
		"barStacked100": "barStacked100---modules-nav-enterprise---7-0-0---2V8lF",
		"missingValueSkipped": "missingValueSkipped---modules-nav-enterprise---7-0-0---1T9-q",
		"missingValueZero": "missingValueZero---modules-nav-enterprise---7-0-0---2fa61",
		"missingValueJoin": "missingValueJoin---modules-nav-enterprise---7-0-0---1k73m",
		"folder": "folder---modules-nav-enterprise---7-0-0---2NEOs",
		"document": "document---modules-nav-enterprise---7-0-0---1JECy",
		"report": "report---modules-nav-enterprise---7-0-0---bMvkH",
		"reportSearch": "reportSearch---modules-nav-enterprise---7-0-0---1Bl_v",
		"reportPivot": "reportPivot---modules-nav-enterprise---7-0-0---2T4Op",
		"dashboard": "dashboard---modules-nav-enterprise---7-0-0---3BdKK",
		"panel": "panel---modules-nav-enterprise---7-0-0---1neQi",
		"panelSearch": "panelSearch---modules-nav-enterprise---7-0-0---2TQBN",
		"panelPivot": "panelPivot---modules-nav-enterprise---7-0-0---3Fxen"
	};

/***/ }),

/***/ 273:
/***/ (function(module, exports) {

	module.exports = "data:application/font-woff;base64,[encoded data, 18936 characters]"

/***/ }),

/***/ 274:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Splunk: Buttons */\n/*  =============== */\n\n\n.view---modules-nav-enterprise---7-0-0---1LYRJ {\n    display: inline-block;\n    padding: 4px 12px;\n    border: 1px solid transparent;\n    border-radius: 4px;\n    font-size: 12px;\n    line-height: 16px;\n    text-align: center;\n    vertical-align: middle;\n    cursor: pointer;\n    box-sizing: border-box;\n    text-decoration: none;\n    background-color: transparent;\n}\n\n.default---modules-nav-enterprise---7-0-0---1dGbP {\n    background-color: rgb(243, 243, 243);\n    background-image: linear-gradient(to bottom, rgb(247, 247, 247), #eee);\n    /*  Standard, IE10 */\n    background-repeat: repeat-x;\n    background-color: #eee;\n    border: 1px solid #bfbfbf;\n    border-top-color: #bfbfbf;\n    border-bottom-color: #bfbfbf;\n    color: #333;\n    box-shadow: inset 0px 1px 0 rgb(252, 252, 252);\n    text-shadow: none;\n}\n\n.default---modules-nav-enterprise---7-0-0---1dGbP:not([disabled]):hover {\n    background-color: rgb(248, 248, 248);\n    background-image: linear-gradient(to bottom, #f8f8f8, #f8f8f8);\n    /*  Standard, IE10 */\n    background-repeat: repeat-x;\n    background-color: #f8f8f8;\n    border-color: rgb(199, 199, 199);\n    border-top-color: rgb(199, 199, 199);\n    border-bottom-color: rgb(199, 199, 199);\n    background-position: 0 0;\n    box-shadow: 0px 1px 1px rgba(0,0,0,0.08);\n    color: #333;\n    text-decoration: none;\n}\n\n.default---modules-nav-enterprise---7-0-0---1dGbP[disabled]{\n    background: #e6e6e6;\n    filter: none;\n    border-color: #ccc;\n    border-top-color: #ccc;\n    border-bottom-color: #ccc;\n    cursor: not-allowed;\n    color: #999;\n    text-shadow: none;\n    opacity: 0.65;\n    box-shadow: none;\n}\n\n.default---modules-nav-enterprise---7-0-0---1dGbP[data-status=active],\n    .default---modules-nav-enterprise---7-0-0---1dGbP:active {\n    background-color: rgb(248, 248, 248);\n    background-image: linear-gradient(to bottom, #f8f8f8, #f8f8f8);\n    /*  Standard, IE10 */\n    background-repeat: repeat-x;\n    background-color: #f8f8f8;\n    border-color: rgb(199, 199, 199);\n    border-top-color: rgb(199, 199, 199);\n    border-bottom-color: rgb(199, 199, 199);\n    background-position: 0 0;\n    box-shadow: 0px 1px 1px rgba(0,0,0,0.08);\n    color: #333;\n    text-decoration: none;\n    color: #333;\n}\n\n.default---modules-nav-enterprise---7-0-0---1dGbP:not([disabled]):focus {\n    border-color: rgba(82, 168, 236, 0.8);\n    outline: 0;\n    border-collapse: separate;\n    /* Fix IE9 Issue with box-shadow */\n    box-shadow: 0 0 8px rgba(82, 168, 236, 0.6);\n    background-position: 0;\n    /*  bootstrap tries to animate this on hover & focus */\n}\n\n/*  Primary */\n/*  ------------------- */\n\n.primary---modules-nav-enterprise---7-0-0---2brfb {\n    background-color: rgb(97, 159, 53);\n    background-image: linear-gradient(to bottom, #65A637, rgb(91, 149, 50));\n    /*  Standard, IE10 */\n    background-repeat: repeat-x;\n    background-color: #65A637;\n    border: 1px solid rgb(77, 126, 42);\n    border-bottom-color: rgb(77, 126, 42);\n    border-top-color: rgb(77, 126, 42);\n    color: #fff;\n    box-shadow: inset 0px 1px 0 rgb(105, 172, 57);\n    text-shadow: none;\n}\n\n.primary---modules-nav-enterprise---7-0-0---2brfb:not([disabled]):hover {\n    background-color: rgb(114, 177, 59);\n    background-image: linear-gradient(to bottom, rgb(122, 184, 61), #65A637);\n    /*  Standard, IE10 */\n    background-repeat: repeat-x;\n    background-color: rgb(125, 195, 75);\n    border-color: rgb(84, 126, 42);\n    border-bottom-color: rgb(84, 126, 42);\n    border-top-color: rgb(84, 126, 42);\n    box-shadow: 0px 1px 1px rgba(0,0,0,0.08);\n    color: #fff;\n    text-decoration: none;\n}\n\n.primary---modules-nav-enterprise---7-0-0---2brfb[disabled] {\n    background: #e6e6e6;\n    filter: none;\n    border-color: #ccc;\n    border-top-color: #ccc;\n    border-bottom-color: #ccc;\n    cursor: not-allowed;\n    color: #999;\n    text-shadow: none;\n    opacity: 0.65;\n    box-shadow: none;\n}\n\n.primary---modules-nav-enterprise---7-0-0---2brfb[data-status=active],\n    .primary---modules-nav-enterprise---7-0-0---2brfb:active {\n    background-color: rgb(114, 177, 59);\n    background-image: linear-gradient(to bottom, rgb(122, 184, 61), #65A637);\n    /*  Standard, IE10 */\n    background-repeat: repeat-x;\n    background-color: rgb(125, 195, 75);\n    border-color: rgb(84, 126, 42);\n    border-bottom-color: rgb(84, 126, 42);\n    border-top-color: rgb(84, 126, 42);\n    box-shadow: 0px 1px 1px rgba(0,0,0,0.08);\n    color: #fff;\n    text-decoration: none;\n    filter: none;\n    color: #fff;\n}\n\n.primary---modules-nav-enterprise---7-0-0---2brfb:focus {\n    border-color: rgba(82, 168, 236, 0.8);\n    outline: 0;\n    border-collapse: separate;\n    /* Fix IE9 Issue with box-shadow */\n    box-shadow: 0 0 8px rgba(82, 168, 236, 0.6);\n    background-position: 0\n    /*  bootstrap tries to animate this on hover & focus */\n}\n\n.pill---modules-nav-enterprise---7-0-0---2GvYa {\n    display: inline-block;\n    padding: 0 10px; /*  note the vertical padding will be funky unless it's block, inline-block, or floated */\n    line-height: 27px;\n\n    box-shadow: none !important;\n}\n\n/*  states */\n\n.pill---modules-nav-enterprise---7-0-0---2GvYa:not([disabled]):hover,\n    .pill---modules-nav-enterprise---7-0-0---2GvYa[data-status=active],\n    .pill---modules-nav-enterprise---7-0-0---2GvYa:not([disabled]):focus\n    {\n    background-color: rgba(0, 0, 0, 0.05);\n    text-decoration: none;\n    border-radius: 4px;\n}\n\n.pill---modules-nav-enterprise---7-0-0---2GvYa[data-status=active]\n    {\n    color: #999;\n}\n\n.pill---modules-nav-enterprise---7-0-0---2GvYa:not([disabled]):focus {\n    outline: 0;\n    text-decoration: none;\n    background: rgba(61, 171, 255, 0.12);\n    box-shadow: none;\n    /* override default focus-link() */\n}\n\n.pill---modules-nav-enterprise---7-0-0---2GvYa[disabled]{\n    color: #bbb;\n    background: transparent;\n    cursor: default;\n}\n\n.pillSquare---modules-nav-enterprise---7-0-0---3A_2l {\n    padding: 0;\n    height: 27px;\n    width: 27px;\n    text-align: center;\n}\n\n.label---modules-nav-enterprise---7-0-0---16QEW:not(:last-child) {\n    padding-right: 0.25em;\n}\n\n.label---modules-nav-enterprise---7-0-0---16QEW:not(:first-child) {\n    padding-left: 0.25em;\n}\n\n.label---modules-nav-enterprise---7-0-0---16QEW:empty {\n    display: none;\n}\n\n/*  Layout Options */\n/*  -------------------------------------------------- */\n.block---modules-nav-enterprise---7-0-0---2np0V {\n  display: block;\n  width: 100%;\n}\n\n/*  Vertically space out multiple block buttons */\n.block---modules-nav-enterprise---7-0-0---2np0V + .block---modules-nav-enterprise---7-0-0---2np0V {\n  margin-top: 5px;\n}\n\n/* Horizontally space out multiple inline buttons */\n.inline---modules-nav-enterprise---7-0-0---2da29 + .inline---modules-nav-enterprise---7-0-0---2da29 {\n  margin-left: 5px;\n}\n\n/*  Button Sizes */\n/*  -------------------------------------------------- */\n.large---modules-nav-enterprise---7-0-0---SIe6a {\n  padding: 11px 19px;\n  font-size: 15px;\n  border-radius: 6px;\n}\n\n.small---modules-nav-enterprise---7-0-0---3j4nj {\n  padding: 2px 10px;\n  font-size: 10.2px;\n  border-radius: 3px;\n}\n\n.mini---modules-nav-enterprise---7-0-0---3Rd0C {\n  padding: 0 6px;\n  border-radius: 3px;\n}\n\n/*  Print */\n/*  -------------------------------------------------- */\n@media print {\n    .view---modules-nav-enterprise---7-0-0---1LYRJ {\n        background: none !important;\n        border-color: transparent !important;\n        padding: 0 !important;\n        color: #333 !important;\n        text-shadow: none !important;\n        box-shadow: none !important;\n    }\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---1LYRJ",
		"default": "default---modules-nav-enterprise---7-0-0---1dGbP view---modules-nav-enterprise---7-0-0---1LYRJ",
		"primary": "primary---modules-nav-enterprise---7-0-0---2brfb view---modules-nav-enterprise---7-0-0---1LYRJ",
		"pill": "pill---modules-nav-enterprise---7-0-0---2GvYa view---modules-nav-enterprise---7-0-0---1LYRJ",
		"pillSquare": "pillSquare---modules-nav-enterprise---7-0-0---3A_2l pill---modules-nav-enterprise---7-0-0---2GvYa view---modules-nav-enterprise---7-0-0---1LYRJ",
		"label": "label---modules-nav-enterprise---7-0-0---16QEW",
		"block": "block---modules-nav-enterprise---7-0-0---2np0V",
		"inline": "inline---modules-nav-enterprise---7-0-0---2da29",
		"large": "large---modules-nav-enterprise---7-0-0---SIe6a",
		"small": "small---modules-nav-enterprise---7-0-0---3j4nj",
		"mini": "mini---modules-nav-enterprise---7-0-0---3Rd0C"
	};

/***/ }),

/***/ 275:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(274), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n/* toggle */\n\n.view---modules-nav-enterprise---7-0-0---EXZlQ {\n    padding: 0 10px; /*  can't use vertical padding since badges/labels push this out */\n    color: #bbb;\n    background: transparent;\n    border: none;\n    border-left: 1px solid transparent;\n    border-right: 1px solid transparent;\n    line-height: 25px;\n    height: 25px;\n    white-space: nowrap;\n    display: block;\n    text-decoration: none;\n}\n\n.view---modules-nav-enterprise---7-0-0---EXZlQ:hover {\n    color: #fff;\n    background: #444;\n    outline: none;\n    text-decoration: none;\n}\n\n.view---modules-nav-enterprise---7-0-0---EXZlQ.active---modules-nav-enterprise---7-0-0---3sboq {\n    color: #fff;\n    background: #555;\n}\n\n.view---modules-nav-enterprise---7-0-0---EXZlQ:focus {\n    color: #fff;\n    background: #666;\n    outline: none;\n}\n\n\n\n.label---modules-nav-enterprise---7-0-0---14s46 {\n}\n\n\n\n.label---modules-nav-enterprise---7-0-0---14s46:not(:first-child) {\n    padding-left: 5px;\n}\n\n.truncateLabel---modules-nav-enterprise---7-0-0---1-q4W {\n    max-width: calc((100vw - 860px) / 2);\n    overflow: hidden;\n    text-overflow: ellipsis;\n    display: inline-block;\n    vertical-align: middle;\n}\n\n.optionalLabel---modules-nav-enterprise---7-0-0---3clnX {\n}\n\n@media only screen and (max-width: 1300px) {\n  .optionalLabel---modules-nav-enterprise---7-0-0---3clnX {\n    display: none;\n  }\n\n  .optionalLabel---modules-nav-enterprise---7-0-0---3clnX:not(:first-child):not(:last-child) {\n    /* still needs to create margin between the icon and the caret */\n    color: transparent;\n    width: 3px;\n    padding: 0;\n    display: inline-block;\n    overflow: hidden;\n    vertical-align: middle;\n  }\n}\n\n\n\n.badge---modules-nav-enterprise---7-0-0---1od4- {\n    display: inline-block;\n    vertical-align: baseline;\n\n    padding: 1px 4px 0 4px;\n    line-height: 17px;\n\n    border-radius: 4px;\n\n    white-space: nowrap;\n\n    font-size: 11px;\n    font-weight: normal;\n\n    background: rgb(229, 104, 21);\n    color: #fff;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---EXZlQ",
		"active": "active---modules-nav-enterprise---7-0-0---3sboq",
		"label": "label---modules-nav-enterprise---7-0-0---14s46 " + __webpack_require__(274).locals["label"] + "",
		"truncateLabel": "truncateLabel---modules-nav-enterprise---7-0-0---1-q4W label---modules-nav-enterprise---7-0-0---14s46 " + __webpack_require__(274).locals["label"] + "",
		"optionalLabel": "optionalLabel---modules-nav-enterprise---7-0-0---3clnX label---modules-nav-enterprise---7-0-0---14s46 " + __webpack_require__(274).locals["label"] + "",
		"badge": "badge---modules-nav-enterprise---7-0-0---1od4-"
	};

/***/ }),

/***/ 276:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(275), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n.view---modules-nav-enterprise---7-0-0---kQ9zk {\n    line-height: 40px;\n    height: 40px;\n}\n\n.label---modules-nav-enterprise---7-0-0---3tlNx {\n}\n\n.truncateLabel---modules-nav-enterprise---7-0-0---3aG5v {\n}\n\n.optionalLabel---modules-nav-enterprise---7-0-0---28S1e {\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---kQ9zk " + __webpack_require__(275).locals["view"] + "",
		"label": "label---modules-nav-enterprise---7-0-0---3tlNx " + __webpack_require__(275).locals["label"] + "",
		"truncateLabel": "truncateLabel---modules-nav-enterprise---7-0-0---3aG5v " + __webpack_require__(275).locals["truncateLabel"] + "",
		"optionalLabel": "optionalLabel---modules-nav-enterprise---7-0-0---28S1e " + __webpack_require__(275).locals["optionalLabel"] + ""
	};

/***/ }),

/***/ 277:
/***/ (function(module, exports) {

	module.exports = "<%\n    currentAppname = currentApp ? currentApp.name : 'search';   // TODO: search fallback is not always safe assumption\n%>\n<ul class=\"<%-css.appsList%>\" data-role=\"apps-list\">\n    <% _.each(apps, function(i) { %>\n    <li data-app=\"<%- i.name %>\">\n        <a href=\"<%- i.href %>\" <% if (currentApp && i.name === currentApp.name) { %>class=\"<%-css.selected%>\"<% } %> >\n\n            <% if (i.icon) { %> <img data-icosrc=\"<%-i.icon%>\" alt=\"menu icon\" class=\"<%-css.icon%>\" data-role=\"icon\" style=\"display:none;\"><% } %>\n            <span class=\"<%-css.label%>\"><%- i.label %></span>\n        </a>\n    </li>\n    <% }); %>\n</ul>\n<ul class=\"<%-css.menu%>\">\n    <li><a href=\"<%- make_url('manager', currentAppname, 'apps','local') %>\" data-role=\"manage-apps\"><%- _(\"Manage Apps\").t() %></a></li>\n    <% if(canViewRemoteApps){ %>\n    <li><a href=\"<%= appsRemote_url %>\" data-role=\"more-apps\"><%- _(\"Find More Apps\").t() %></a></li>\n    <%} %>\n</ul>\n"

/***/ }),

/***/ 278:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(268), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n.view---modules-nav-enterprise---7-0-0---2Wl3G {\n    min-width: 260px;\n}\n\n.appsList---modules-nav-enterprise---7-0-0---1hxcX {\n    max-height: calc(100vh - 120px);\n}\n\n.menu---modules-nav-enterprise---7-0-0---5l8xE {\n}\n\n.label---modules-nav-enterprise---7-0-0---HlVWi {\n    padding-right: 30px;\n}\n\n.icon---modules-nav-enterprise---7-0-0---2isiG {\n    height: 18px;\n    position: absolute;\n    right: 10px;\n    top: 4px;\n}\n\n\n.selected---modules-nav-enterprise---7-0-0---Ocylv {\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---2Wl3G " + __webpack_require__(268).locals["body"] + "",
		"appsList": "appsList---modules-nav-enterprise---7-0-0---1hxcX " + __webpack_require__(268).locals["menuSelectable"] + "",
		"menu": "menu---modules-nav-enterprise---7-0-0---5l8xE " + __webpack_require__(268).locals["menuSelectable"] + "",
		"label": "label---modules-nav-enterprise---7-0-0---HlVWi",
		"icon": "icon---modules-nav-enterprise---7-0-0---2isiG",
		"selected": "selected---modules-nav-enterprise---7-0-0---Ocylv " + __webpack_require__(268).locals["selected"] + ""
	};

/***/ }),

/***/ 279:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(271), undefined);
	exports.i(__webpack_require__(280), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n/* toggle */\n\n.view---modules-nav-enterprise---7-0-0---lSAkj {\n    height: 25px;\n}\n\n.toggle---modules-nav-enterprise---7-0-0---2Z6Cs {\n}\n\n.appName---modules-nav-enterprise---7-0-0---BLHOT {\n    display: inline-block;\n    vertical-align: middle;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    max-width: calc((100vw - 800px) / 2);\n}\n\n.appNameCloud---modules-nav-enterprise---7-0-0---fY1no {\n    max-width: 100px;\n}\n\n@media only screen and (min-width: 1100px) {\n  .appNameCloud---modules-nav-enterprise---7-0-0---fY1no {\n      max-width: 150px;\n  }\n}\n\n@media only screen and (min-width: 1500px) {\n  .appNameCloud---modules-nav-enterprise---7-0-0---fY1no {\n      max-width: 250px;\n  }\n}\n\n@media only screen and (min-width: 1700px) {\n  .appNameCloud---modules-nav-enterprise---7-0-0---fY1no {\n      max-width: 350px;\n  }\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---lSAkj " + __webpack_require__(271).locals["view"] + "",
		"toggle": "toggle---modules-nav-enterprise---7-0-0---2Z6Cs " + __webpack_require__(280).locals["toggle"] + "",
		"appName": "appName---modules-nav-enterprise---7-0-0---BLHOT",
		"appNameCloud": "appNameCloud---modules-nav-enterprise---7-0-0---fY1no appName---modules-nav-enterprise---7-0-0---BLHOT"
	};

/***/ }),

/***/ 280:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Splunk Bar */\n/*  ======================= */\n\n\n\n/*  Main Container */\n.view---modules-nav-enterprise---7-0-0---3Pzai {\n    animation: none 0s ease 0s 1 normal none running;\n    -webkit-backface-visibility: visible;\n            backface-visibility: visible;\n    background: transparent none repeat 0 0 / auto auto padding-box border-box scroll;\n    border: medium none currentColor;\n    border-collapse: separate;\n    border-image: none;\n    border-radius: 0;\n    border-spacing: 0;\n    bottom: auto;\n    box-shadow: none;\n    box-sizing: content-box;\n    caption-side: top;\n    clear: none;\n    clip: auto;\n    color: #000;\n    columns: auto;\n    column-count: auto;\n    column-fill: balance;\n    column-gap: normal;\n    column-rule: medium none currentColor;\n    column-span: 1;\n    column-width: auto;\n    content: normal;\n    counter-increment: none;\n    counter-reset: none;\n    cursor: auto;\n    direction: ltr;\n    display: inline;\n    empty-cells: show;\n    float: none;\n    font-family: serif;\n    font-size: medium;\n    font-style: normal;\n    font-variant: normal;\n    font-weight: normal;\n    font-stretch: normal;\n    line-height: normal;\n    height: auto;\n    -webkit-hyphens: none;\n        -ms-hyphens: none;\n            hyphens: none;\n    left: auto;\n    letter-spacing: normal;\n    list-style: disc outside none;\n    margin: 0;\n    max-height: none;\n    max-width: none;\n    min-height: 0;\n    min-width: 0;\n    opacity: 1;\n    orphans: 2;\n    outline: medium none invert;\n    overflow: visible;\n    overflow-x: visible;\n    overflow-y: visible;\n    padding: 0;\n    page-break-after: auto;\n    page-break-before: auto;\n    page-break-inside: auto;\n    perspective: none;\n    perspective-origin: 50% 50%;\n    position: static;\n    right: auto;\n    -moz-tab-size: 8;\n         tab-size: 8;\n    table-layout: auto;\n    text-align: left;\n    text-align-last: auto;\n    text-decoration: none;\n    text-indent: 0;\n    text-shadow: none;\n    text-transform: none;\n    top: auto;\n    transform: none;\n    transform-origin: 50% 50% 0;\n    transform-style: flat;\n    transition: none 0s ease 0s;\n    unicode-bidi: normal;\n    vertical-align: baseline;\n    visibility: visible;\n    white-space: normal;\n    widows: 2;\n    width: auto;\n    word-spacing: normal;\n    z-index: auto;\n    all: initial;\n    display: block;\n    min-width:750px;\n    height: 25px;\n    color: #bbb;\n    position:relative;\n    margin-bottom: 0;\n    background: #222;\n    font-size: 12px;\n    font-family: \"Roboto\", \"Droid\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n}\n\n.devTest---modules-nav-enterprise---7-0-0---20R1L {\n    line-height: 25px;\n    padding: 2px 10px;\n    border-radius: 10px;\n    background-color: #ed8440;\n    color: #fff;\n    text-transform: uppercase;\n}\n\n/*  Nav */\n.nav---modules-nav-enterprise---7-0-0---3VPuY {\n    float: left;\n    margin: 0;\n    padding: 0;\n    list-style: none;\n    white-space: no-wrap;\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-direction: row;\n        flex-direction: row;\n}\n\n\n.navRight---modules-nav-enterprise---7-0-0---CN04j {\n    float: right;\n}\n\n/*  Nav Logo */\n.brand---modules-nav-enterprise---7-0-0---2UH0f {\n    padding: 0 10px; /*  can't use vertical padding since badges/labels push this out */\n    color: #bbb;\n    border-left: 1px solid transparent;\n    border-right: 1px solid transparent;\n    line-height: 25px;\n    height: 25px;\n    white-space: nowrap;\n    display: block;\n    color: #fff;\n    padding: 0 10px 0 20px;\n    font-size: 17px;\n    float: left;\n    text-decoration: none;\n}\n.brand---modules-nav-enterprise---7-0-0---2UH0f:hover {\n    color: #fff;\n    background-color: #444;\n}\n.brand---modules-nav-enterprise---7-0-0---2UH0f:focus {\n    color: #fff;\n    background: #666;\n    outline: none;\n}\n\n.gt---modules-nav-enterprise---7-0-0---1YGkU {\n    color: #97999B;\n}\n\n.icon---modules-nav-enterprise---7-0-0---Kyp3B {\n    margin-right: 6px;\n    vertical-align: middle;\n    font-size: 1.4em;\n}\n\n\n.productMenuLabelCloud---modules-nav-enterprise---7-0-0---8Ee1k,\n.helpMenuLabelCloud---modules-nav-enterprise---7-0-0---389E_ {\n  display: inline;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---3Pzai",
		"devTest": "devTest---modules-nav-enterprise---7-0-0---20R1L",
		"nav": "nav---modules-nav-enterprise---7-0-0---3VPuY",
		"navRight": "navRight---modules-nav-enterprise---7-0-0---CN04j nav---modules-nav-enterprise---7-0-0---3VPuY",
		"brand": "brand---modules-nav-enterprise---7-0-0---2UH0f",
		"gt": "gt---modules-nav-enterprise---7-0-0---1YGkU",
		"icon": "icon---modules-nav-enterprise---7-0-0---Kyp3B",
		"productMenuLabelCloud": "productMenuLabelCloud---modules-nav-enterprise---7-0-0---8Ee1k",
		"helpMenuLabelCloud": "helpMenuLabelCloud---modules-nav-enterprise---7-0-0---389E_"
	};

/***/ }),

/***/ 281:
/***/ (function(module, exports) {

	module.exports = "<div class=\"<%=css.icon%>\" data-role=\"icon\"></div>\n<h5 class=\"<%=css.heading%>\"><%=model.get('label')%></h5>\n<div class=\"<%=css.list%>\" data-role=\"section-contents\">\n    <% var addedItems = []; %>\n    <%_.each(this.model.get('items'), function(item, i){ %>\n        <% if(_.indexOf(addedItems, item.entry.content.get('menu.label')) === -1) {%>\n            <a href=\"<%-item.get('url')%>\" class=\"<%=css.link%>\" data-entry=\"<%-item.entry.get('name')%>\"><%-_(item.entry.content.get('menu.label')).t() || _(item.entry.get('name')).t() || ''%></a>\n            <% addedItems.push(item.entry.content.get('menu.label')); %>\n        <%}%>\n    <%});%>\n</div>\n"

/***/ }),

/***/ 282:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n.view---modules-nav-enterprise---7-0-0---3YMVH {\n\tdisplay: inline-block;\n\twidth: 155px;\n\tposition: relative;\n\tpadding: 2px 20px 0 30px;\n\tmargin-bottom: 20px;\n\tcolor: #333;\n\tvertical-align: top;\n}\n\n.heading---modules-nav-enterprise---7-0-0---2KvxI {\n\tcolor: #999;\n\tfont-size: 10.2px;\n\ttext-transform: uppercase;\n\tfont-weight: normal;\n\tmargin: 0;\n    line-height: 16px;\n}\n\n.list---modules-nav-enterprise---7-0-0---1F2v6 {\n\tmargin: 0;\n}\n\n.icon---modules-nav-enterprise---7-0-0---rQGvo {\n\tfont-size: 25px;\n\tposition: absolute;\n\tleft: 2px;\n\ttop: 2px;\n\theight: 25px;\n\twidth: 22px;\n\tcolor: #999;\n\topacity: 0.8;\n\ttext-align: center;\n}\n\n.link---modules-nav-enterprise---7-0-0---1ArAk {\n\tcolor: #1e93c6;\n\ttext-decoration: none;\n\tcursor: pointer;\n\tline-height: 20px;\n\ttext-indent: -10px;\n\tpadding-left: 10px;\n    display: block;\n\n}\n\n.link---modules-nav-enterprise---7-0-0---1ArAk:hover {\n\tcolor: #3863a0;\n\ttext-decoration: underline;\n}\n\n.link---modules-nav-enterprise---7-0-0---1ArAk:focus {\n\tbox-shadow: 0 0 0 2px rgba(61, 171, 255, 0.12);\n\tbackground-color: rgba(61, 171, 255, 0.12);\n\toutline: 0;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---3YMVH",
		"heading": "heading---modules-nav-enterprise---7-0-0---2KvxI",
		"list": "list---modules-nav-enterprise---7-0-0---1F2v6",
		"icon": "icon---modules-nav-enterprise---7-0-0---rQGvo",
		"link": "link---modules-nav-enterprise---7-0-0---1ArAk"
	};

/***/ }),

/***/ 283:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Splunk: Modals */\n/*  ============== */\n\n\n/*  Background */\n.backdrop---modules-nav-enterprise---7-0-0---1SWh4 {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n  opacity: 0;\n}\n.backdrop---modules-nav-enterprise---7-0-0---1SWh4[data-modal-state=open] {\n  opacity: 0.40;\n}\n\n /*  modal container */\n.view---modules-nav-enterprise---7-0-0---3lx0Y {\n    animation: none 0s ease 0s 1 normal none running;\n    -webkit-backface-visibility: visible;\n            backface-visibility: visible;\n    background: transparent none repeat 0 0 / auto auto padding-box border-box scroll;\n    border: medium none currentColor;\n    border-collapse: separate;\n    border-image: none;\n    border-radius: 0;\n    border-spacing: 0;\n    bottom: auto;\n    box-shadow: none;\n    box-sizing: content-box;\n    caption-side: top;\n    clear: none;\n    clip: auto;\n    color: #000;\n    columns: auto;\n    column-count: auto;\n    column-fill: balance;\n    column-gap: normal;\n    column-rule: medium none currentColor;\n    column-span: 1;\n    column-width: auto;\n    content: normal;\n    counter-increment: none;\n    counter-reset: none;\n    cursor: auto;\n    direction: ltr;\n    display: inline;\n    empty-cells: show;\n    float: none;\n    font-family: serif;\n    font-size: medium;\n    font-style: normal;\n    font-variant: normal;\n    font-weight: normal;\n    font-stretch: normal;\n    line-height: normal;\n    height: auto;\n    -webkit-hyphens: none;\n        -ms-hyphens: none;\n            hyphens: none;\n    left: auto;\n    letter-spacing: normal;\n    list-style: disc outside none;\n    margin: 0;\n    max-height: none;\n    max-width: none;\n    min-height: 0;\n    min-width: 0;\n    opacity: 1;\n    orphans: 2;\n    outline: medium none invert;\n    overflow: visible;\n    overflow-x: visible;\n    overflow-y: visible;\n    padding: 0;\n    page-break-after: auto;\n    page-break-before: auto;\n    page-break-inside: auto;\n    perspective: none;\n    perspective-origin: 50% 50%;\n    position: static;\n    right: auto;\n    -moz-tab-size: 8;\n         tab-size: 8;\n    table-layout: auto;\n    text-align: left;\n    text-align-last: auto;\n    text-decoration: none;\n    text-indent: 0;\n    text-shadow: none;\n    text-transform: none;\n    top: auto;\n    transform: none;\n    transform-origin: 50% 50% 0;\n    transform-style: flat;\n    transition: none 0s ease 0s;\n    unicode-bidi: normal;\n    vertical-align: baseline;\n    visibility: visible;\n    white-space: normal;\n    widows: 2;\n    width: auto;\n    word-spacing: normal;\n    z-index: auto;\n    all: initial;\n    display: block;\n    position: fixed;\n    top: 0;\n    left: 50%;\n    width: 450px;\n    margin-left: -225px;\n    z-index: 1050;\n    background-color: #fff;\n    border: none;\n    border-radius: 6px;\n    box-shadow: 0 3px 7px rgba(0,0,0,0.3);\n    background-clip: padding-box;\n    outline: none;\n    transition: opacity .2s linear, top .2s ease-out;\n    opacity: 0;\n    font-size: 12px;\n    font-family: \"Roboto\", \"Droid\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n\n}\n/*  SPL-68751 - IE10 box shadow animation artifacts fix */\n.view---modules-nav-enterprise---7-0-0---3lx0Y:after {\n  content: \"\";\n  font-size: 0;\n  display: inline;\n  overflow: hidden;\n}\n.view---modules-nav-enterprise---7-0-0---3lx0Y[data-modal-state=open] {\n  top: 40px;\n  opacity: 1;\n}/*  modal */\n\n/*  Header\n/*  =============== */\n\n.headerWrapper---modules-nav-enterprise---7-0-0---25mzK {\n    border-bottom: 1px solid #ccc;\n    background: #f5f5f5;\n    border-top-left-radius: 8px;\n    border-top-right-radius: 8px;\n}\n\n.headerWrapper---modules-nav-enterprise---7-0-0---25mzK:empty {\n  display: none;\n}\n\n.header---modules-nav-enterprise---7-0-0---KHu5s {\n    position: relative;\n    padding: 15px 0 15px 20px;\n}\n\n.title---modules-nav-enterprise---7-0-0---3_elM {\n    font-size: 16px;\n    line-height: 22px;\n    margin: 0;\n    overflow-wrap: break-word;\n    padding-right: 40px;\n}\n\n.closeWrapper---modules-nav-enterprise---7-0-0---k-a_m {\n    top: 13px;\n    right: 15px;\n    position: absolute;\n}\n\n/*  Body\n/*  =============== */\n\n.body---modules-nav-enterprise---7-0-0---2CgiV {\n    max-height: calc(100vh - 200px);\n}\n.bodyPadded---modules-nav-enterprise---7-0-0---QhaAb {\n    padding: 20px;\n}\n.bodyScrolling---modules-nav-enterprise---7-0-0---VS4TJ {\n    overflow-y: auto;\n}\n.bodyScrollingPadded---modules-nav-enterprise---7-0-0---km7mt {\n    overflow-y: auto;\n}\n\n/*  Footer\n/*  =============== */\n\n.footer---modules-nav-enterprise---7-0-0---1oVAR {\n    padding: 10px;\n    margin-bottom: 0;\n    text-align: right; /*  right align buttons */\n    background: #f5f5f5;\n    border-top: 1px solid #ccc;\n    border-radius: 0 0 8px 8px;\n}\n\n.footer---modules-nav-enterprise---7-0-0---1oVAR:before,\n    .footer---modules-nav-enterprise---7-0-0---1oVAR:after {\n  display: table;\n  content: \"\";\n  /*  Fixes Opera/contenteditable bug: */\n  /*  http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952 */\n  line-height: 0;\n}\n\n.footer---modules-nav-enterprise---7-0-0---1oVAR:after {\n  clear: both;\n}\n\n.buttonsLeft---modules-nav-enterprise---7-0-0---LodWn {\n    float: left;\n}\n\n.buttonsRight---modules-nav-enterprise---7-0-0---3JTOh {\n    float: right;\n}\n", ""]);

	// exports
	exports.locals = {
		"backdrop": "backdrop---modules-nav-enterprise---7-0-0---1SWh4",
		"view": "view---modules-nav-enterprise---7-0-0---3lx0Y",
		"headerWrapper": "headerWrapper---modules-nav-enterprise---7-0-0---25mzK",
		"header": "header---modules-nav-enterprise---7-0-0---KHu5s headerWrapper---modules-nav-enterprise---7-0-0---25mzK",
		"title": "title---modules-nav-enterprise---7-0-0---3_elM",
		"closeWrapper": "closeWrapper---modules-nav-enterprise---7-0-0---k-a_m",
		"body": "body---modules-nav-enterprise---7-0-0---2CgiV",
		"bodyPadded": "bodyPadded---modules-nav-enterprise---7-0-0---QhaAb body---modules-nav-enterprise---7-0-0---2CgiV",
		"bodyScrolling": "bodyScrolling---modules-nav-enterprise---7-0-0---VS4TJ body---modules-nav-enterprise---7-0-0---2CgiV",
		"bodyScrollingPadded": "bodyScrollingPadded---modules-nav-enterprise---7-0-0---km7mt bodyPadded---modules-nav-enterprise---7-0-0---QhaAb body---modules-nav-enterprise---7-0-0---2CgiV",
		"footer": "footer---modules-nav-enterprise---7-0-0---1oVAR",
		"buttonsLeft": "buttonsLeft---modules-nav-enterprise---7-0-0---LodWn",
		"buttonsRight": "buttonsRight---modules-nav-enterprise---7-0-0---3JTOh"
	};

/***/ }),

/***/ 284:
/***/ (function(module, exports) {

	module.exports = "<% if(userCanAddData || userCanExploreData || managementConsoleAvailable) { %>\n<div class=\"<%-css.sidebar%>\" data-popdown-role=\"sidebar\">\n\t<% if(userCanAddData) { %>\n    \t<a href=\"<%= addDataURL %>\" class=\"<%-css.sidebarLink%>\" data-action=\"add-data\">\n            <svg width=\"52px\" height=\"52px\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\n                <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\n                    <g id=\"AddData\" sketch:type=\"MSLayerGroup\" transform=\"translate(1.000000, 1.000000)\">\n                        <path d=\"M50,25 C50,38.808 38.807,50 25,50 C11.193,50 0,38.808 0,25 C0,11.193 11.193,0 25,0 C38.807,0 50,11.193 50,25 L50,25 Z\" id=\"Stroke-2\" stroke=\"#65A637\" stroke-width=\"2\" sketch:type=\"MSShapeGroup\"></path>\n                        <path d=\"M28.714,25.72 C28.908,25.914 28.908,26.233 28.714,26.427 L24.473,30.668 C24.278,30.863 23.96,30.863 23.766,30.668 L19.524,26.42 C19.329,26.225 19.33,25.907 19.525,25.714 L19.831,25.41 C20.027,25.216 20.346,25.217 20.54,25.411 L23.052,27.923 C23.246,28.117 23.405,28.051 23.406,27.776 L23.413,17.866 C23.413,17.591 23.638,17.366 23.913,17.366 L24.34,17.366 C24.615,17.366 24.84,17.591 24.84,17.866 L24.833,27.776 C24.833,28.051 24.992,28.117 25.186,27.923 L27.698,25.411 C27.892,25.217 28.21,25.217 28.405,25.411 L28.714,25.72\" id=\"Fill-4\" fill=\"#65A637\" sketch:type=\"MSShapeGroup\"></path>\n                        <path d=\"M24,11 C17.3722529,11 12,12.5669725 12,14.5 C12,16.4330275 17.3722529,18 24,18 C30.6277471,18 36,16.4330275 36,14.5 C36,12.5669725 30.6277471,11 24,11 Z M35,14.4994903 C35,15.8807339 30.0760127,17 24.0005046,17 C17.9249966,17 13,15.8807339 13,14.4994903 C13,13.1192661 17.9249966,12 24.0005046,12 C30.0760127,12 35,13.1192661 35,14.4994903 Z\" id=\"Path\" fill=\"#65A637\" sketch:type=\"MSShapeGroup\"></path>\n                        <path d=\"M13.0000071,34.0049738 C13.0000024,34.0038246 13,34.0026752 13,34.0015257 C13.0257725,33.9752197 35,34.0015257 35,34.0015257 C35,34.0033372 34.9999941,34.0051484 34.9999824,34.0069591 C35.6381395,34.0050728 36.0014311,34.0027682 36,34 C36,36.210102 30.6277471,38 24,38 C17.3722529,38 12,36.210102 12,34 C12.0013058,34.0017685 12.3642568,34.0034414 13.0000071,34.0049738 Z M13.0000071,34.0049738 C13.0068329,35.6606217 17.9292108,37.002 24.0005046,37.002 C30.0693715,37.002 34.9892338,35.6616939 34.9999824,34.0069591 C31.09585,34.0184994 16.9041198,34.0143844 13.0000071,34.0049738 Z\" id=\"Fill-7\" fill=\"#65A637\" sketch:type=\"MSShapeGroup\"></path>\n                        <rect id=\"Rectangle-1\" fill=\"#65A637\" sketch:type=\"MSShapeGroup\" x=\"12\" y=\"14.5\" width=\"1\" height=\"19.5\"></rect>\n                        <rect id=\"Rectangle-2\" fill=\"#65A637\" sketch:type=\"MSShapeGroup\" x=\"35\" y=\"14.5\" width=\"1\" height=\"19.5\"></rect>\n                    </g>\n                </g>\n            </svg>\n            <%- _(\"Add Data\").t() %>\n        </a>\n\t<% } %>\n\n    <% if(userCanExploreData) { %>\n    <a href=\"<%= exploreDataURL %>\" class=\"<%-css.sidebarLink%>\" data-action=\"explore-data\">\n        <svg width=\"52px\" height=\"52px\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\n            <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\n                <g id=\"AddData\" sketch:type=\"MSLayerGroup\" transform=\"translate(1.000000, 1.000000)\">\n                    <path d=\"M50,25 C50,38.808 38.807,50 25,50 C11.193,50 0,38.808 0,25 C0,11.193 11.193,0 25,0 C38.807,0 50,11.193 50,25 L50,25 Z\" id=\"Stroke-2\" stroke=\"#65A637\" stroke-width=\"2\" sketch:type=\"MSShapeGroup\"></path>\n                    <path transform=\"translate(13.00000, 17.500000)\"  d=\"M8.77311574,5.419 C7.96336667,5.3545 7.15461852,5.263 6.34937361,5.1435 L6.34937361,6.583 C7.15461852,6.702 7.96336667,6.794 8.77311574,6.8585 L8.77311574,5.419 L8.77311574,5.419 Z M1.56644907,7.696 C1.04146343,7.543 0.518980093,7.3775 0,7.2 L0,8.64 C0.518980093,8.818 1.04146343,8.983 1.56644907,9.136 L1.56644907,7.696 L1.56644907,7.696 Z M6.34937361,8.743 C5.5441287,8.6235 4.74188657,8.4765 3.94414861,8.3025 L3.94414861,9.7425 C4.74188657,9.917 5.5441287,10.064 6.34937361,10.1835 L6.34937361,8.743 L6.34937361,8.743 Z M18.4825977,8.4675 C15.2801352,9.092 12.0136134,9.276 8.77311574,9.0185 L8.77311574,10.459 C12.0136134,10.716 15.2801352,10.5325 18.4825977,9.908 L18.4825977,8.4675 L18.4825977,8.4675 Z M23.2259856,7.2 C22.4472653,7.4665 21.6615384,7.705 20.8703065,7.9165 L20.8703065,9.3565 C21.6615384,9.1455 22.4472653,8.9065 23.2259856,8.64 L23.2259856,7.2 L23.2259856,7.2 Z M23.2259856,3.6005 C21.9282852,4.044 20.6110667,4.4115 19.2813366,4.7025 L19.2813366,6.142 C20.6110667,5.851 21.9282852,5.4835 23.2259856,5.04 L23.2259856,3.6005 L23.2259856,3.6005 Z M16.8761116,5.1435 C14.9973736,5.422 13.1016199,5.5505 11.2068671,5.529 L11.2068671,6.9685 C13.1016199,6.99 14.9973736,6.8615 16.8761116,6.583 L16.8761116,5.1435 L16.8761116,5.1435 Z M23.2259856,14.401 C21.4088046,15.0225 19.5545894,15.494 17.6803556,15.8155 L17.6803556,17.2555 C19.5545894,16.934 21.4088046,16.4625 23.2259856,15.841 L23.2259856,14.401 L23.2259856,14.401 Z M15.2621185,16.146 C10.1398801,16.6695 4.9320625,16.088 0,14.401 L0,15.841 C4.9320625,17.528 10.1398801,18.11 15.2621185,17.5865 L15.2621185,16.146 L15.2621185,16.146 Z M23.2259856,0 C21.4088046,0.6215 19.5545894,1.093 17.6803556,1.4145 L17.6803556,2.8545 C19.5545894,2.533 21.4088046,2.0615 23.2259856,1.44 L23.2259856,0 L23.2259856,0 Z M15.2621185,1.745 C13.9138713,1.8825 12.560119,1.944 11.2068671,1.9285 L11.2068671,3.369 C12.560119,3.384 13.9138713,3.323 15.2621185,3.185 L15.2621185,1.745 L15.2621185,1.745 Z M8.77311574,1.8185 C5.80286806,1.5825 2.8551412,0.9765 0,0 L0,1.44 C2.8551412,2.4165 5.80286806,3.023 8.77311574,3.2585 L8.77311574,1.8185 L8.77311574,1.8185 Z M3.94414861,4.7025 C2.61491898,4.4115 1.29770046,4.044 0,3.6005 L0,5.04 C1.29770046,5.484 2.61491898,5.851 3.94414861,6.142 L3.94414861,4.7025 L3.94414861,4.7025 Z M5.54512963,12.215 C3.6713963,11.8935 1.81718102,11.422 0,10.8005 L0,12.241 C1.81718102,12.862 3.6713963,13.334 5.54512963,13.655 L5.54512963,12.215 L5.54512963,12.215 Z M12.0191185,12.7295 C10.6658667,12.7445 9.31161389,12.6835 7.96386713,12.5455 L7.96386713,13.986 C9.31161389,14.1235 10.6658667,14.185 12.0191185,14.1695 L12.0191185,12.7295 L12.0191185,12.7295 Z M14.4523694,14.0595 L14.4523694,12.619 C17.4226171,12.3835 20.370344,11.777 23.2259856,10.8005 L23.2259856,12.241 C20.370344,13.2175 17.4226171,13.8235 14.4523694,14.0595 Z\" id=\"Imported-Layers\" fill=\"#65A637\" sketch:type=\"MSShapeGroup\"></path>\n                    <path d=\"M24,11 C17.3722529,11 12,12.5669725 12,14.5 C12,16.4330275 17.3722529,18 24,18 C30.6277471,18 36,16.4330275 36,14.5 C36,12.5669725 30.6277471,11 24,11 Z M35,14.4994903 C35,15.8807339 30.0760127,17 24.0005046,17 C17.9249966,17 13,15.8807339 13,14.4994903 C13,13.1192661 17.9249966,12 24.0005046,12 C30.0760127,12 35,13.1192661 35,14.4994903 Z\" id=\"Path\" fill=\"#65A637\" sketch:type=\"MSShapeGroup\"></path>\n                    <path d=\"M13.0000071,34.0049738 C13.0000024,34.0038246 13,34.0026752 13,34.0015257 C13.0257725,33.9752197 35,34.0015257 35,34.0015257 C35,34.0033372 34.9999941,34.0051484 34.9999824,34.0069591 C35.6381395,34.0050728 36.0014311,34.0027682 36,34 C36,36.210102 30.6277471,38 24,38 C17.3722529,38 12,36.210102 12,34 C12.0013058,34.0017685 12.3642568,34.0034414 13.0000071,34.0049738 Z M13.0000071,34.0049738 C13.0068329,35.6606217 17.9292108,37.002 24.0005046,37.002 C30.0693715,37.002 34.9892338,35.6616939 34.9999824,34.0069591 C31.09585,34.0184994 16.9041198,34.0143844 13.0000071,34.0049738 Z\" id=\"Fill-7\" fill=\"#65A637\" sketch:type=\"MSShapeGroup\"></path>\n                    <rect id=\"Rectangle-1\" fill=\"#65A637\" sketch:type=\"MSShapeGroup\" x=\"12\" y=\"14.5\" width=\"1\" height=\"19.5\"></rect>\n                    <rect id=\"Rectangle-2\" fill=\"#65A637\" sketch:type=\"MSShapeGroup\" x=\"35\" y=\"14.5\" width=\"1\" height=\"19.5\"></rect>\n                </g>\n            </g>\n        </svg>\n        <%- _(\"Explore Data\").t() %>\n    </a>\n    <% } %>\n\n\t<% if(managementConsoleAvailable) { %>\n    \t<a href=\"<%= managementConsoleURL %>\" class=\"<%-css.sidebarLink%>\" data-action=\"distributed-management-console\">\n            <svg width=\"52px\" height=\"52px\" viewBox=\"0 0 52 52\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sketch=\"http://www.bohemiancoding.com/sketch/ns\">\n                <g id=\"Page-1\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" sketch:type=\"MSPage\">\n                    <path d=\"M51,26 C51,39.808 39.807,51 26,51 C12.193,51 1,39.808 1,26 C1,12.193 12.193,1 26,1 C39.807,1 51,12.193 51,26 L51,26 Z\" id=\"Stroke-2\" stroke=\"#65A637\" stroke-width=\"2\" sketch:type=\"MSShapeGroup\"></path>\n                    <path d=\"M22.841066,29.158934 C23.7354338,30.0523306 24.7832326,30.5 26,30.5 C28.4199396,30.5 30.5,28.4189685 30.5,26 C30.5,23.5800604 28.4199396,21.5 26,21.5 C23.5810315,21.5 21.5,23.5800604 21.5,26 C21.5,27.2167674 21.9476694,28.2645662 22.841066,29.158934 L22.841066,29.158934 Z M34.6807156,28.1586387 C34.5705253,28.1586387 34.3809185,28.3313695 34.3809185,28.4574431 L33.6721265,30.1907074 C33.5937028,30.3326643 33.5937028,30.4746213 33.6721265,30.6155855 L34.97952,32.9474513 C35.0579438,33.1211748 35.0430532,33.2472485 34.9169796,33.3097889 L33.3097889,34.9169796 C33.2472485,35.0430532 33.1201821,35.0589365 32.9474513,34.97952 L30.6155855,33.6721265 C30.4736286,33.5937028 30.3316716,33.5937028 30.1907074,33.6721265 L28.3949027,34.3809185 C28.1894126,34.4911088 28.0951055,34.5864086 28.0951055,34.6807156 L27.4339635,37.2488454 C27.4339635,37.3739264 27.26024,37.5 27.1341663,37.5 L24.8658337,37.5 C24.7238767,37.5 24.6295697,37.4215762 24.5660365,37.2488454 L23.9048945,34.6807156 C23.9048945,34.5864086 23.8105874,34.4911088 23.6050973,34.3809185 L21.7467521,33.6095861 C21.6047952,33.5301696 21.4628383,33.5301696 21.3208814,33.6095861 L19.0525487,34.97952 C18.8788252,35.0589365 18.7537442,35.0430532 18.6902111,34.9169796 L17.0830204,33.3097889 C16.9569468,33.2472485 16.9420562,33.1211748 17.02048,32.9474513 L18.3914066,30.6791186 C18.4698304,30.5371617 18.4698304,30.3952048 18.3914066,30.2532479 L17.6190815,28.3949027 C17.5088912,28.1904053 17.4145841,28.0951055 17.3192844,28.0951055 L14.7521473,27.4339635 C14.5784238,27.3704303 14.5,27.2761233 14.5,27.1341663 L14.5,24.8658337 C14.5,24.7238767 14.5784238,24.6295697 14.7521473,24.5670292 L17.3192844,23.9048945 C17.4145841,23.9048945 17.5088912,23.8105874 17.6190815,23.60609 L18.3914066,21.7467521 C18.4698304,21.6047952 18.4698304,21.4628383 18.3914066,21.3208814 L17.02048,19.0525487 C16.9420562,18.8798179 16.9569468,18.7537442 17.0830204,18.6902111 L18.6902111,17.0840131 C18.7537442,16.9579395 18.8788252,16.9420562 19.0525487,17.02048 L21.3208814,18.3914066 C21.4628383,18.4698304 21.6047952,18.4698304 21.7467521,18.3914066 L23.5425569,17.6190815 C23.6686305,17.6190815 23.8413613,17.4304674 23.8413613,17.3202771 L24.5660365,14.7521473 C24.5660365,14.6260736 24.73976,14.5 24.8658337,14.5 L27.1341663,14.5 C27.26024,14.5 27.4339635,14.6260736 27.4339635,14.7521473 L28.1586387,17.3202771 C28.1586387,17.4304674 28.3313695,17.6190815 28.4574431,17.6190815 L30.1907074,18.3278735 C30.3316716,18.4072899 30.4736286,18.4072899 30.6155855,18.3278735 L32.9474513,17.02048 C33.1201821,16.9420562 33.2472485,16.9579395 33.3097889,17.0840131 L34.9169796,18.6902111 C35.0430532,18.7537442 35.0579438,18.8798179 34.97952,19.0525487 L33.6721265,21.3844145 C33.5937028,21.5263714 33.5937028,21.6683284 33.6721265,21.8092926 L34.3809185,23.5425569 C34.3809185,23.6686305 34.5705253,23.842354 34.6807156,23.842354 L37.2478527,24.5670292 C37.3739264,24.5670292 37.5,24.73976 37.5,24.8658337 L37.5,27.1341663 C37.5,27.26024 37.3739264,27.4339635 37.2478527,27.4339635 L34.6807156,28.1586387 Z\" id=\"Stroke-4\" stroke=\"#65A637\" sketch:type=\"MSShapeGroup\"></path>\n                    <path d=\"M40.091,35.629 C40.552,35.913 40.782,36.197 40.782,36.496 L40.782,37.617 L29.576,37.617 L29.576,36.496 C29.576,36.366 29.645,36.235 29.783,36.12 C29.913,36.005 30.121,35.875 30.389,35.714 C30.95,35.391 31.61,35.092 32.377,34.816 C33.114,34.562 33.467,34.401 33.736,34.148 C34.005,33.895 34.058,33.634 34.058,33.15 C33.145,32.329 32.377,30.901 32.377,29.773 C32.377,27.585 33.452,26.411 35.179,26.411 C36.906,26.411 37.98,27.585 37.98,29.773 C37.98,30.901 37.213,32.329 36.3,33.15 C36.3,34.048 36.561,34.271 37.98,34.816 C38.134,34.869 38.886,35.13 39.162,35.23 C39.439,35.33 39.884,35.506 40.091,35.629\" id=\"Fill-5\" fill=\"#65A637\" sketch:type=\"MSShapeGroup\"></path>\n                </g>\n            </svg>\n            <%- _(\"Monitoring Console\").t() %>\n        </a>\n\t<% } %>\n</div>\n<% } %>\n\n<div class=\"<%-css.body%>\" data-popdown-role=\"body\">\n</div><!-- /.popdown-dialog-body -->\n<% if(canShowMore) { %>\n<div class=\"<%-css.footer%>\" data-popdown-role=\"footer\">\n</div>\n<% } %>\n"

/***/ }),

/***/ 285:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(268), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Splunk: Component: Mega-Menu */\n/*  ============================ */\n\n.view---modules-nav-enterprise---7-0-0---1dFdk {\n}\n\n.body---modules-nav-enterprise---7-0-0---1ME5z {\n\tpadding: 18px 0 10px 20px;\n\twidth: 430px;\n\tcolumns: 2;\n\tcolumn-gap:0;\n\tbackground-color: #fff;\n}\n\n.bodyNarrow---modules-nav-enterprise---7-0-0---1Pl-w {\n\twidth: 220px;\n\tcolumns: 1;\n}\n\n.sidebar---modules-nav-enterprise---7-0-0---3A8my {\n\twidth: 150px;\n\tpadding: 20px 0;\n\tfloat: left;\n}\n\n.sidebar---modules-nav-enterprise---7-0-0---3A8my > a {\n\tcolor: #65A637;\n\ttext-align: center;\n\tdisplay: block;\n\ttext-decoration: none;\n\tpadding: 20px;\n}\n\n.sidebar---modules-nav-enterprise---7-0-0---3A8my > a:focus {\n\toutline: 0;\n\ttext-decoration: none;\n\tbackground: rgba(61, 171, 255, 0.12);\n\tbox-shadow: none;\n\t/* override default focus-link() */\n}\n\n.sidebar---modules-nav-enterprise---7-0-0---3A8my > a:hover {\n\tbackground:rgb(236, 246, 228);\n}\n\n.sidebar---modules-nav-enterprise---7-0-0---3A8my svg {\n\tmargin: 0 auto 10px auto;\n\tdisplay: block;\n}\n\n.sidebar---modules-nav-enterprise---7-0-0---3A8my + .body---modules-nav-enterprise---7-0-0---1ME5z {\n\tmargin-left: 152px;\n}\n\n.footer---modules-nav-enterprise---7-0-0---O_TAm {\n\ttext-align: right;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---1dFdk",
		"body": "body---modules-nav-enterprise---7-0-0---1ME5z",
		"bodyNarrow": "bodyNarrow---modules-nav-enterprise---7-0-0---1Pl-w view---modules-nav-enterprise---7-0-0---1dFdk",
		"sidebar": "sidebar---modules-nav-enterprise---7-0-0---3A8my",
		"footer": "footer---modules-nav-enterprise---7-0-0---O_TAm " + __webpack_require__(268).locals["footer"] + ""
	};

/***/ }),

/***/ 286:
/***/ (function(module, exports) {

	module.exports = "<li><a href=\"<%-accountLink%>\" data-action=\"edit\">\n    <% if (isCloud) { %>\n        <%- _(\"User Settings\").t() %>\n    <% } else { %>\n        <%- _(\"Account Settings\").t() %>\n    <% } %>\n</a></li>\n<% if (logoutLink) { %>\n    <li><a href=\"<%-logoutLink%>\" data-action=\"logout\"><%- _(\"Logout\").t() %></a></li>\n<% } %>\n<% if (showUserMenuProfile) { %>\n    <li><a href=\"<%=productMenuUriPrefix%>apex/CP_ProfilePage\" class=\"<%-css.linkProfile%>\" target=\"productlink\" data-action=\"profile\"><%- _(\"Profile\").t() %></a></li>\n<% } %>\n"

/***/ }),

/***/ 287:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(268), undefined);
	exports.i(__webpack_require__(280), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n.view---modules-nav-enterprise---7-0-0---2-R4j {\n}\n\n.iconUser---modules-nav-enterprise---7-0-0---2eZm9 {\n}\n\n.realname---modules-nav-enterprise---7-0-0---16HX9 {\n    display: inline-block;\n    vertical-align: middle;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    max-width: calc((100vw - 800px) / 2);\n}\n\n.realnameCloud---modules-nav-enterprise---7-0-0---3dVUu {\n    max-width: 100px;\n}\n\n@media only screen and (min-width: 1100px) {\n  .realnameCloud---modules-nav-enterprise---7-0-0---3dVUu {\n      max-width: 150px;\n  }\n}\n\n@media only screen and (min-width: 1500px) {\n  .realnameCloud---modules-nav-enterprise---7-0-0---3dVUu {\n      max-width: 250px;\n  }\n}\n\n@media only screen and (min-width: 1700px) {\n  .realnameCloud---modules-nav-enterprise---7-0-0---3dVUu {\n      max-width: 350px;\n  }\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---2-R4j " + __webpack_require__(268).locals["menu"] + "",
		"iconUser": "iconUser---modules-nav-enterprise---7-0-0---2eZm9 " + __webpack_require__(280).locals["icon"] + "",
		"realname": "realname---modules-nav-enterprise---7-0-0---16HX9",
		"realnameCloud": "realnameCloud---modules-nav-enterprise---7-0-0---3dVUu realname---modules-nav-enterprise---7-0-0---16HX9"
	};

/***/ }),

/***/ 288:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Messages appears in Splunk Bar and Lite Bar */\n/*  ======================= */\n\n\n.view---modules-nav-enterprise---7-0-0---3Apy2 {\n    color: #333;\n    position: relative;\n    background-color: #fff;\n    padding: 5px 30px 5px 35px;\n}\n\n\n.view---modules-nav-enterprise---7-0-0---3Apy2 + .view---modules-nav-enterprise---7-0-0---3Apy2 {\n    border-top: 1px dotted #ccc;\n}\n\n.time---modules-nav-enterprise---7-0-0---1KLDZ {\n    color: #999;\n    font-size: 11px;\n    display: block;\n}\n\n.icon---modules-nav-enterprise---7-0-0---2KntS {\n    position: absolute;\n    top: 5px;\n    left: 10px;\n    font-size: 150%;\n}\n\n.icon---modules-nav-enterprise---7-0-0---2KntS img {\n    width: 18px;\n}\n\n.info---modules-nav-enterprise---7-0-0---3sEG7,\n.debug---modules-nav-enterprise---7-0-0---1NTIQ {\n    color: #65A637;\n}\n.warn---modules-nav-enterprise---7-0-0---3_EUy {\n    color: #f2b827;\n}\n.greater---modules-nav-enterprise---7-0-0---19IJq {\n    color: #65A637;\n    font-size: 1.5em;\n    top: 0;\n}\n.important---modules-nav-enterprise---7-0-0---tnhqz,\n.error---modules-nav-enterprise---7-0-0---2M1ef,\n.critical---modules-nav-enterprise---7-0-0---8i-BW\n{\n    color: #d6563c;\n}\n\n.delete---modules-nav-enterprise---7-0-0---1RKSV {\n    position: absolute;\n    top: 0;\n    right: 0;\n    color: #999;\n    width: 25px;\n    line-height: 25px;\n    text-align: center;\n    font-size: 120%;\n    border: none;\n}\n\n.delete---modules-nav-enterprise---7-0-0---1RKSV:hover, .delete---modules-nav-enterprise---7-0-0---1RKSV:focus, .delete---modules-nav-enterprise---7-0-0---1RKSV:active {\n    color: #1e93c6;\n}\n\n.delete---modules-nav-enterprise---7-0-0---1RKSV:focus {\n    outline: 0;\n    text-decoration: none;\n    background: rgba(61, 171, 255, 0.12);\n    box-shadow: none;\n    /* override default focus-link() */\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---3Apy2",
		"time": "time---modules-nav-enterprise---7-0-0---1KLDZ",
		"icon": "icon---modules-nav-enterprise---7-0-0---2KntS",
		"info": "info---modules-nav-enterprise---7-0-0---3sEG7 icon---modules-nav-enterprise---7-0-0---2KntS",
		"debug": "debug---modules-nav-enterprise---7-0-0---1NTIQ icon---modules-nav-enterprise---7-0-0---2KntS",
		"warn": "warn---modules-nav-enterprise---7-0-0---3_EUy icon---modules-nav-enterprise---7-0-0---2KntS",
		"greater": "greater---modules-nav-enterprise---7-0-0---19IJq icon---modules-nav-enterprise---7-0-0---2KntS",
		"important": "important---modules-nav-enterprise---7-0-0---tnhqz icon---modules-nav-enterprise---7-0-0---2KntS",
		"error": "error---modules-nav-enterprise---7-0-0---2M1ef icon---modules-nav-enterprise---7-0-0---2KntS",
		"critical": "critical---modules-nav-enterprise---7-0-0---8i-BW icon---modules-nav-enterprise---7-0-0---2KntS",
		"delete": "delete---modules-nav-enterprise---7-0-0---1RKSV"
	};

/***/ }),

/***/ 289:
/***/ (function(module, exports) {

	module.exports = "<div class=\"<%-css.messageList%>\" data-role=\"messages-list\">\n    <div class=\"<%-css.noMessages%>\" data-role=\"no-messages\"><%- _(\"You have no messages.\").t() %></div>\n    <div class=\"<%-css.splunkMessagesDivider%>\" data-role=\"messages-list-divider\"></div>\n</div>\n<div class=\"<%-css.footer%>\" style=\"display: none;\" data-role=\"footer\">\n</div>\n"

/***/ }),

/***/ 290:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(268), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Messages styles in Splunk Bar */\n/*  ======================= */\n\n.view---modules-nav-enterprise---7-0-0---1Vep_ {\n    width: 360px;\n}\n\n.footer---modules-nav-enterprise---7-0-0---3fh_r {\n    text-align: right;\n}\n\n.noMessages---modules-nav-enterprise---7-0-0---2Mx-8 {\n    padding: 10px;\n    color: #333;\n    text-align: center;\n    min-width: 200px;\n    background: #fff;\n}\n\n.messageList---modules-nav-enterprise---7-0-0---1xRq0 {\n    max-height: calc(100vh - 100px);\n    overflow-y: auto;\n    width: 360px;\n    margin: 0;\n}\n\n.splunkMessagesDivider---modules-nav-enterprise---7-0-0---2X3H1 {\n    border-top: 1px solid #ccc;\n    height: 0px;\n}\n\n/*  messages dialog overrides */\n.deleteAllMessages---modules-nav-enterprise---7-0-0----T35b {\n    margin: 0;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---1Vep_",
		"footer": "footer---modules-nav-enterprise---7-0-0---3fh_r " + __webpack_require__(268).locals["footer"] + "",
		"noMessages": "noMessages---modules-nav-enterprise---7-0-0---2Mx-8 " + __webpack_require__(268).locals["body"] + "",
		"messageList": "messageList---modules-nav-enterprise---7-0-0---1xRq0",
		"splunkMessagesDivider": "splunkMessagesDivider---modules-nav-enterprise---7-0-0---2X3H1",
		"deleteAllMessages": "deleteAllMessages---modules-nav-enterprise---7-0-0----T35b"
	};

/***/ }),

/***/ 291:
/***/ (function(module, exports) {

	module.exports = "<li>\n    <a class=\"<%-css.primaryLink%>\" href=\"<%= jobLink %>\" data-role=\"jobs-link\"><%- _(\"Jobs\").t() %></a>\n    <a class=\"<%-css.secondaryLink%>\" href=\"<%= jobLink %>\" target=\"_blank\" data-role=\"jobs-link-external\"></a>\n</li>\n<% if (typeof alertsLink !== \"undefined\" && alertsLink !== null) { %>\n<li>\n    <a class=\"<%-css.primaryLink%>\" href=\"<%= alertsLink %>\" data-role=\"alerts-link\"><%- _(\"Triggered Alerts\").t() %></a>\n    <a class=\"<%-css.secondaryLink%>\" href=\"<%= alertsLink %>\" target=\"_blank\" data-role=\"alerts-link-external\"></a>\n</li>\n<% } %>\n"

/***/ }),

/***/ 292:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(268), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n/* Header */\n\n.view---modules-nav-enterprise---7-0-0---3MPp_ {\n\n}\n\n.view---modules-nav-enterprise---7-0-0---3MPp_ li {}\n\n.primaryLink---modules-nav-enterprise---7-0-0---2NzLg {\n}\n\n.secondaryLink---modules-nav-enterprise---7-0-0---v6mv1 {\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---3MPp_ " + __webpack_require__(268).locals["menu"] + "",
		"primaryLink": "primaryLink---modules-nav-enterprise---7-0-0---2NzLg " + __webpack_require__(268).locals["primaryLink"] + "",
		"secondaryLink": "secondaryLink---modules-nav-enterprise---7-0-0---v6mv1 " + __webpack_require__(268).locals["secondaryLink"] + ""
	};

/***/ }),

/***/ 293:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(283), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n.view---modules-nav-enterprise---7-0-0---1UmFw {\n    font-size: 25px;\n}\n\n.splunk---modules-nav-enterprise---7-0-0---ge6pd {\n\n}\n\n.prompt---modules-nav-enterprise---7-0-0---1jcIx {\n    max-width: 600px;\n}\n\n.prompt---modules-nav-enterprise---7-0-0---1jcIx, .product---modules-nav-enterprise---7-0-0---1_ZsH {\n    color: #65A637;\n}\n\n.promptLite---modules-nav-enterprise---7-0-0---2DETK, .productLite---modules-nav-enterprise---7-0-0---123we {\n    color: #F58220;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---1UmFw " + __webpack_require__(283).locals["title"] + "",
		"splunk": "splunk---modules-nav-enterprise---7-0-0---ge6pd",
		"prompt": "prompt---modules-nav-enterprise---7-0-0---1jcIx",
		"product": "product---modules-nav-enterprise---7-0-0---1_ZsH",
		"promptLite": "promptLite---modules-nav-enterprise---7-0-0---2DETK",
		"productLite": "productLite---modules-nav-enterprise---7-0-0---123we"
	};

/***/ }),

/***/ 294:
/***/ (function(module, exports) {

	module.exports = "<dl class=\"<%=css.dotted%>\">\n    <dt><%= _('Splunk Version').t() %></dt>\n    <dd data-content=\"splunk-version\"><%- version %></dd>\n    <dt><%= _('Splunk Build').t() %></dt>\n    <dd data-content=\"build\"><%- build %></dd>\n</dl>\n<% if (listOfProducts && !isLite) { %>\n<dl class=\"<%=css.dotted%>\">\n    <dt><%= _('List of Products:').t() %></dt>\n    <dd data-content=\"list-of-products\"><%- listOfProducts %></dd>\n</dl>\n<% } %>\n<dl class=\"<%=css.dotted%>\">\n    <dt><%= _('Server Name').t() %></dt>\n    <dd data-content=\"server-name\"><%- serverName %></dd>\n</dl>\n<p>\n    &copy; <%- copyrightYear %> <%= _('Splunk Inc.  All rights reserved.').t()%>\n</p>\n<p>\n    <% if (isCloud) { %>\n        <% var termsLink = sprintf('<a href=\"https://www.splunk.com/en_us/legal/terms/splunk-cloud-terms-of-service.html\" target=\"_blank\" data-action=\"cloud-terms-link\">%s</a>', _('Terms of Service').t()); %>\n        <%= sprintf(_('All use of this service is subject to the Splunk Cloud %s.').t(), termsLink) %>\n    <% } else { %>\n        <% var licenseLink = sprintf('<a href=\"http://www.splunk.com/en_us/legal/splunk-software-license-agreement.html\" target=\"_blank\" data-action=\"server-license-link\">%s</a>', _('Splunk Software License Agreement').t()); %>\n        <% var termsLink =  _('terms and conditions').t(); %>\n        <%= sprintf(_('All use of this Software is subject to the %s of the %s.').t(), termsLink, licenseLink) %>\n    <% } %>\n</p>\n<h3><%= _('Trademarks').t() %></h3>\n<p>\n    <%= _('Splunk&reg;, Splunk&gt;&reg;, Listen to Your Data&reg;, The Engine for Machine Data&reg;, Splunk Cloud&#8482;, Splunk Light&reg; and SPL&#8482; are trademarks and registered trademarks of Splunk Inc. and/or its subsidiaries in the United States and other countries. All other brand names, product names, or trademarks belong to their respective owners.').t() %>\n</p>\n<h3><%= _('Patents').t() %></h3>\n<p>\n    <% var patentLink = sprintf('<a href=\"http://www.splunk.com/en_us/legal/patents.html\" target=\"_blank\" data-action=\"server-patents-link\">%s</a>', _('here').t()); %>\n    <%= sprintf(_('Certain features and functionalities of this Software are or may be protected by patents owned by Splunk Inc. that are listed %s.').t(), patentLink) %>\n</p>\n<h3>\n    <a href=\"<%- thirdPartyCredits %>\" target=\"_blank\" data-action=\"server-third-party-link\"><%= _('Third-Party Software Credits and Attributions').t() %></a>\n</h3>\n<div class=\"<%=css.divider%>\"></div>\n<h3 class=\"<%=css.appSectionHeader%>\" data-content=\"app-name\"><%- sprintf(_('Current Application: %s').t(), currentApp) %></h3>\n<dl class=\"<%=css.dotted%>\">\n    <% if (appVersion) { %>\n        <dt><%= _('App Version').t() %></dt>\n        <dd data-content=\"app-version\"><%- appVersion %></dd>\n    <% } %>\n    <% if (appBuild) { %>\n        <dt><%= _('App Build').t() %></dt>\n        <dd data-content=\"app-build\"><%- appBuild %></dd>\n    <% } %>\n</dl>\n<% if (appAttributionLink) { %>\n    <a class=\"<%=css.attributionLink %>\" href=\"<%- appAttributionLink %>\" target=\"_blank\" data-action=\"app-third-party-link\"><%- _('Third-Party Software Credits and Attributions').t() %></a>\n<% } %>\n"

/***/ }),

/***/ 295:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n.view---modules-nav-enterprise---7-0-0---31DuJ {\n\tfont-size: 12px;\n}\n\n.view---modules-nav-enterprise---7-0-0---31DuJ p {\n\tmargin: 0 0 8px;\n}\n\n.dotted---modules-nav-enterprise---7-0-0---1eQhH {\n    line-height: 20px;\n    margin-top: 0;\n}\n\n.dotted---modules-nav-enterprise---7-0-0---1eQhH dt {\n\tfloat: left;\n\twidth: 120px;\n\toverflow: hidden;\n\twhite-space: nowrap;\n\tmargin-right: 5px;\n\tfont-weight: normal;\n\tline-height: 20px;\n\t/*  SPL-69719 - fix IE10 when in dropdown */\n\tword-wrap: normal;\n}\n\n.dotted---modules-nav-enterprise---7-0-0---1eQhH dd {\n\tline-height: 20px;\n\tmargin-left: 125px;\n}\n\n.dotted---modules-nav-enterprise---7-0-0---1eQhH dt:after {\n\tcontent: \" ............................................\";\n}\n\n.divider---modules-nav-enterprise---7-0-0---3_zx6 {\n\theight: 1px;\n\tmargin: 7px 1px;\n\t/*  8px 1px */\n\toverflow: hidden;\n\tbackground-color: #ccc;\n\tmargin-top: 15px;\n}\n\n\n.appSectionHeader---modules-nav-enterprise---7-0-0---1mxKd {\n\tmargin-top: 10px;\n\tfont-weight: bold;\n}\n\n.attributionLink---modules-nav-enterprise---7-0-0---18p43 {\n\tmargin-bottom: 10px;\n\tdisplay: block;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---31DuJ",
		"dotted": "dotted---modules-nav-enterprise---7-0-0---1eQhH",
		"divider": "divider---modules-nav-enterprise---7-0-0---3_zx6",
		"appSectionHeader": "appSectionHeader---modules-nav-enterprise---7-0-0---1mxKd",
		"attributionLink": "attributionLink---modules-nav-enterprise---7-0-0---18p43"
	};

/***/ }),

/***/ 296:
/***/ (function(module, exports) {

	/*** IMPORTS FROM imports-loader ***/
	(function() {

	/**
	 * Global functions for defining classes and managing resources.
	 * 
	 * The following functions are declared globally:
	 * 
	 *     jg_namespace
	 *     jg_import
	 *     jg_extend
	 *     jg_static
	 *     jg_mixin
	 *     jg_has_mixin
	 * 
	 * Copyright (c) 2012 Jason Gatt
	 * 
	 * Dual licensed under the MIT and GPL licenses:
	 * http://www.opensource.org/licenses/mit-license.php
	 * http://www.gnu.org/licenses/gpl.html
	 */
	(function(global, evalScript)
	{

	  // prevent duplicate definitions
	  if (global.jg_namespace && global.jg_import)
	    return;

		// Private Variables

		var _namespaces = {};
		var _imported = {};
		var _loading = {};
		var _sourcePaths = {};
		var _resourceTypeInfo = {};
		var _resourceInfo = {};
		var _resourceDependencyList = [];
		var _mixinCount = 0;
		var _mixinDependencies = null;

		// Private Functions

		var _normalizePath = function(path)
		{
			return (path.substring(path.length - 6) === ":class") ? path.substring(0, path.length - 6) : path;
		};

		var _getPathInfo = function(path)
		{
			var pathInfo = {};
			pathInfo.path = path;

			var typeIndex = path.indexOf(":");
			pathInfo.classPath = (typeIndex < 0) ? path : path.substring(0, typeIndex);
			pathInfo.type = (typeIndex < 0) ? "class" : path.substring(typeIndex + 1);
			if (!pathInfo.classPath || !pathInfo.type)
				return null;

			var namespaceIndex = pathInfo.classPath.lastIndexOf(".");
			pathInfo.namespace = (namespaceIndex < 0) ? "" : pathInfo.classPath.substring(0, namespaceIndex);
			pathInfo.className = (namespaceIndex < 0) ? pathInfo.classPath : pathInfo.classPath.substring(namespaceIndex + 1);
			pathInfo.name = (pathInfo.type === "class") ? pathInfo.className : (pathInfo.className + ":" + pathInfo.type);

			return pathInfo;
		};

		var _getSourcePath = function(path)
		{
			path += ".";

			var sourcePathList = [];
			var sourcePath;
			var url;

			for (sourcePath in _sourcePaths)
			{
				if (_sourcePaths.hasOwnProperty(sourcePath))
					sourcePathList.push(sourcePath);
			}
			sourcePathList.sort();

			for (var i = sourcePathList.length - 1; i >= 0; i--)
			{
				sourcePath = sourcePathList[i];
				if (path.substring(0, sourcePath.length) === sourcePath)
				{
					url = _sourcePaths[sourcePath] + path.substring(sourcePath.length).replace(/\./g, "/");
					return url.substring(0, url.length - 1);
				}
			}

			url = path.replace(/\./g, "/");
			return url.substring(0, url.length - 1);
		};

		var _appendConstructor = function(baseConstructor, mixinConstructor)
		{
			var constructor = function()
			{
				baseConstructor.apply(this, arguments);
				mixinConstructor.call(this);
			};
			return constructor;
		};

		// Global Functions

		var jg_namespace = global.jg_namespace = function(path, closure)
		{
			if (path == null)
				throw new Error("Parameter path must be non-null.");
			if (typeof path !== "string")
				throw new Error("Parameter path must be a string.");
			if ((closure != null) && (typeof closure !== "function"))
				throw new Error("Parameter closure must be a function.");

			var ns = _namespaces[path];
			if (!ns)
			{
				var subPaths = path ? path.split(".") : [];
				var subPath;
				var scope;

				ns = global;
				for (var i = 0, l = subPaths.length; i < l; i++)
				{
					subPath = subPaths[i];
					scope = ns[subPath];
					if (!scope)
						scope = ns[subPath] = {};
					ns = scope;
				}

				_namespaces[path] = ns;
			}

			if (closure)
				closure.call(ns, ns);

			return ns;
		};

		var jg_import = global.jg_import = function(path)
		{
			if (path == null)
				throw new Error("Parameter path must be non-null.");
			if (typeof path !== "string")
				throw new Error("Parameter path must be a string.");
			if (!path)
				throw new Error("Parameter path must be non-empty.");

			path = _normalizePath(path);

			var resource = _imported[path];
			if (resource == null)
			{
				if (_loading[path])
					throw new Error("Recursive dependency on resource " + path + ".");

				var resourceInfo = _getPathInfo(path);
				if (!resourceInfo)
					throw new Error("Invalid resource path \"" + path + "\".");

				var ns = jg_namespace(resourceInfo.namespace);
				resource = ns[resourceInfo.name];
				if (resource == null)
				{
					var typeInfo = _resourceTypeInfo[resourceInfo.type];
					if (!typeInfo)
						throw new Error("Unknown resource type \"" + resourceInfo.type + "\". Ensure the resource type is registered via jg_import.registerResourceType().");

					try
					{
						_loading[path] = true;

						resourceInfo.url = _getSourcePath(resourceInfo.classPath) + typeInfo.extension;
						resourceInfo.source = null;

						try
						{
							var xhr = global.ActiveXObject ? new global.ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
							xhr.open("GET", resourceInfo.url, false);
							xhr.send(null);
							if ((xhr.status == 200) || (xhr.status == 0))
								resourceInfo.source = xhr.responseText;
						}
						catch (e)
						{
						}

						if (resourceInfo.source == null)
							throw new Error("Failed to load resource " + path + " from url " + resourceInfo.url + ". Ensure the correct source path is set for this resource via jg_import.setSourcePath().");

						var resourceInfoCopy = {};
						for (var p in resourceInfo)
						{
							if (resourceInfo.hasOwnProperty(p))
								resourceInfoCopy[p] = resourceInfo[p];
						}

						try
						{
							var result = typeInfo.parser.call(resourceInfoCopy, resourceInfoCopy);
							resource = ns[resourceInfo.name];
							if (resource == null)
								resource = result;
						}
						catch (e)
						{
							if ((e != null) && e.__jg_import_Error)
								throw e;

							var message = (e instanceof Error) ? e.message : String(e);
							e = new Error("Error in resource " + path + ": " + message);
							e.__jg_import_Error = true;
							throw e;
						}

						if (resource == null)
							throw new Error("Failed to define resource " + path + ".");

						ns[resourceInfo.name] = resource;
					}
					finally
					{
						delete _loading[path];
					}
				}

				resourceInfo.resource = resource;

				_resourceInfo[path] = resourceInfo;
				_resourceDependencyList.push(path);

				_imported[path] = resource;
			}

			return resource;
		};

		jg_import.define = function(path, closure)
		{
			if (path == null)
				throw new Error("Parameter path must be non-null.");
			if (typeof path !== "string")
				throw new Error("Parameter path must be a string.");
			if (!path)
				throw new Error("Parameter path must be non-empty.");
			if (closure == null)
				throw new Error("Parameter closure must be non-null.");
			if (typeof closure !== "function")
				throw new Error("Parameter closure must be a function.");

			path = _normalizePath(path);

			var resource = _imported[path];
			if (resource == null)
			{
				var resourceInfo = _getPathInfo(path);
				if (!resourceInfo)
					throw new Error("Invalid resource path \"" + path + "\".");

				var ns = jg_namespace(resourceInfo.namespace);
				resource = ns[resourceInfo.name];
				if (resource == null)
				{
					var result = closure.call(ns, ns);
					resource = ns[resourceInfo.name];
					if (resource == null)
						resource = result;

					if (resource == null)
						throw new Error("Failed to define resource " + path + ".");

					ns[resourceInfo.name] = resource;
				}

				if (!_loading[path] && (_imported[path] == null))
				{
					resourceInfo.resource = resource;

					_resourceInfo[path] = resourceInfo;
					_resourceDependencyList.push(path);

					_imported[path] = resource;
				}
			}

			return resource;
		};

		jg_import.setSourcePath = function(path, url)
		{
			if (path == null)
				throw new Error("Parameter path must be non-null.");
			if (typeof path !== "string")
				throw new Error("Parameter path must be a string.");
			if (url == null)
				throw new Error("Parameter url must be non-null.");
			if (typeof url !== "string")
				throw new Error("Parameter url must be a string.");

			if (path && (path.charAt(path.length - 1) !== "."))
				path += ".";
			if (url && (url.charAt(url.length - 1) !== "/"))
				url += "/";

			_sourcePaths[path] = url;
		};

		jg_import.registerResourceType = function(type, extension, parser)
		{
			if (type == null)
				throw new Error("Parameter type must be non-null.");
			if (typeof type !== "string")
				throw new Error("Parameter type must be a string.");
			if (!type)
				throw new Error("Parameter type must be non-empty.");
			if (extension == null)
				throw new Error("Parameter extension must be non-null.");
			if (typeof extension !== "string")
				throw new Error("Parameter extension must be a string.");
			if (parser == null)
				throw new Error("Parameter parser must be non-null.");
			if (typeof parser !== "function")
				throw new Error("Parameter parser must be a function.");

			var typeInfo = {};
			typeInfo.extension = extension;
			typeInfo.parser = parser;

			_resourceTypeInfo[type] = typeInfo;
		};

		jg_import.getResourceInfo = function(path)
		{
			if ((path != null) && (typeof path !== "string"))
				throw new Error("Parameter path must be a string.");

			if (!path)
			{
				var resourceInfoList = [];
				for (var i = 0, l = _resourceDependencyList.length; i < l; i++)
					resourceInfoList.push(jg_import.getResourceInfo(_resourceDependencyList[i]));
				return resourceInfoList;
			}

			path = _normalizePath(path);

			var resourceInfo = _resourceInfo[path];
			if (!resourceInfo)
				return null;

			var resourceInfoCopy = {};
			for (var p in resourceInfo)
			{
				if (resourceInfo.hasOwnProperty(p))
					resourceInfoCopy[p] = resourceInfo[p];
			}

			return resourceInfoCopy;
		};

		var jg_extend = global.jg_extend = function(baseClass, closure)
		{
			if (baseClass == null)
				throw new Error("Parameter baseClass must be non-null.");
			if (typeof baseClass !== "function")
				throw new Error("Parameter baseClass must be a class.");
			if ((closure != null) && (typeof closure !== "function"))
				throw new Error("Parameter closure must be a function.");

			var constructor = baseClass;
			var base = baseClass.prototype;

			baseClass = function(){};
			baseClass.prototype = base;

			var c = function()
			{
				constructor.apply(this, arguments);
			};
			var proto = c.prototype = new baseClass();
			proto.constructor = c;

			if (closure)
			{
				closure.call(proto, c, base, proto);

				if (c.prototype !== proto)
					throw new Error("Class member \"prototype\" cannot be overridden.");

				if (proto.constructor !== c)
				{
					if (typeof proto.constructor !== "function")
						throw new Error("Instance member \"constructor\" must be a function.");

					constructor = proto.constructor;
					proto.constructor = c;
				}
			}

			return c;
		};

		var jg_static = global.jg_static = function(closure)
		{
			if ((closure != null) && (typeof closure !== "function"))
				throw new Error("Parameter closure must be a function.");

			var c = {};

			if (closure)
				closure.call(c, c);

			return c;
		};

		var jg_mixin = global.jg_mixin = function(target, source, base)
		{
			if (target == null)
				throw new Error("Parameter target must be non-null.");
			if (source == null)
				throw new Error("Parameter source must be non-null.");

			var id = source.__jg_mixin_id;
			if (!id)
				id = source.__jg_mixin_id = "m" + (++_mixinCount);

			id = "__jg_has_mixin_" + id;

			if (target[id])
				return base;

			var baseConstructor = ((base != null) && base.hasOwnProperty("constructor") && (typeof base.constructor === "function")) ? base.constructor : function(){};
			var baseClass = function(){};
			baseClass.prototype = (base != null) ? base : Object.prototype;

			base = new baseClass();
			base.constructor = baseConstructor;

			var member;

			var mixin = source.mixin;
			if ((mixin != null) && (typeof mixin === "function"))
			{
				var mixinBase = new baseClass();
				for (member in target)
				{
					if (target.hasOwnProperty(member))
						mixinBase[member] = target[member];
				}
				mixinBase.constructor = baseConstructor;

				try
				{
					if (!_mixinDependencies)
						_mixinDependencies = [];

					_mixinDependencies.push(base);

					var constructor = target.constructor;

					mixin.call(target, mixinBase, target);

					if (target.constructor !== constructor)
						throw new Error("Target member \"constructor\" cannot be overridden.");
				}
				finally
				{
					_mixinDependencies.pop();
					if (_mixinDependencies.length == 0)
						_mixinDependencies = null;
				}
			}

			for (member in source)
			{
				if (source.hasOwnProperty(member) && (member !== "mixin") && (member !== "constructor") && (member.substring(0, 2) !== "__"))
					target[member] = source[member];
			}

			for (member in target)
			{
				if (target.hasOwnProperty(member) && (member !== "constructor"))
					base[member] = target[member];
			}

			var sourceConstructor = (source.hasOwnProperty("constructor") && (typeof source.constructor === "function")) ? source.constructor : null;
			if (sourceConstructor)
			{
				base.constructor = _appendConstructor(base.constructor, sourceConstructor);

				if (_mixinDependencies)
				{
					var dependentMixin;
					for (var i = _mixinDependencies.length - 1; i >= 0; i--)
					{
						dependentMixin = _mixinDependencies[i];
						dependentMixin.constructor = _appendConstructor(dependentMixin.constructor, sourceConstructor);
					}
				}
			}

			target[id] = true;

			return base;
		};

		var jg_has_mixin = global.jg_has_mixin = function(target, source)
		{
			if (target == null)
				throw new Error("Parameter target must be non-null.");
			if (source == null)
				throw new Error("Parameter source must be non-null.");

			var id = source.__jg_mixin_id;
			if (!id)
				return false;

			id = "__jg_has_mixin_" + id;

			return (target[id] == true);
		};

		// Register class resource type

		jg_import.registerResourceType("class", ".js", function(resourceInfo)
		{
			evalScript(global, resourceInfo.source);
		});

	})(this, function(global, script) { eval.call(global, script); });

	}.call(window));

/***/ }),

/***/ 297:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n\n\n\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n\n\n\n\n.view---modules-nav-enterprise---7-0-0---2IECF {\n    width: 230px;\n    -ms-flex: 1 1 230px;\n        flex: 1 1 230px; /* shrink or grow is fine */\n    display: -ms-flexbox;\n    display: flex;\n    position: relative;\n}\n\n\n\n\n\n.input---modules-nav-enterprise---7-0-0---3YSNr {\n    /* needed for composition */\n}\n\n/* Some of these need greater specificity than input[type=text] */\n.uneditableInput---modules-nav-enterprise---7-0-0---3rqaP, .input---modules-nav-enterprise---7-0-0---3YSNr[type=text] {\n    box-sizing: border-box;\n    display: inline-block;\n\n    margin: 0;\n    height: 24px;\n    line-height: 16px;\n    padding: 4px 6px;\n\n    font-size: 12px;\n    color: #333;\n\n    border-radius: 4px;\n    background-color: #fff;\n    border: 1px solid #ccc;\n\n    box-shadow: inset 0 1px 1px rgba(0,0,0,.075);\n    transition: border linear .2s, box-shadow linear .2s;\n\n    width: 100%;\n}\n.uneditableInput---modules-nav-enterprise---7-0-0---3rqaP ::-webkit-input-placeholder, .input---modules-nav-enterprise---7-0-0---3YSNr[type=text] ::-webkit-input-placeholder {\n    color:#999;\n    opacity:1;\n}\n.uneditableInput---modules-nav-enterprise---7-0-0---3rqaP :-ms-input-placeholder, .input---modules-nav-enterprise---7-0-0---3YSNr[type=text] :-ms-input-placeholder {\n    color:#999;\n    opacity:1;\n}\n.uneditableInput---modules-nav-enterprise---7-0-0---3rqaP ::placeholder, .input---modules-nav-enterprise---7-0-0---3YSNr[type=text] ::placeholder {\n    color:#999;\n    opacity:1;\n}\n/*  Focus state */\n.uneditableInput---modules-nav-enterprise---7-0-0---3rqaP:focus, .input---modules-nav-enterprise---7-0-0---3YSNr[type=text]:focus {\n    border-color: rgba(82, 168, 236, 0.8);\n    outline: 0;\n    border-collapse: separate;\n    /* Fix IE9 Issue with box-shadow */\n    box-shadow: 0 0 8px rgba(82, 168, 236, 0.6);\n}\n/* Don't show IE clear button when an artificial one is shown. */\n.uneditableInput---modules-nav-enterprise---7-0-0---3rqaP.text-clear---modules-nav-enterprise---7-0-0---3xrUN::-ms-clear, .input---modules-nav-enterprise---7-0-0---3YSNr[type=text].text-clear---modules-nav-enterprise---7-0-0---3xrUN::-ms-clear {\n    display: none;\n    width: 0;\n    /* IE 11 on windows 8 */\n    height: 0;\n    /* IE 11 on windows 8 */\n};\n\n.inputCanClear---modules-nav-enterprise---7-0-0---1Bs4O {\n};\n\n.inputCanClear---modules-nav-enterprise---7-0-0---1Bs4O[type=text] {\n    padding-right: 30px;\n}\n\n.inputSearch---modules-nav-enterprise---7-0-0---2c-aT {\n}\n\n.inputSearch---modules-nav-enterprise---7-0-0---2c-aT[type=text] {\n    border-radius: 100px;\n}\n\n.clear---modules-nav-enterprise---7-0-0---YoVFS {\n    position: absolute;\n    right: 8px;\n    top: 2px;\n    line-height: 22px;\n    font-size: 18px;\n    color: #999;\n}\n\n.placeholder---modules-nav-enterprise---7-0-0---1NeaE {\n    color: #999;\n    position: absolute;\n    max-width: 100%;\n    top: 3px;\n    left: 6px;\n    font-size: 12px;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---2IECF",
		"input": "input---modules-nav-enterprise---7-0-0---3YSNr",
		"uneditableInput": "uneditableInput---modules-nav-enterprise---7-0-0---3rqaP",
		"text-clear": "text-clear---modules-nav-enterprise---7-0-0---3xrUN",
		"inputCanClear": "inputCanClear---modules-nav-enterprise---7-0-0---1Bs4O input---modules-nav-enterprise---7-0-0---3YSNr",
		"inputSearch": "inputSearch---modules-nav-enterprise---7-0-0---2c-aT inputCanClear---modules-nav-enterprise---7-0-0---1Bs4O input---modules-nav-enterprise---7-0-0---3YSNr",
		"clear": "clear---modules-nav-enterprise---7-0-0---YoVFS",
		"placeholder": "placeholder---modules-nav-enterprise---7-0-0---1NeaE"
	};

/***/ }),

/***/ 298:
/***/ (function(module, exports) {

	module.exports = "<ul class=\"<%-css.menu%>\">\n    <% if (isCloud) { %>\n        <li><a data-action=\"splunk-search\" data-link-external=\"external\" href=\"http://www.splunk.com/en_us/search.html?query=search\" target=\"_blank\"><%- _(\"Search Splunk\").t() %> </a></li>\n        <li><a data-action=\"customer-portal\" data-link-external=\"external\" href=\"https://splunkcommunities.force.com/customers/home/home.jsp\" target=\"_blank\"><%- _(\"Customer Portal\").t() %> </a></li>\n        <li><a data-action=\"splunk-answers\" data-link-external=\"external\" href=\"http://answers.splunk.com/\" target=\"_blank\"><%- _(\"Splunk Answers\").t() %> </a></li>\n        <% if (!isLite) { %>\n            <li><a data-action=\"splunkbase\" data-link-external=\"external\" href=\"https://splunkbase.splunk.com\" target=\"_blank\"><%- _(\"Splunkbase\").t() %> </a></li>\n        <% } %>\n        <li><a data-action=\"docs\" data-link-external=\"external\" href=\"<%- docLink %>\" target=\"_blank\"><%- _(\"Help for this page\").t() %> </a></li>\n        <li><a data-action=\"support-and-services\" data-link-external=\"external\" href=\"https://www.splunk.com/en_us/support-and-services.html\" target=\"_blank\"><%- _(\"Support & Services\").t() %> </a></li>\n        <li><a data-action=\"customer-support\" data-link-external=\"external\" href=\"http://www.splunk.com/en_us/about-us/contact.html#customer-support\" target=\"_blank\"><%- _(\"Customer Support\").t() %> </a></li>\n        <% if (isLite && hasTours) { %>\n            <li><a data-action=\"splunk-tours\" class=\"splunk-tours\" href=\"#\"><%- _(\"Product Tours\").t() %> </a></li>\n        <% } %>\n        <li><a data-action=\"about-splunk\" class=\"about-splunk\" href=\"#\"><%- _(\"About\").t() %> </a></li>\n        <li><a data-action=\"whats-new\" data-link-external=\"external\" href=\"<%- makeDocLink('helpmenu.whatsnew') %>\" target=\"_blank\"><%- _(\"What's New\").t() %> </a></li>\n    <% } else { %>\n        <li><a data-action=\"whats-new\" data-link-external=\"external\" href=\"<%- makeDocLink('helpmenu.whatsnew') %>\" target=\"_blank\"><%- _(\"What's New\").t() %> </a></li>\n        <% if (!isLite) { %>\n            <li><a data-action=\"tutorials\" data-link-external=\"external\" href=\"<%- makeDocLink('search_app.tutorial') %>\" target=\"_blank\"><%- _(\"Tutorials\").t() %> </a></li>\n        <% } %>\n        <li><a data-action=\"splunk-answers\" data-link-external=\"external\"  href=\"http://splunk-base.splunk.com/\" target=\"_blank\"><%- _(\"Splunk Answers\").t() %> </a></li>\n        <li><a data-action=\"contact-support\" data-link-external=\"external\"  href=\"http://www.splunk.com/support\" target=\"_blank\"><%- _(\"Contact Support\").t() %> </a></li>\n        <li><a data-action=\"docs\" data-link-external=\"external\" href=\"<%- docLink %>\" target=\"_blank\"><%- _(\"Help for this page\").t() %> </a></li>\n        <% if (isLite && hasTours) { %>\n            <li><a data-action=\"splunk-tours\" href=\"#\"><%- _(\"Product Tours\").t() %> </a></li>\n        <% } %>\n        <li><a data-action=\"about-splunk\" href=\"#\"><%- _(\"About\").t() %> </a></li>\n    <% } %>\n</ul>\n<% if (!isLite) { %>\n    <div class=\"<%-css.formSearch%>\" action=\"#help\" data-role=\"form\"></div>\n<% } %>\n"

/***/ }),

/***/ 299:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(268), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n.view---modules-nav-enterprise---7-0-0---1CkpG {\n\n}\n.menu---modules-nav-enterprise---7-0-0---1TwXi {\n    width: 100%;\n}\n.menu---modules-nav-enterprise---7-0-0---1TwXi:before,\n    .menu---modules-nav-enterprise---7-0-0---1TwXi:after {\n    display: table;\n    content: \"\";\n    /*  Fixes Opera/contenteditable bug: */\n    /*  http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952 */\n    line-height: 0;\n}\n.menu---modules-nav-enterprise---7-0-0---1TwXi:after {\n    clear: both;\n}\n\n.formSearch---modules-nav-enterprise---7-0-0---2me2R {\n    padding: 5px;\n    margin: 0;\n    border-top: 1px solid #ccc;\n    min-width: 200px;\n}\n\n.searchQuery---modules-nav-enterprise---7-0-0---3GIY1 {\n    /* TO DO */\n    width: 100%;\n    height: 2em;\n    padding: 0 10px;\n    box-sizing: border-box;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---1CkpG",
		"menu": "menu---modules-nav-enterprise---7-0-0---1TwXi " + __webpack_require__(268).locals["menu"] + "",
		"formSearch": "formSearch---modules-nav-enterprise---7-0-0---2me2R",
		"searchQuery": "searchQuery---modules-nav-enterprise---7-0-0---3GIY1"
	};

/***/ }),

/***/ 300:
/***/ (function(module, exports) {

	module.exports = "<div class=\"<%=css.header%>\" data-results-header=\"<%=className%>\"><%- title %></div>\n<ul class=\"<%=css.list%>\" data-role=\"<%=className%>-list\">\n    <% collection.each(function(model) { %>\n    <% var appName = model.entry.acl.get('app'); %>\n    <% var modelApp = _.find(apps.models, function(app) {return app.entry.get('name') === appName;}); %>\n    <% var openInApp = modelApp && modelApp.entry.content.get(\"visible\") ? appName : alternateApp; %>\n    <li class='<%=css.row%>'>\n        <a class=\"<%=css.primaryLink%>\" data-role=\"main-link\" href=\"<%- getViewingPageRoute(modelRoute, app, openInApp, model) %>\">\n            <% if (nameAttr && model.entry.content.get(nameAttr)) { %>\n                <%- model.entry.content.get(nameAttr) %>\n            <% } else { %>\n                <%- model.entry.get('name') %>\n            <% } %>\n        </a>\n        <a class=\"<%=css.secondaryLink%>\" data-role=\"secondary-link\" href=\"<%- getViewingPageRoute(modelRoute, app, openInApp, model) %>\" target=\"_blank\">\n        </a>\n    </li>\n    <% }); %>\n    <% if (collection.models[0].paging.get('perPage') < collection.models[0].paging.get('total')) { %>\n    <li class=\"<%css.rowMore%>\">\n        <a class=\"<%=css.primaryLink%>\" data-role=\"more-link\" href=\"<%- managerRoute %>\">\n            <%- _('More ' + title + ' results').t() %>\n        </a>\n        <a class=\"<%=css.secondaryLink%>\" data-role=\"secondary-link\" href=\"<%- managerRoute %>\" target=\"_blank\">\n        </a>\n    </li>\n    <% } %>\n</ul>"

/***/ }),

/***/ 301:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(268), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n/*  Find Results */\n\n.view---modules-nav-enterprise---7-0-0---37q0Y {\n    border-bottom: 1px solid #bfbfbf;\n\n}\n\n.list---modules-nav-enterprise---7-0-0---399Qg {\n\n}\n\n.list---modules-nav-enterprise---7-0-0---399Qg li > a {\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n\n}\n\n.primaryLink---modules-nav-enterprise---7-0-0---1Xbkv {\n}\n.secondaryLink---modules-nav-enterprise---7-0-0---3QRwf {\n}\n\n.header---modules-nav-enterprise---7-0-0---2CG6Z {\n    padding: 5px 10px;\n    color: #999;\n    border-bottom: 1px solid #ccc;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---37q0Y",
		"list": "list---modules-nav-enterprise---7-0-0---399Qg " + __webpack_require__(268).locals["menu"] + "",
		"primaryLink": "primaryLink---modules-nav-enterprise---7-0-0---1Xbkv " + __webpack_require__(268).locals["primaryLink"] + "",
		"secondaryLink": "secondaryLink---modules-nav-enterprise---7-0-0---3QRwf " + __webpack_require__(268).locals["secondaryLink"] + "",
		"header": "header---modules-nav-enterprise---7-0-0---2CG6Z"
	};

/***/ }),

/***/ 302:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(268), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Find Results */\n.view---modules-nav-enterprise---7-0-0---1bG18 {\n    background-color: #fff;\n    width: 360px;\n}\n\n.list---modules-nav-enterprise---7-0-0---2EXPz {\n\n}\n\n.list---modules-nav-enterprise---7-0-0---2EXPz li > a {\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n}\n\n.arrow---modules-nav-enterprise---7-0-0---2Ey0- {\n}\n\n.searchLink---modules-nav-enterprise---7-0-0---2Kfe4 {\n    border-top: 0;\n}\n\n.primaryLink---modules-nav-enterprise---7-0-0---UcYzD {\n}\n.secondaryLink---modules-nav-enterprise---7-0-0---1UVRN {\n}\n\n.noResults---modules-nav-enterprise---7-0-0---2qDbD {\n    text-align: center;\n    padding-top: 10px;\n    padding-bottom: 10px;\n    color:#999;\n    border-bottom: 1px solid #ccc;\n}\n\n.sharedSplunkbarFindFindprogress---modules-nav-enterprise---7-0-0---2dhub {\n    background-color: #fff;\n    width: 360px;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---1bG18 " + __webpack_require__(268).locals["view"] + "",
		"list": "list---modules-nav-enterprise---7-0-0---2EXPz " + __webpack_require__(268).locals["menu"] + "",
		"arrow": "arrow---modules-nav-enterprise---7-0-0---2Ey0- " + __webpack_require__(268).locals["arrow"] + "",
		"searchLink": "searchLink---modules-nav-enterprise---7-0-0---2Kfe4",
		"primaryLink": "primaryLink---modules-nav-enterprise---7-0-0---UcYzD " + __webpack_require__(268).locals["primaryLink"] + " searchLink---modules-nav-enterprise---7-0-0---2Kfe4",
		"secondaryLink": "secondaryLink---modules-nav-enterprise---7-0-0---1UVRN " + __webpack_require__(268).locals["secondaryLink"] + " searchLink---modules-nav-enterprise---7-0-0---2Kfe4",
		"noResults": "noResults---modules-nav-enterprise---7-0-0---2qDbD",
		"sharedSplunkbarFindFindprogress": "sharedSplunkbarFindFindprogress---modules-nav-enterprise---7-0-0---2dhub"
	};

/***/ }),

/***/ 303:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Spinners */\n/*  ---------------------------- */\n\n.view---modules-nav-enterprise---7-0-0---Rroog {\n    background-position: left top;\n\n}\n\n.smallgray---modules-nav-enterprise---7-0-0---3U0GM {\n\tbackground-image: url(" + __webpack_require__("views/shared/waitspinner/loading_small_gray.png") + ");\n    width: 14px;\n    height: 14px;\n    background-size: 112px 14px;\n}\n\n\n.mediumgreen---modules-nav-enterprise---7-0-0---zBnDv {\n\tbackground-image: url(" + __webpack_require__("views/shared/waitspinner/loading_medium_green.png") + ");\n\tbackground-position: left top;\n\twidth: 19px;\n\theight: 19px;\n\tbackground-size: 152px 19px;\n}\n\n\n@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {\n\t.smallgray---modules-nav-enterprise---7-0-0---3U0GM {\n\t\tbackground-image: url(" + __webpack_require__("views/shared/waitspinner/loading_small_gray_2x.png") + ");\n\t}\n\n\t.mediumgreen---modules-nav-enterprise---7-0-0---zBnDv {\n\t\tbackground-image: url(" + __webpack_require__("views/shared/waitspinner/loading_medium_green_2x.png") + ");\n\t}\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---Rroog",
		"smallgray": "smallgray---modules-nav-enterprise---7-0-0---3U0GM view---modules-nav-enterprise---7-0-0---Rroog",
		"mediumgreen": "mediumgreen---modules-nav-enterprise---7-0-0---zBnDv view---modules-nav-enterprise---7-0-0---Rroog"
	};

/***/ }),

/***/ 304:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(268), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Find Results */\n.view---modules-nav-enterprise---7-0-0---2nZg8 {\n    background-color: #fff;\n    width: 360px;\n}\n\n.list---modules-nav-enterprise---7-0-0---3Zzc- {\n}\n\n.arrow---modules-nav-enterprise---7-0-0---1Izgk {\n}\n\n.primaryLink---modules-nav-enterprise---7-0-0---2_q2j {\n}\n.secondaryLink---modules-nav-enterprise---7-0-0---VJRkj {\n}\n\n.spinnerWrapper---modules-nav-enterprise---7-0-0---2Npmm {\n    background-color: #fff;\n    width: 14px;\n    padding: 10px 173px;\n    border-bottom: 1px solid #ccc;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---2nZg8 " + __webpack_require__(268).locals["view"] + "",
		"list": "list---modules-nav-enterprise---7-0-0---3Zzc- " + __webpack_require__(268).locals["menu"] + "",
		"arrow": "arrow---modules-nav-enterprise---7-0-0---1Izgk " + __webpack_require__(268).locals["arrow"] + "",
		"primaryLink": "primaryLink---modules-nav-enterprise---7-0-0---2_q2j " + __webpack_require__(268).locals["primaryLink"] + "",
		"secondaryLink": "secondaryLink---modules-nav-enterprise---7-0-0---VJRkj " + __webpack_require__(268).locals["secondaryLink"] + "",
		"spinnerWrapper": "spinnerWrapper---modules-nav-enterprise---7-0-0---2Npmm"
	};

/***/ }),

/***/ 305:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(297), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n.view---modules-nav-enterprise---7-0-0---1e-9d {\n    -ms-flex: 1 1 230px;\n        flex: 1 1 230px; /* shrink or grow is fine */\n    display: -ms-flexbox;\n    display: flex;\n    position: relative;\n}\n\n/* Some of these need greater specificity than input[type=text] */\n/*  Don't show IE 10 clear when an artificial one is shown. */\n.inputSearch---modules-nav-enterprise---7-0-0---3S76l.text-clear---modules-nav-enterprise---7-0-0---2W5B5::-ms-clear {\n    display: none;\n}\n/*  Focus state */\n.inputSearch---modules-nav-enterprise---7-0-0---3S76l[type=text] {\n    animation: none 0s ease 0s 1 normal none running;\n    -webkit-backface-visibility: visible;\n    backface-visibility: visible;\n    background: transparent none repeat 0 0 / auto auto padding-box border-box scroll;\n    border: medium none currentColor;\n    border-collapse: separate;\n    border-image: none;\n    border-radius: 0;\n    border-spacing: 0;\n    bottom: auto;\n    box-shadow: none;\n    box-sizing: content-box;\n    caption-side: top;\n    clear: none;\n    clip: auto;\n    color: #000;\n    columns: auto;\n    column-count: auto;\n    column-fill: balance;\n    column-gap: normal;\n    column-rule: medium none currentColor;\n    column-span: 1;\n    column-width: auto;\n    content: normal;\n    counter-increment: none;\n    counter-reset: none;\n    cursor: auto;\n    direction: ltr;\n    display: inline;\n    empty-cells: show;\n    float: none;\n    font-family: serif;\n    font-size: medium;\n    font-style: normal;\n    font-variant: normal;\n    font-weight: normal;\n    font-stretch: normal;\n    line-height: normal;\n    height: auto;\n    -webkit-hyphens: none;\n    -ms-hyphens: none;\n    hyphens: none;\n    left: auto;\n    letter-spacing: normal;\n    list-style: disc outside none;\n    margin: 0;\n    max-height: none;\n    max-width: none;\n    min-height: 0;\n    min-width: 0;\n    opacity: 1;\n    orphans: 2;\n    outline: medium none invert;\n    overflow: visible;\n    overflow-x: visible;\n    overflow-y: visible;\n    padding: 0;\n    page-break-after: auto;\n    page-break-before: auto;\n    page-break-inside: auto;\n    perspective: none;\n    perspective-origin: 50% 50%;\n    position: static;\n    right: auto;\n    -moz-tab-size: 8;\n    tab-size: 8;\n    table-layout: auto;\n    text-align: left;\n    text-align-last: auto;\n    text-decoration: none;\n    text-indent: 0;\n    text-shadow: none;\n    text-transform: none;\n    top: auto;\n    transform: none;\n    transform-origin: 50% 50% 0;\n    transform-style: flat;\n    transition: none 0s ease 0s;\n    unicode-bidi: normal;\n    vertical-align: baseline;\n    visibility: visible;\n    white-space: normal;\n    widows: 2;\n    width: auto;\n    word-spacing: normal;\n    z-index: auto;\n    all: initial;\n    display: inline-block;\n    height: 11px;\n    margin: 3px 0 0 0;\n    line-height: 16px;\n    width: 120px;\n    border: 0px;\n    transition: background-color 0.3s linear;\n    border-radius: 4px;\n    background-color: rgba(255, 255, 255, 0.2);\n    padding: 4px 30px 4px 8px;\n    color: #333;\n    font-size: inherit !important;\n    /* fix for splunk components */\n    font-family: \"Roboto\", \"Droid\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n}\n.inputSearch---modules-nav-enterprise---7-0-0---3S76l[type=text]::-webkit-input-placeholder {\n    color: #ccc;\n    transition: color 0.3s linear;\n}\n.inputSearch---modules-nav-enterprise---7-0-0---3S76l[type=text]:-ms-input-placeholder {\n    color: #ccc;\n    transition: color 0.3s linear;\n}\n.inputSearch---modules-nav-enterprise---7-0-0---3S76l[type=text]::placeholder {\n    color: #ccc;\n    transition: color 0.3s linear;\n}\n.inputSearch---modules-nav-enterprise---7-0-0---3S76l[type=text]:hover, .inputSearch---modules-nav-enterprise---7-0-0---3S76l[type=text]:focus {\n    background-color: #fff;\n}\n.inputSearch---modules-nav-enterprise---7-0-0---3S76l[type=text]:hover::-webkit-input-placeholder, .inputSearch---modules-nav-enterprise---7-0-0---3S76l[type=text]:focus::-webkit-input-placeholder {\n    color: #999;\n}\n.inputSearch---modules-nav-enterprise---7-0-0---3S76l[type=text]:hover:-ms-input-placeholder, .inputSearch---modules-nav-enterprise---7-0-0---3S76l[type=text]:focus:-ms-input-placeholder {\n    color: #999;\n}\n.inputSearch---modules-nav-enterprise---7-0-0---3S76l[type=text]:hover::placeholder, .inputSearch---modules-nav-enterprise---7-0-0---3S76l[type=text]:focus::placeholder {\n    color: #999;\n}\n.inputSearch---modules-nav-enterprise---7-0-0---3S76l:focus {\n    border-color: rgba(82, 168, 236, 0.8);\n    outline: 0;\n    border-collapse: separate;\n    /* Fix IE9 Issue with box-shadow */\n    box-shadow: 0 0 8px rgba(82, 168, 236, 0.6);\n}\n\n.clear---modules-nav-enterprise---7-0-0---2u1Z9 {\n}\n\n.placeholder---modules-nav-enterprise---7-0-0---3Yh9M {\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---1e-9d",
		"inputSearch": "inputSearch---modules-nav-enterprise---7-0-0---3S76l",
		"text-clear": "text-clear---modules-nav-enterprise---7-0-0---2W5B5",
		"clear": "clear---modules-nav-enterprise---7-0-0---2u1Z9 " + __webpack_require__(297).locals["clear"] + "",
		"placeholder": "placeholder---modules-nav-enterprise---7-0-0---3Yh9M " + __webpack_require__(297).locals["placeholder"] + ""
	};

/***/ }),

/***/ 306:
/***/ (function(module, exports, __webpack_require__) {

	/* WEBPACK VAR INJECTION */(function(global) {/*!
	 * The buffer module from node.js, for the browser.
	 *
	 * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
	 * @license  MIT
	 */
	/* eslint-disable no-proto */

	'use strict'

	var base64 = __webpack_require__(307)
	var ieee754 = __webpack_require__(308)
	var isArray = __webpack_require__(309)

	exports.Buffer = Buffer
	exports.SlowBuffer = SlowBuffer
	exports.INSPECT_MAX_BYTES = 50

	/**
	 * If `Buffer.TYPED_ARRAY_SUPPORT`:
	 *   === true    Use Uint8Array implementation (fastest)
	 *   === false   Use Object implementation (most compatible, even IE6)
	 *
	 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
	 * Opera 11.6+, iOS 4.2+.
	 *
	 * Due to various browser bugs, sometimes the Object implementation will be used even
	 * when the browser supports typed arrays.
	 *
	 * Note:
	 *
	 *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
	 *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
	 *
	 *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
	 *
	 *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
	 *     incorrect length in some situations.

	 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
	 * get the Object implementation, which is slower but behaves correctly.
	 */
	Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
	  ? global.TYPED_ARRAY_SUPPORT
	  : typedArraySupport()

	/*
	 * Export kMaxLength after typed array support is determined.
	 */
	exports.kMaxLength = kMaxLength()

	function typedArraySupport () {
	  try {
	    var arr = new Uint8Array(1)
	    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
	    return arr.foo() === 42 && // typed array instances can be augmented
	        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
	        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
	  } catch (e) {
	    return false
	  }
	}

	function kMaxLength () {
	  return Buffer.TYPED_ARRAY_SUPPORT
	    ? 0x7fffffff
	    : 0x3fffffff
	}

	function createBuffer (that, length) {
	  if (kMaxLength() < length) {
	    throw new RangeError('Invalid typed array length')
	  }
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    // Return an augmented `Uint8Array` instance, for best performance
	    that = new Uint8Array(length)
	    that.__proto__ = Buffer.prototype
	  } else {
	    // Fallback: Return an object instance of the Buffer class
	    if (that === null) {
	      that = new Buffer(length)
	    }
	    that.length = length
	  }

	  return that
	}

	/**
	 * The Buffer constructor returns instances of `Uint8Array` that have their
	 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
	 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
	 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
	 * returns a single octet.
	 *
	 * The `Uint8Array` prototype remains unmodified.
	 */

	function Buffer (arg, encodingOrOffset, length) {
	  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
	    return new Buffer(arg, encodingOrOffset, length)
	  }

	  // Common case.
	  if (typeof arg === 'number') {
	    if (typeof encodingOrOffset === 'string') {
	      throw new Error(
	        'If encoding is specified then the first argument must be a string'
	      )
	    }
	    return allocUnsafe(this, arg)
	  }
	  return from(this, arg, encodingOrOffset, length)
	}

	Buffer.poolSize = 8192 // not used by this implementation

	// TODO: Legacy, not needed anymore. Remove in next major version.
	Buffer._augment = function (arr) {
	  arr.__proto__ = Buffer.prototype
	  return arr
	}

	function from (that, value, encodingOrOffset, length) {
	  if (typeof value === 'number') {
	    throw new TypeError('"value" argument must not be a number')
	  }

	  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
	    return fromArrayBuffer(that, value, encodingOrOffset, length)
	  }

	  if (typeof value === 'string') {
	    return fromString(that, value, encodingOrOffset)
	  }

	  return fromObject(that, value)
	}

	/**
	 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
	 * if value is a number.
	 * Buffer.from(str[, encoding])
	 * Buffer.from(array)
	 * Buffer.from(buffer)
	 * Buffer.from(arrayBuffer[, byteOffset[, length]])
	 **/
	Buffer.from = function (value, encodingOrOffset, length) {
	  return from(null, value, encodingOrOffset, length)
	}

	if (Buffer.TYPED_ARRAY_SUPPORT) {
	  Buffer.prototype.__proto__ = Uint8Array.prototype
	  Buffer.__proto__ = Uint8Array
	  if (typeof Symbol !== 'undefined' && Symbol.species &&
	      Buffer[Symbol.species] === Buffer) {
	    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
	    Object.defineProperty(Buffer, Symbol.species, {
	      value: null,
	      configurable: true
	    })
	  }
	}

	function assertSize (size) {
	  if (typeof size !== 'number') {
	    throw new TypeError('"size" argument must be a number')
	  } else if (size < 0) {
	    throw new RangeError('"size" argument must not be negative')
	  }
	}

	function alloc (that, size, fill, encoding) {
	  assertSize(size)
	  if (size <= 0) {
	    return createBuffer(that, size)
	  }
	  if (fill !== undefined) {
	    // Only pay attention to encoding if it's a string. This
	    // prevents accidentally sending in a number that would
	    // be interpretted as a start offset.
	    return typeof encoding === 'string'
	      ? createBuffer(that, size).fill(fill, encoding)
	      : createBuffer(that, size).fill(fill)
	  }
	  return createBuffer(that, size)
	}

	/**
	 * Creates a new filled Buffer instance.
	 * alloc(size[, fill[, encoding]])
	 **/
	Buffer.alloc = function (size, fill, encoding) {
	  return alloc(null, size, fill, encoding)
	}

	function allocUnsafe (that, size) {
	  assertSize(size)
	  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)
	  if (!Buffer.TYPED_ARRAY_SUPPORT) {
	    for (var i = 0; i < size; ++i) {
	      that[i] = 0
	    }
	  }
	  return that
	}

	/**
	 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
	 * */
	Buffer.allocUnsafe = function (size) {
	  return allocUnsafe(null, size)
	}
	/**
	 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
	 */
	Buffer.allocUnsafeSlow = function (size) {
	  return allocUnsafe(null, size)
	}

	function fromString (that, string, encoding) {
	  if (typeof encoding !== 'string' || encoding === '') {
	    encoding = 'utf8'
	  }

	  if (!Buffer.isEncoding(encoding)) {
	    throw new TypeError('"encoding" must be a valid string encoding')
	  }

	  var length = byteLength(string, encoding) | 0
	  that = createBuffer(that, length)

	  var actual = that.write(string, encoding)

	  if (actual !== length) {
	    // Writing a hex string, for example, that contains invalid characters will
	    // cause everything after the first invalid character to be ignored. (e.g.
	    // 'abxxcd' will be treated as 'ab')
	    that = that.slice(0, actual)
	  }

	  return that
	}

	function fromArrayLike (that, array) {
	  var length = array.length < 0 ? 0 : checked(array.length) | 0
	  that = createBuffer(that, length)
	  for (var i = 0; i < length; i += 1) {
	    that[i] = array[i] & 255
	  }
	  return that
	}

	function fromArrayBuffer (that, array, byteOffset, length) {
	  array.byteLength // this throws if `array` is not a valid ArrayBuffer

	  if (byteOffset < 0 || array.byteLength < byteOffset) {
	    throw new RangeError('\'offset\' is out of bounds')
	  }

	  if (array.byteLength < byteOffset + (length || 0)) {
	    throw new RangeError('\'length\' is out of bounds')
	  }

	  if (byteOffset === undefined && length === undefined) {
	    array = new Uint8Array(array)
	  } else if (length === undefined) {
	    array = new Uint8Array(array, byteOffset)
	  } else {
	    array = new Uint8Array(array, byteOffset, length)
	  }

	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    // Return an augmented `Uint8Array` instance, for best performance
	    that = array
	    that.__proto__ = Buffer.prototype
	  } else {
	    // Fallback: Return an object instance of the Buffer class
	    that = fromArrayLike(that, array)
	  }
	  return that
	}

	function fromObject (that, obj) {
	  if (Buffer.isBuffer(obj)) {
	    var len = checked(obj.length) | 0
	    that = createBuffer(that, len)

	    if (that.length === 0) {
	      return that
	    }

	    obj.copy(that, 0, 0, len)
	    return that
	  }

	  if (obj) {
	    if ((typeof ArrayBuffer !== 'undefined' &&
	        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
	      if (typeof obj.length !== 'number' || isnan(obj.length)) {
	        return createBuffer(that, 0)
	      }
	      return fromArrayLike(that, obj)
	    }

	    if (obj.type === 'Buffer' && isArray(obj.data)) {
	      return fromArrayLike(that, obj.data)
	    }
	  }

	  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
	}

	function checked (length) {
	  // Note: cannot use `length < kMaxLength()` here because that fails when
	  // length is NaN (which is otherwise coerced to zero.)
	  if (length >= kMaxLength()) {
	    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
	                         'size: 0x' + kMaxLength().toString(16) + ' bytes')
	  }
	  return length | 0
	}

	function SlowBuffer (length) {
	  if (+length != length) { // eslint-disable-line eqeqeq
	    length = 0
	  }
	  return Buffer.alloc(+length)
	}

	Buffer.isBuffer = function isBuffer (b) {
	  return !!(b != null && b._isBuffer)
	}

	Buffer.compare = function compare (a, b) {
	  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
	    throw new TypeError('Arguments must be Buffers')
	  }

	  if (a === b) return 0

	  var x = a.length
	  var y = b.length

	  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
	    if (a[i] !== b[i]) {
	      x = a[i]
	      y = b[i]
	      break
	    }
	  }

	  if (x < y) return -1
	  if (y < x) return 1
	  return 0
	}

	Buffer.isEncoding = function isEncoding (encoding) {
	  switch (String(encoding).toLowerCase()) {
	    case 'hex':
	    case 'utf8':
	    case 'utf-8':
	    case 'ascii':
	    case 'latin1':
	    case 'binary':
	    case 'base64':
	    case 'ucs2':
	    case 'ucs-2':
	    case 'utf16le':
	    case 'utf-16le':
	      return true
	    default:
	      return false
	  }
	}

	Buffer.concat = function concat (list, length) {
	  if (!isArray(list)) {
	    throw new TypeError('"list" argument must be an Array of Buffers')
	  }

	  if (list.length === 0) {
	    return Buffer.alloc(0)
	  }

	  var i
	  if (length === undefined) {
	    length = 0
	    for (i = 0; i < list.length; ++i) {
	      length += list[i].length
	    }
	  }

	  var buffer = Buffer.allocUnsafe(length)
	  var pos = 0
	  for (i = 0; i < list.length; ++i) {
	    var buf = list[i]
	    if (!Buffer.isBuffer(buf)) {
	      throw new TypeError('"list" argument must be an Array of Buffers')
	    }
	    buf.copy(buffer, pos)
	    pos += buf.length
	  }
	  return buffer
	}

	function byteLength (string, encoding) {
	  if (Buffer.isBuffer(string)) {
	    return string.length
	  }
	  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
	      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
	    return string.byteLength
	  }
	  if (typeof string !== 'string') {
	    string = '' + string
	  }

	  var len = string.length
	  if (len === 0) return 0

	  // Use a for loop to avoid recursion
	  var loweredCase = false
	  for (;;) {
	    switch (encoding) {
	      case 'ascii':
	      case 'latin1':
	      case 'binary':
	        return len
	      case 'utf8':
	      case 'utf-8':
	      case undefined:
	        return utf8ToBytes(string).length
	      case 'ucs2':
	      case 'ucs-2':
	      case 'utf16le':
	      case 'utf-16le':
	        return len * 2
	      case 'hex':
	        return len >>> 1
	      case 'base64':
	        return base64ToBytes(string).length
	      default:
	        if (loweredCase) return utf8ToBytes(string).length // assume utf8
	        encoding = ('' + encoding).toLowerCase()
	        loweredCase = true
	    }
	  }
	}
	Buffer.byteLength = byteLength

	function slowToString (encoding, start, end) {
	  var loweredCase = false

	  // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
	  // property of a typed array.

	  // This behaves neither like String nor Uint8Array in that we set start/end
	  // to their upper/lower bounds if the value passed is out of range.
	  // undefined is handled specially as per ECMA-262 6th Edition,
	  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
	  if (start === undefined || start < 0) {
	    start = 0
	  }
	  // Return early if start > this.length. Done here to prevent potential uint32
	  // coercion fail below.
	  if (start > this.length) {
	    return ''
	  }

	  if (end === undefined || end > this.length) {
	    end = this.length
	  }

	  if (end <= 0) {
	    return ''
	  }

	  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
	  end >>>= 0
	  start >>>= 0

	  if (end <= start) {
	    return ''
	  }

	  if (!encoding) encoding = 'utf8'

	  while (true) {
	    switch (encoding) {
	      case 'hex':
	        return hexSlice(this, start, end)

	      case 'utf8':
	      case 'utf-8':
	        return utf8Slice(this, start, end)

	      case 'ascii':
	        return asciiSlice(this, start, end)

	      case 'latin1':
	      case 'binary':
	        return latin1Slice(this, start, end)

	      case 'base64':
	        return base64Slice(this, start, end)

	      case 'ucs2':
	      case 'ucs-2':
	      case 'utf16le':
	      case 'utf-16le':
	        return utf16leSlice(this, start, end)

	      default:
	        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
	        encoding = (encoding + '').toLowerCase()
	        loweredCase = true
	    }
	  }
	}

	// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
	// Buffer instances.
	Buffer.prototype._isBuffer = true

	function swap (b, n, m) {
	  var i = b[n]
	  b[n] = b[m]
	  b[m] = i
	}

	Buffer.prototype.swap16 = function swap16 () {
	  var len = this.length
	  if (len % 2 !== 0) {
	    throw new RangeError('Buffer size must be a multiple of 16-bits')
	  }
	  for (var i = 0; i < len; i += 2) {
	    swap(this, i, i + 1)
	  }
	  return this
	}

	Buffer.prototype.swap32 = function swap32 () {
	  var len = this.length
	  if (len % 4 !== 0) {
	    throw new RangeError('Buffer size must be a multiple of 32-bits')
	  }
	  for (var i = 0; i < len; i += 4) {
	    swap(this, i, i + 3)
	    swap(this, i + 1, i + 2)
	  }
	  return this
	}

	Buffer.prototype.swap64 = function swap64 () {
	  var len = this.length
	  if (len % 8 !== 0) {
	    throw new RangeError('Buffer size must be a multiple of 64-bits')
	  }
	  for (var i = 0; i < len; i += 8) {
	    swap(this, i, i + 7)
	    swap(this, i + 1, i + 6)
	    swap(this, i + 2, i + 5)
	    swap(this, i + 3, i + 4)
	  }
	  return this
	}

	Buffer.prototype.toString = function toString () {
	  var length = this.length | 0
	  if (length === 0) return ''
	  if (arguments.length === 0) return utf8Slice(this, 0, length)
	  return slowToString.apply(this, arguments)
	}

	Buffer.prototype.equals = function equals (b) {
	  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
	  if (this === b) return true
	  return Buffer.compare(this, b) === 0
	}

	Buffer.prototype.inspect = function inspect () {
	  var str = ''
	  var max = exports.INSPECT_MAX_BYTES
	  if (this.length > 0) {
	    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
	    if (this.length > max) str += ' ... '
	  }
	  return '<Buffer ' + str + '>'
	}

	Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
	  if (!Buffer.isBuffer(target)) {
	    throw new TypeError('Argument must be a Buffer')
	  }

	  if (start === undefined) {
	    start = 0
	  }
	  if (end === undefined) {
	    end = target ? target.length : 0
	  }
	  if (thisStart === undefined) {
	    thisStart = 0
	  }
	  if (thisEnd === undefined) {
	    thisEnd = this.length
	  }

	  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
	    throw new RangeError('out of range index')
	  }

	  if (thisStart >= thisEnd && start >= end) {
	    return 0
	  }
	  if (thisStart >= thisEnd) {
	    return -1
	  }
	  if (start >= end) {
	    return 1
	  }

	  start >>>= 0
	  end >>>= 0
	  thisStart >>>= 0
	  thisEnd >>>= 0

	  if (this === target) return 0

	  var x = thisEnd - thisStart
	  var y = end - start
	  var len = Math.min(x, y)

	  var thisCopy = this.slice(thisStart, thisEnd)
	  var targetCopy = target.slice(start, end)

	  for (var i = 0; i < len; ++i) {
	    if (thisCopy[i] !== targetCopy[i]) {
	      x = thisCopy[i]
	      y = targetCopy[i]
	      break
	    }
	  }

	  if (x < y) return -1
	  if (y < x) return 1
	  return 0
	}

	// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
	// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
	//
	// Arguments:
	// - buffer - a Buffer to search
	// - val - a string, Buffer, or number
	// - byteOffset - an index into `buffer`; will be clamped to an int32
	// - encoding - an optional encoding, relevant is val is a string
	// - dir - true for indexOf, false for lastIndexOf
	function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
	  // Empty buffer means no match
	  if (buffer.length === 0) return -1

	  // Normalize byteOffset
	  if (typeof byteOffset === 'string') {
	    encoding = byteOffset
	    byteOffset = 0
	  } else if (byteOffset > 0x7fffffff) {
	    byteOffset = 0x7fffffff
	  } else if (byteOffset < -0x80000000) {
	    byteOffset = -0x80000000
	  }
	  byteOffset = +byteOffset  // Coerce to Number.
	  if (isNaN(byteOffset)) {
	    // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
	    byteOffset = dir ? 0 : (buffer.length - 1)
	  }

	  // Normalize byteOffset: negative offsets start from the end of the buffer
	  if (byteOffset < 0) byteOffset = buffer.length + byteOffset
	  if (byteOffset >= buffer.length) {
	    if (dir) return -1
	    else byteOffset = buffer.length - 1
	  } else if (byteOffset < 0) {
	    if (dir) byteOffset = 0
	    else return -1
	  }

	  // Normalize val
	  if (typeof val === 'string') {
	    val = Buffer.from(val, encoding)
	  }

	  // Finally, search either indexOf (if dir is true) or lastIndexOf
	  if (Buffer.isBuffer(val)) {
	    // Special case: looking for empty string/buffer always fails
	    if (val.length === 0) {
	      return -1
	    }
	    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
	  } else if (typeof val === 'number') {
	    val = val & 0xFF // Search for a byte value [0-255]
	    if (Buffer.TYPED_ARRAY_SUPPORT &&
	        typeof Uint8Array.prototype.indexOf === 'function') {
	      if (dir) {
	        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
	      } else {
	        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
	      }
	    }
	    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
	  }

	  throw new TypeError('val must be string, number or Buffer')
	}

	function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
	  var indexSize = 1
	  var arrLength = arr.length
	  var valLength = val.length

	  if (encoding !== undefined) {
	    encoding = String(encoding).toLowerCase()
	    if (encoding === 'ucs2' || encoding === 'ucs-2' ||
	        encoding === 'utf16le' || encoding === 'utf-16le') {
	      if (arr.length < 2 || val.length < 2) {
	        return -1
	      }
	      indexSize = 2
	      arrLength /= 2
	      valLength /= 2
	      byteOffset /= 2
	    }
	  }

	  function read (buf, i) {
	    if (indexSize === 1) {
	      return buf[i]
	    } else {
	      return buf.readUInt16BE(i * indexSize)
	    }
	  }

	  var i
	  if (dir) {
	    var foundIndex = -1
	    for (i = byteOffset; i < arrLength; i++) {
	      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
	        if (foundIndex === -1) foundIndex = i
	        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
	      } else {
	        if (foundIndex !== -1) i -= i - foundIndex
	        foundIndex = -1
	      }
	    }
	  } else {
	    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength
	    for (i = byteOffset; i >= 0; i--) {
	      var found = true
	      for (var j = 0; j < valLength; j++) {
	        if (read(arr, i + j) !== read(val, j)) {
	          found = false
	          break
	        }
	      }
	      if (found) return i
	    }
	  }

	  return -1
	}

	Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
	  return this.indexOf(val, byteOffset, encoding) !== -1
	}

	Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
	  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
	}

	Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
	  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
	}

	function hexWrite (buf, string, offset, length) {
	  offset = Number(offset) || 0
	  var remaining = buf.length - offset
	  if (!length) {
	    length = remaining
	  } else {
	    length = Number(length)
	    if (length > remaining) {
	      length = remaining
	    }
	  }

	  // must be an even number of digits
	  var strLen = string.length
	  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')

	  if (length > strLen / 2) {
	    length = strLen / 2
	  }
	  for (var i = 0; i < length; ++i) {
	    var parsed = parseInt(string.substr(i * 2, 2), 16)
	    if (isNaN(parsed)) return i
	    buf[offset + i] = parsed
	  }
	  return i
	}

	function utf8Write (buf, string, offset, length) {
	  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
	}

	function asciiWrite (buf, string, offset, length) {
	  return blitBuffer(asciiToBytes(string), buf, offset, length)
	}

	function latin1Write (buf, string, offset, length) {
	  return asciiWrite(buf, string, offset, length)
	}

	function base64Write (buf, string, offset, length) {
	  return blitBuffer(base64ToBytes(string), buf, offset, length)
	}

	function ucs2Write (buf, string, offset, length) {
	  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
	}

	Buffer.prototype.write = function write (string, offset, length, encoding) {
	  // Buffer#write(string)
	  if (offset === undefined) {
	    encoding = 'utf8'
	    length = this.length
	    offset = 0
	  // Buffer#write(string, encoding)
	  } else if (length === undefined && typeof offset === 'string') {
	    encoding = offset
	    length = this.length
	    offset = 0
	  // Buffer#write(string, offset[, length][, encoding])
	  } else if (isFinite(offset)) {
	    offset = offset | 0
	    if (isFinite(length)) {
	      length = length | 0
	      if (encoding === undefined) encoding = 'utf8'
	    } else {
	      encoding = length
	      length = undefined
	    }
	  // legacy write(string, encoding, offset, length) - remove in v0.13
	  } else {
	    throw new Error(
	      'Buffer.write(string, encoding, offset[, length]) is no longer supported'
	    )
	  }

	  var remaining = this.length - offset
	  if (length === undefined || length > remaining) length = remaining

	  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
	    throw new RangeError('Attempt to write outside buffer bounds')
	  }

	  if (!encoding) encoding = 'utf8'

	  var loweredCase = false
	  for (;;) {
	    switch (encoding) {
	      case 'hex':
	        return hexWrite(this, string, offset, length)

	      case 'utf8':
	      case 'utf-8':
	        return utf8Write(this, string, offset, length)

	      case 'ascii':
	        return asciiWrite(this, string, offset, length)

	      case 'latin1':
	      case 'binary':
	        return latin1Write(this, string, offset, length)

	      case 'base64':
	        // Warning: maxLength not taken into account in base64Write
	        return base64Write(this, string, offset, length)

	      case 'ucs2':
	      case 'ucs-2':
	      case 'utf16le':
	      case 'utf-16le':
	        return ucs2Write(this, string, offset, length)

	      default:
	        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
	        encoding = ('' + encoding).toLowerCase()
	        loweredCase = true
	    }
	  }
	}

	Buffer.prototype.toJSON = function toJSON () {
	  return {
	    type: 'Buffer',
	    data: Array.prototype.slice.call(this._arr || this, 0)
	  }
	}

	function base64Slice (buf, start, end) {
	  if (start === 0 && end === buf.length) {
	    return base64.fromByteArray(buf)
	  } else {
	    return base64.fromByteArray(buf.slice(start, end))
	  }
	}

	function utf8Slice (buf, start, end) {
	  end = Math.min(buf.length, end)
	  var res = []

	  var i = start
	  while (i < end) {
	    var firstByte = buf[i]
	    var codePoint = null
	    var bytesPerSequence = (firstByte > 0xEF) ? 4
	      : (firstByte > 0xDF) ? 3
	      : (firstByte > 0xBF) ? 2
	      : 1

	    if (i + bytesPerSequence <= end) {
	      var secondByte, thirdByte, fourthByte, tempCodePoint

	      switch (bytesPerSequence) {
	        case 1:
	          if (firstByte < 0x80) {
	            codePoint = firstByte
	          }
	          break
	        case 2:
	          secondByte = buf[i + 1]
	          if ((secondByte & 0xC0) === 0x80) {
	            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
	            if (tempCodePoint > 0x7F) {
	              codePoint = tempCodePoint
	            }
	          }
	          break
	        case 3:
	          secondByte = buf[i + 1]
	          thirdByte = buf[i + 2]
	          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
	            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
	            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
	              codePoint = tempCodePoint
	            }
	          }
	          break
	        case 4:
	          secondByte = buf[i + 1]
	          thirdByte = buf[i + 2]
	          fourthByte = buf[i + 3]
	          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
	            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
	            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
	              codePoint = tempCodePoint
	            }
	          }
	      }
	    }

	    if (codePoint === null) {
	      // we did not generate a valid codePoint so insert a
	      // replacement char (U+FFFD) and advance only 1 byte
	      codePoint = 0xFFFD
	      bytesPerSequence = 1
	    } else if (codePoint > 0xFFFF) {
	      // encode to utf16 (surrogate pair dance)
	      codePoint -= 0x10000
	      res.push(codePoint >>> 10 & 0x3FF | 0xD800)
	      codePoint = 0xDC00 | codePoint & 0x3FF
	    }

	    res.push(codePoint)
	    i += bytesPerSequence
	  }

	  return decodeCodePointsArray(res)
	}

	// Based on http://stackoverflow.com/a/22747272/680742, the browser with
	// the lowest limit is Chrome, with 0x10000 args.
	// We go 1 magnitude less, for safety
	var MAX_ARGUMENTS_LENGTH = 0x1000

	function decodeCodePointsArray (codePoints) {
	  var len = codePoints.length
	  if (len <= MAX_ARGUMENTS_LENGTH) {
	    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
	  }

	  // Decode in chunks to avoid "call stack size exceeded".
	  var res = ''
	  var i = 0
	  while (i < len) {
	    res += String.fromCharCode.apply(
	      String,
	      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
	    )
	  }
	  return res
	}

	function asciiSlice (buf, start, end) {
	  var ret = ''
	  end = Math.min(buf.length, end)

	  for (var i = start; i < end; ++i) {
	    ret += String.fromCharCode(buf[i] & 0x7F)
	  }
	  return ret
	}

	function latin1Slice (buf, start, end) {
	  var ret = ''
	  end = Math.min(buf.length, end)

	  for (var i = start; i < end; ++i) {
	    ret += String.fromCharCode(buf[i])
	  }
	  return ret
	}

	function hexSlice (buf, start, end) {
	  var len = buf.length

	  if (!start || start < 0) start = 0
	  if (!end || end < 0 || end > len) end = len

	  var out = ''
	  for (var i = start; i < end; ++i) {
	    out += toHex(buf[i])
	  }
	  return out
	}

	function utf16leSlice (buf, start, end) {
	  var bytes = buf.slice(start, end)
	  var res = ''
	  for (var i = 0; i < bytes.length; i += 2) {
	    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
	  }
	  return res
	}

	Buffer.prototype.slice = function slice (start, end) {
	  var len = this.length
	  start = ~~start
	  end = end === undefined ? len : ~~end

	  if (start < 0) {
	    start += len
	    if (start < 0) start = 0
	  } else if (start > len) {
	    start = len
	  }

	  if (end < 0) {
	    end += len
	    if (end < 0) end = 0
	  } else if (end > len) {
	    end = len
	  }

	  if (end < start) end = start

	  var newBuf
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    newBuf = this.subarray(start, end)
	    newBuf.__proto__ = Buffer.prototype
	  } else {
	    var sliceLen = end - start
	    newBuf = new Buffer(sliceLen, undefined)
	    for (var i = 0; i < sliceLen; ++i) {
	      newBuf[i] = this[i + start]
	    }
	  }

	  return newBuf
	}

	/*
	 * Need to make sure that buffer isn't trying to write out of bounds.
	 */
	function checkOffset (offset, ext, length) {
	  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
	  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
	}

	Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
	  offset = offset | 0
	  byteLength = byteLength | 0
	  if (!noAssert) checkOffset(offset, byteLength, this.length)

	  var val = this[offset]
	  var mul = 1
	  var i = 0
	  while (++i < byteLength && (mul *= 0x100)) {
	    val += this[offset + i] * mul
	  }

	  return val
	}

	Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
	  offset = offset | 0
	  byteLength = byteLength | 0
	  if (!noAssert) {
	    checkOffset(offset, byteLength, this.length)
	  }

	  var val = this[offset + --byteLength]
	  var mul = 1
	  while (byteLength > 0 && (mul *= 0x100)) {
	    val += this[offset + --byteLength] * mul
	  }

	  return val
	}

	Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 1, this.length)
	  return this[offset]
	}

	Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 2, this.length)
	  return this[offset] | (this[offset + 1] << 8)
	}

	Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 2, this.length)
	  return (this[offset] << 8) | this[offset + 1]
	}

	Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 4, this.length)

	  return ((this[offset]) |
	      (this[offset + 1] << 8) |
	      (this[offset + 2] << 16)) +
	      (this[offset + 3] * 0x1000000)
	}

	Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 4, this.length)

	  return (this[offset] * 0x1000000) +
	    ((this[offset + 1] << 16) |
	    (this[offset + 2] << 8) |
	    this[offset + 3])
	}

	Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
	  offset = offset | 0
	  byteLength = byteLength | 0
	  if (!noAssert) checkOffset(offset, byteLength, this.length)

	  var val = this[offset]
	  var mul = 1
	  var i = 0
	  while (++i < byteLength && (mul *= 0x100)) {
	    val += this[offset + i] * mul
	  }
	  mul *= 0x80

	  if (val >= mul) val -= Math.pow(2, 8 * byteLength)

	  return val
	}

	Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
	  offset = offset | 0
	  byteLength = byteLength | 0
	  if (!noAssert) checkOffset(offset, byteLength, this.length)

	  var i = byteLength
	  var mul = 1
	  var val = this[offset + --i]
	  while (i > 0 && (mul *= 0x100)) {
	    val += this[offset + --i] * mul
	  }
	  mul *= 0x80

	  if (val >= mul) val -= Math.pow(2, 8 * byteLength)

	  return val
	}

	Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 1, this.length)
	  if (!(this[offset] & 0x80)) return (this[offset])
	  return ((0xff - this[offset] + 1) * -1)
	}

	Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 2, this.length)
	  var val = this[offset] | (this[offset + 1] << 8)
	  return (val & 0x8000) ? val | 0xFFFF0000 : val
	}

	Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 2, this.length)
	  var val = this[offset + 1] | (this[offset] << 8)
	  return (val & 0x8000) ? val | 0xFFFF0000 : val
	}

	Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 4, this.length)

	  return (this[offset]) |
	    (this[offset + 1] << 8) |
	    (this[offset + 2] << 16) |
	    (this[offset + 3] << 24)
	}

	Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 4, this.length)

	  return (this[offset] << 24) |
	    (this[offset + 1] << 16) |
	    (this[offset + 2] << 8) |
	    (this[offset + 3])
	}

	Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 4, this.length)
	  return ieee754.read(this, offset, true, 23, 4)
	}

	Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 4, this.length)
	  return ieee754.read(this, offset, false, 23, 4)
	}

	Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 8, this.length)
	  return ieee754.read(this, offset, true, 52, 8)
	}

	Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 8, this.length)
	  return ieee754.read(this, offset, false, 52, 8)
	}

	function checkInt (buf, value, offset, ext, max, min) {
	  if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
	  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
	  if (offset + ext > buf.length) throw new RangeError('Index out of range')
	}

	Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
	  value = +value
	  offset = offset | 0
	  byteLength = byteLength | 0
	  if (!noAssert) {
	    var maxBytes = Math.pow(2, 8 * byteLength) - 1
	    checkInt(this, value, offset, byteLength, maxBytes, 0)
	  }

	  var mul = 1
	  var i = 0
	  this[offset] = value & 0xFF
	  while (++i < byteLength && (mul *= 0x100)) {
	    this[offset + i] = (value / mul) & 0xFF
	  }

	  return offset + byteLength
	}

	Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
	  value = +value
	  offset = offset | 0
	  byteLength = byteLength | 0
	  if (!noAssert) {
	    var maxBytes = Math.pow(2, 8 * byteLength) - 1
	    checkInt(this, value, offset, byteLength, maxBytes, 0)
	  }

	  var i = byteLength - 1
	  var mul = 1
	  this[offset + i] = value & 0xFF
	  while (--i >= 0 && (mul *= 0x100)) {
	    this[offset + i] = (value / mul) & 0xFF
	  }

	  return offset + byteLength
	}

	Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
	  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
	  this[offset] = (value & 0xff)
	  return offset + 1
	}

	function objectWriteUInt16 (buf, value, offset, littleEndian) {
	  if (value < 0) value = 0xffff + value + 1
	  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
	    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
	      (littleEndian ? i : 1 - i) * 8
	  }
	}

	Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    this[offset] = (value & 0xff)
	    this[offset + 1] = (value >>> 8)
	  } else {
	    objectWriteUInt16(this, value, offset, true)
	  }
	  return offset + 2
	}

	Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    this[offset] = (value >>> 8)
	    this[offset + 1] = (value & 0xff)
	  } else {
	    objectWriteUInt16(this, value, offset, false)
	  }
	  return offset + 2
	}

	function objectWriteUInt32 (buf, value, offset, littleEndian) {
	  if (value < 0) value = 0xffffffff + value + 1
	  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
	    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
	  }
	}

	Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    this[offset + 3] = (value >>> 24)
	    this[offset + 2] = (value >>> 16)
	    this[offset + 1] = (value >>> 8)
	    this[offset] = (value & 0xff)
	  } else {
	    objectWriteUInt32(this, value, offset, true)
	  }
	  return offset + 4
	}

	Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    this[offset] = (value >>> 24)
	    this[offset + 1] = (value >>> 16)
	    this[offset + 2] = (value >>> 8)
	    this[offset + 3] = (value & 0xff)
	  } else {
	    objectWriteUInt32(this, value, offset, false)
	  }
	  return offset + 4
	}

	Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) {
	    var limit = Math.pow(2, 8 * byteLength - 1)

	    checkInt(this, value, offset, byteLength, limit - 1, -limit)
	  }

	  var i = 0
	  var mul = 1
	  var sub = 0
	  this[offset] = value & 0xFF
	  while (++i < byteLength && (mul *= 0x100)) {
	    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
	      sub = 1
	    }
	    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
	  }

	  return offset + byteLength
	}

	Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) {
	    var limit = Math.pow(2, 8 * byteLength - 1)

	    checkInt(this, value, offset, byteLength, limit - 1, -limit)
	  }

	  var i = byteLength - 1
	  var mul = 1
	  var sub = 0
	  this[offset + i] = value & 0xFF
	  while (--i >= 0 && (mul *= 0x100)) {
	    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
	      sub = 1
	    }
	    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
	  }

	  return offset + byteLength
	}

	Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
	  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
	  if (value < 0) value = 0xff + value + 1
	  this[offset] = (value & 0xff)
	  return offset + 1
	}

	Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    this[offset] = (value & 0xff)
	    this[offset + 1] = (value >>> 8)
	  } else {
	    objectWriteUInt16(this, value, offset, true)
	  }
	  return offset + 2
	}

	Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    this[offset] = (value >>> 8)
	    this[offset + 1] = (value & 0xff)
	  } else {
	    objectWriteUInt16(this, value, offset, false)
	  }
	  return offset + 2
	}

	Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    this[offset] = (value & 0xff)
	    this[offset + 1] = (value >>> 8)
	    this[offset + 2] = (value >>> 16)
	    this[offset + 3] = (value >>> 24)
	  } else {
	    objectWriteUInt32(this, value, offset, true)
	  }
	  return offset + 4
	}

	Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
	  if (value < 0) value = 0xffffffff + value + 1
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    this[offset] = (value >>> 24)
	    this[offset + 1] = (value >>> 16)
	    this[offset + 2] = (value >>> 8)
	    this[offset + 3] = (value & 0xff)
	  } else {
	    objectWriteUInt32(this, value, offset, false)
	  }
	  return offset + 4
	}

	function checkIEEE754 (buf, value, offset, ext, max, min) {
	  if (offset + ext > buf.length) throw new RangeError('Index out of range')
	  if (offset < 0) throw new RangeError('Index out of range')
	}

	function writeFloat (buf, value, offset, littleEndian, noAssert) {
	  if (!noAssert) {
	    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
	  }
	  ieee754.write(buf, value, offset, littleEndian, 23, 4)
	  return offset + 4
	}

	Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
	  return writeFloat(this, value, offset, true, noAssert)
	}

	Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
	  return writeFloat(this, value, offset, false, noAssert)
	}

	function writeDouble (buf, value, offset, littleEndian, noAssert) {
	  if (!noAssert) {
	    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
	  }
	  ieee754.write(buf, value, offset, littleEndian, 52, 8)
	  return offset + 8
	}

	Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
	  return writeDouble(this, value, offset, true, noAssert)
	}

	Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
	  return writeDouble(this, value, offset, false, noAssert)
	}

	// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
	Buffer.prototype.copy = function copy (target, targetStart, start, end) {
	  if (!start) start = 0
	  if (!end && end !== 0) end = this.length
	  if (targetStart >= target.length) targetStart = target.length
	  if (!targetStart) targetStart = 0
	  if (end > 0 && end < start) end = start

	  // Copy 0 bytes; we're done
	  if (end === start) return 0
	  if (target.length === 0 || this.length === 0) return 0

	  // Fatal error conditions
	  if (targetStart < 0) {
	    throw new RangeError('targetStart out of bounds')
	  }
	  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
	  if (end < 0) throw new RangeError('sourceEnd out of bounds')

	  // Are we oob?
	  if (end > this.length) end = this.length
	  if (target.length - targetStart < end - start) {
	    end = target.length - targetStart + start
	  }

	  var len = end - start
	  var i

	  if (this === target && start < targetStart && targetStart < end) {
	    // descending copy from end
	    for (i = len - 1; i >= 0; --i) {
	      target[i + targetStart] = this[i + start]
	    }
	  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
	    // ascending copy from start
	    for (i = 0; i < len; ++i) {
	      target[i + targetStart] = this[i + start]
	    }
	  } else {
	    Uint8Array.prototype.set.call(
	      target,
	      this.subarray(start, start + len),
	      targetStart
	    )
	  }

	  return len
	}

	// Usage:
	//    buffer.fill(number[, offset[, end]])
	//    buffer.fill(buffer[, offset[, end]])
	//    buffer.fill(string[, offset[, end]][, encoding])
	Buffer.prototype.fill = function fill (val, start, end, encoding) {
	  // Handle string cases:
	  if (typeof val === 'string') {
	    if (typeof start === 'string') {
	      encoding = start
	      start = 0
	      end = this.length
	    } else if (typeof end === 'string') {
	      encoding = end
	      end = this.length
	    }
	    if (val.length === 1) {
	      var code = val.charCodeAt(0)
	      if (code < 256) {
	        val = code
	      }
	    }
	    if (encoding !== undefined && typeof encoding !== 'string') {
	      throw new TypeError('encoding must be a string')
	    }
	    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
	      throw new TypeError('Unknown encoding: ' + encoding)
	    }
	  } else if (typeof val === 'number') {
	    val = val & 255
	  }

	  // Invalid ranges are not set to a default, so can range check early.
	  if (start < 0 || this.length < start || this.length < end) {
	    throw new RangeError('Out of range index')
	  }

	  if (end <= start) {
	    return this
	  }

	  start = start >>> 0
	  end = end === undefined ? this.length : end >>> 0

	  if (!val) val = 0

	  var i
	  if (typeof val === 'number') {
	    for (i = start; i < end; ++i) {
	      this[i] = val
	    }
	  } else {
	    var bytes = Buffer.isBuffer(val)
	      ? val
	      : utf8ToBytes(new Buffer(val, encoding).toString())
	    var len = bytes.length
	    for (i = 0; i < end - start; ++i) {
	      this[i + start] = bytes[i % len]
	    }
	  }

	  return this
	}

	// HELPER FUNCTIONS
	// ================

	var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g

	function base64clean (str) {
	  // Node strips out invalid characters like \n and \t from the string, base64-js does not
	  str = stringtrim(str).replace(INVALID_BASE64_RE, '')
	  // Node converts strings with length < 2 to ''
	  if (str.length < 2) return ''
	  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
	  while (str.length % 4 !== 0) {
	    str = str + '='
	  }
	  return str
	}

	function stringtrim (str) {
	  if (str.trim) return str.trim()
	  return str.replace(/^\s+|\s+$/g, '')
	}

	function toHex (n) {
	  if (n < 16) return '0' + n.toString(16)
	  return n.toString(16)
	}

	function utf8ToBytes (string, units) {
	  units = units || Infinity
	  var codePoint
	  var length = string.length
	  var leadSurrogate = null
	  var bytes = []

	  for (var i = 0; i < length; ++i) {
	    codePoint = string.charCodeAt(i)

	    // is surrogate component
	    if (codePoint > 0xD7FF && codePoint < 0xE000) {
	      // last char was a lead
	      if (!leadSurrogate) {
	        // no lead yet
	        if (codePoint > 0xDBFF) {
	          // unexpected trail
	          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
	          continue
	        } else if (i + 1 === length) {
	          // unpaired lead
	          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
	          continue
	        }

	        // valid lead
	        leadSurrogate = codePoint

	        continue
	      }

	      // 2 leads in a row
	      if (codePoint < 0xDC00) {
	        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
	        leadSurrogate = codePoint
	        continue
	      }

	      // valid surrogate pair
	      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
	    } else if (leadSurrogate) {
	      // valid bmp char, but last char was a lead
	      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
	    }

	    leadSurrogate = null

	    // encode utf8
	    if (codePoint < 0x80) {
	      if ((units -= 1) < 0) break
	      bytes.push(codePoint)
	    } else if (codePoint < 0x800) {
	      if ((units -= 2) < 0) break
	      bytes.push(
	        codePoint >> 0x6 | 0xC0,
	        codePoint & 0x3F | 0x80
	      )
	    } else if (codePoint < 0x10000) {
	      if ((units -= 3) < 0) break
	      bytes.push(
	        codePoint >> 0xC | 0xE0,
	        codePoint >> 0x6 & 0x3F | 0x80,
	        codePoint & 0x3F | 0x80
	      )
	    } else if (codePoint < 0x110000) {
	      if ((units -= 4) < 0) break
	      bytes.push(
	        codePoint >> 0x12 | 0xF0,
	        codePoint >> 0xC & 0x3F | 0x80,
	        codePoint >> 0x6 & 0x3F | 0x80,
	        codePoint & 0x3F | 0x80
	      )
	    } else {
	      throw new Error('Invalid code point')
	    }
	  }

	  return bytes
	}

	function asciiToBytes (str) {
	  var byteArray = []
	  for (var i = 0; i < str.length; ++i) {
	    // Node's code seems to be doing this and not & 0x7F..
	    byteArray.push(str.charCodeAt(i) & 0xFF)
	  }
	  return byteArray
	}

	function utf16leToBytes (str, units) {
	  var c, hi, lo
	  var byteArray = []
	  for (var i = 0; i < str.length; ++i) {
	    if ((units -= 2) < 0) break

	    c = str.charCodeAt(i)
	    hi = c >> 8
	    lo = c % 256
	    byteArray.push(lo)
	    byteArray.push(hi)
	  }

	  return byteArray
	}

	function base64ToBytes (str) {
	  return base64.toByteArray(base64clean(str))
	}

	function blitBuffer (src, dst, offset, length) {
	  for (var i = 0; i < length; ++i) {
	    if ((i + offset >= dst.length) || (i >= src.length)) break
	    dst[i + offset] = src[i]
	  }
	  return i
	}

	function isnan (val) {
	  return val !== val // eslint-disable-line no-self-compare
	}

	/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))

/***/ }),

/***/ 307:
/***/ (function(module, exports) {

	'use strict'

	exports.byteLength = byteLength
	exports.toByteArray = toByteArray
	exports.fromByteArray = fromByteArray

	var lookup = []
	var revLookup = []
	var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array

	var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
	for (var i = 0, len = code.length; i < len; ++i) {
	  lookup[i] = code[i]
	  revLookup[code.charCodeAt(i)] = i
	}

	revLookup['-'.charCodeAt(0)] = 62
	revLookup['_'.charCodeAt(0)] = 63

	function placeHoldersCount (b64) {
	  var len = b64.length
	  if (len % 4 > 0) {
	    throw new Error('Invalid string. Length must be a multiple of 4')
	  }

	  // the number of equal signs (place holders)
	  // if there are two placeholders, than the two characters before it
	  // represent one byte
	  // if there is only one, then the three characters before it represent 2 bytes
	  // this is just a cheap hack to not do indexOf twice
	  return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
	}

	function byteLength (b64) {
	  // base64 is 4/3 + up to two characters of the original data
	  return (b64.length * 3 / 4) - placeHoldersCount(b64)
	}

	function toByteArray (b64) {
	  var i, l, tmp, placeHolders, arr
	  var len = b64.length
	  placeHolders = placeHoldersCount(b64)

	  arr = new Arr((len * 3 / 4) - placeHolders)

	  // if there are placeholders, only get up to the last complete 4 chars
	  l = placeHolders > 0 ? len - 4 : len

	  var L = 0

	  for (i = 0; i < l; i += 4) {
	    tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
	    arr[L++] = (tmp >> 16) & 0xFF
	    arr[L++] = (tmp >> 8) & 0xFF
	    arr[L++] = tmp & 0xFF
	  }

	  if (placeHolders === 2) {
	    tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
	    arr[L++] = tmp & 0xFF
	  } else if (placeHolders === 1) {
	    tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
	    arr[L++] = (tmp >> 8) & 0xFF
	    arr[L++] = tmp & 0xFF
	  }

	  return arr
	}

	function tripletToBase64 (num) {
	  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
	}

	function encodeChunk (uint8, start, end) {
	  var tmp
	  var output = []
	  for (var i = start; i < end; i += 3) {
	    tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
	    output.push(tripletToBase64(tmp))
	  }
	  return output.join('')
	}

	function fromByteArray (uint8) {
	  var tmp
	  var len = uint8.length
	  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
	  var output = ''
	  var parts = []
	  var maxChunkLength = 16383 // must be multiple of 3

	  // go through the array every three bytes, we'll deal with trailing stuff later
	  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
	    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
	  }

	  // pad the end with zeros, but make sure to not forget the extra bytes
	  if (extraBytes === 1) {
	    tmp = uint8[len - 1]
	    output += lookup[tmp >> 2]
	    output += lookup[(tmp << 4) & 0x3F]
	    output += '=='
	  } else if (extraBytes === 2) {
	    tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
	    output += lookup[tmp >> 10]
	    output += lookup[(tmp >> 4) & 0x3F]
	    output += lookup[(tmp << 2) & 0x3F]
	    output += '='
	  }

	  parts.push(output)

	  return parts.join('')
	}


/***/ }),

/***/ 308:
/***/ (function(module, exports) {

	exports.read = function (buffer, offset, isLE, mLen, nBytes) {
	  var e, m
	  var eLen = nBytes * 8 - mLen - 1
	  var eMax = (1 << eLen) - 1
	  var eBias = eMax >> 1
	  var nBits = -7
	  var i = isLE ? (nBytes - 1) : 0
	  var d = isLE ? -1 : 1
	  var s = buffer[offset + i]

	  i += d

	  e = s & ((1 << (-nBits)) - 1)
	  s >>= (-nBits)
	  nBits += eLen
	  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}

	  m = e & ((1 << (-nBits)) - 1)
	  e >>= (-nBits)
	  nBits += mLen
	  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}

	  if (e === 0) {
	    e = 1 - eBias
	  } else if (e === eMax) {
	    return m ? NaN : ((s ? -1 : 1) * Infinity)
	  } else {
	    m = m + Math.pow(2, mLen)
	    e = e - eBias
	  }
	  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
	}

	exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
	  var e, m, c
	  var eLen = nBytes * 8 - mLen - 1
	  var eMax = (1 << eLen) - 1
	  var eBias = eMax >> 1
	  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
	  var i = isLE ? 0 : (nBytes - 1)
	  var d = isLE ? 1 : -1
	  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0

	  value = Math.abs(value)

	  if (isNaN(value) || value === Infinity) {
	    m = isNaN(value) ? 1 : 0
	    e = eMax
	  } else {
	    e = Math.floor(Math.log(value) / Math.LN2)
	    if (value * (c = Math.pow(2, -e)) < 1) {
	      e--
	      c *= 2
	    }
	    if (e + eBias >= 1) {
	      value += rt / c
	    } else {
	      value += rt * Math.pow(2, 1 - eBias)
	    }
	    if (value * c >= 2) {
	      e++
	      c /= 2
	    }

	    if (e + eBias >= eMax) {
	      m = 0
	      e = eMax
	    } else if (e + eBias >= 1) {
	      m = (value * c - 1) * Math.pow(2, mLen)
	      e = e + eBias
	    } else {
	      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
	      e = 0
	    }
	  }

	  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}

	  e = (e << mLen) | m
	  eLen += mLen
	  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}

	  buffer[offset + i - d] |= s * 128
	}


/***/ }),

/***/ 309:
/***/ (function(module, exports) {

	var toString = {}.toString;

	module.exports = Array.isArray || function (arr) {
	  return toString.call(arr) == '[object Array]';
	};


/***/ }),

/***/ 310:
/***/ (function(module, exports, __webpack_require__) {

	// Copyright Joyent, Inc. and other Node contributors.
	//
	// Permission is hereby granted, free of charge, to any person obtaining a
	// copy of this software and associated documentation files (the
	// "Software"), to deal in the Software without restriction, including
	// without limitation the rights to use, copy, modify, merge, publish,
	// distribute, sublicense, and/or sell copies of the Software, and to permit
	// persons to whom the Software is furnished to do so, subject to the
	// following conditions:
	//
	// The above copyright notice and this permission notice shall be included
	// in all copies or substantial portions of the Software.
	//
	// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
	// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
	// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
	// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
	// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
	// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
	// USE OR OTHER DEALINGS IN THE SOFTWARE.

	module.exports = Stream;

	var EE = __webpack_require__(311).EventEmitter;
	var inherits = __webpack_require__(312);

	inherits(Stream, EE);
	Stream.Readable = __webpack_require__(313);
	Stream.Writable = __webpack_require__(332);
	Stream.Duplex = __webpack_require__(333);
	Stream.Transform = __webpack_require__(334);
	Stream.PassThrough = __webpack_require__(335);

	// Backwards-compat with node 0.4.x
	Stream.Stream = Stream;



	// old-style streams.  Note that the pipe method (the only relevant
	// part of this class) is overridden in the Readable class.

	function Stream() {
	  EE.call(this);
	}

	Stream.prototype.pipe = function(dest, options) {
	  var source = this;

	  function ondata(chunk) {
	    if (dest.writable) {
	      if (false === dest.write(chunk) && source.pause) {
	        source.pause();
	      }
	    }
	  }

	  source.on('data', ondata);

	  function ondrain() {
	    if (source.readable && source.resume) {
	      source.resume();
	    }
	  }

	  dest.on('drain', ondrain);

	  // If the 'end' option is not supplied, dest.end() will be called when
	  // source gets the 'end' or 'close' events.  Only dest.end() once.
	  if (!dest._isStdio && (!options || options.end !== false)) {
	    source.on('end', onend);
	    source.on('close', onclose);
	  }

	  var didOnEnd = false;
	  function onend() {
	    if (didOnEnd) return;
	    didOnEnd = true;

	    dest.end();
	  }


	  function onclose() {
	    if (didOnEnd) return;
	    didOnEnd = true;

	    if (typeof dest.destroy === 'function') dest.destroy();
	  }

	  // don't leave dangling pipes when there are errors.
	  function onerror(er) {
	    cleanup();
	    if (EE.listenerCount(this, 'error') === 0) {
	      throw er; // Unhandled stream error in pipe.
	    }
	  }

	  source.on('error', onerror);
	  dest.on('error', onerror);

	  // remove all the event listeners that were added.
	  function cleanup() {
	    source.removeListener('data', ondata);
	    dest.removeListener('drain', ondrain);

	    source.removeListener('end', onend);
	    source.removeListener('close', onclose);

	    source.removeListener('error', onerror);
	    dest.removeListener('error', onerror);

	    source.removeListener('end', cleanup);
	    source.removeListener('close', cleanup);

	    dest.removeListener('close', cleanup);
	  }

	  source.on('end', cleanup);
	  source.on('close', cleanup);

	  dest.on('close', cleanup);

	  dest.emit('pipe', source);

	  // Allow for unix-like usage: A.pipe(B).pipe(C)
	  return dest;
	};


/***/ }),

/***/ 311:
/***/ (function(module, exports) {

	// Copyright Joyent, Inc. and other Node contributors.
	//
	// Permission is hereby granted, free of charge, to any person obtaining a
	// copy of this software and associated documentation files (the
	// "Software"), to deal in the Software without restriction, including
	// without limitation the rights to use, copy, modify, merge, publish,
	// distribute, sublicense, and/or sell copies of the Software, and to permit
	// persons to whom the Software is furnished to do so, subject to the
	// following conditions:
	//
	// The above copyright notice and this permission notice shall be included
	// in all copies or substantial portions of the Software.
	//
	// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
	// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
	// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
	// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
	// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
	// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
	// USE OR OTHER DEALINGS IN THE SOFTWARE.

	function EventEmitter() {
	  this._events = this._events || {};
	  this._maxListeners = this._maxListeners || undefined;
	}
	module.exports = EventEmitter;

	// Backwards-compat with node 0.10.x
	EventEmitter.EventEmitter = EventEmitter;

	EventEmitter.prototype._events = undefined;
	EventEmitter.prototype._maxListeners = undefined;

	// By default EventEmitters will print a warning if more than 10 listeners are
	// added to it. This is a useful default which helps finding memory leaks.
	EventEmitter.defaultMaxListeners = 10;

	// Obviously not all Emitters should be limited to 10. This function allows
	// that to be increased. Set to zero for unlimited.
	EventEmitter.prototype.setMaxListeners = function(n) {
	  if (!isNumber(n) || n < 0 || isNaN(n))
	    throw TypeError('n must be a positive number');
	  this._maxListeners = n;
	  return this;
	};

	EventEmitter.prototype.emit = function(type) {
	  var er, handler, len, args, i, listeners;

	  if (!this._events)
	    this._events = {};

	  // If there is no 'error' event listener then throw.
	  if (type === 'error') {
	    if (!this._events.error ||
	        (isObject(this._events.error) && !this._events.error.length)) {
	      er = arguments[1];
	      if (er instanceof Error) {
	        throw er; // Unhandled 'error' event
	      } else {
	        // At least give some kind of context to the user
	        var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
	        err.context = er;
	        throw err;
	      }
	    }
	  }

	  handler = this._events[type];

	  if (isUndefined(handler))
	    return false;

	  if (isFunction(handler)) {
	    switch (arguments.length) {
	      // fast cases
	      case 1:
	        handler.call(this);
	        break;
	      case 2:
	        handler.call(this, arguments[1]);
	        break;
	      case 3:
	        handler.call(this, arguments[1], arguments[2]);
	        break;
	      // slower
	      default:
	        args = Array.prototype.slice.call(arguments, 1);
	        handler.apply(this, args);
	    }
	  } else if (isObject(handler)) {
	    args = Array.prototype.slice.call(arguments, 1);
	    listeners = handler.slice();
	    len = listeners.length;
	    for (i = 0; i < len; i++)
	      listeners[i].apply(this, args);
	  }

	  return true;
	};

	EventEmitter.prototype.addListener = function(type, listener) {
	  var m;

	  if (!isFunction(listener))
	    throw TypeError('listener must be a function');

	  if (!this._events)
	    this._events = {};

	  // To avoid recursion in the case that type === "newListener"! Before
	  // adding it to the listeners, first emit "newListener".
	  if (this._events.newListener)
	    this.emit('newListener', type,
	              isFunction(listener.listener) ?
	              listener.listener : listener);

	  if (!this._events[type])
	    // Optimize the case of one listener. Don't need the extra array object.
	    this._events[type] = listener;
	  else if (isObject(this._events[type]))
	    // If we've already got an array, just append.
	    this._events[type].push(listener);
	  else
	    // Adding the second element, need to change to array.
	    this._events[type] = [this._events[type], listener];

	  // Check for listener leak
	  if (isObject(this._events[type]) && !this._events[type].warned) {
	    if (!isUndefined(this._maxListeners)) {
	      m = this._maxListeners;
	    } else {
	      m = EventEmitter.defaultMaxListeners;
	    }

	    if (m && m > 0 && this._events[type].length > m) {
	      this._events[type].warned = true;
	      console.error('(node) warning: possible EventEmitter memory ' +
	                    'leak detected. %d listeners added. ' +
	                    'Use emitter.setMaxListeners() to increase limit.',
	                    this._events[type].length);
	      if (typeof console.trace === 'function') {
	        // not supported in IE 10
	        console.trace();
	      }
	    }
	  }

	  return this;
	};

	EventEmitter.prototype.on = EventEmitter.prototype.addListener;

	EventEmitter.prototype.once = function(type, listener) {
	  if (!isFunction(listener))
	    throw TypeError('listener must be a function');

	  var fired = false;

	  function g() {
	    this.removeListener(type, g);

	    if (!fired) {
	      fired = true;
	      listener.apply(this, arguments);
	    }
	  }

	  g.listener = listener;
	  this.on(type, g);

	  return this;
	};

	// emits a 'removeListener' event iff the listener was removed
	EventEmitter.prototype.removeListener = function(type, listener) {
	  var list, position, length, i;

	  if (!isFunction(listener))
	    throw TypeError('listener must be a function');

	  if (!this._events || !this._events[type])
	    return this;

	  list = this._events[type];
	  length = list.length;
	  position = -1;

	  if (list === listener ||
	      (isFunction(list.listener) && list.listener === listener)) {
	    delete this._events[type];
	    if (this._events.removeListener)
	      this.emit('removeListener', type, listener);

	  } else if (isObject(list)) {
	    for (i = length; i-- > 0;) {
	      if (list[i] === listener ||
	          (list[i].listener && list[i].listener === listener)) {
	        position = i;
	        break;
	      }
	    }

	    if (position < 0)
	      return this;

	    if (list.length === 1) {
	      list.length = 0;
	      delete this._events[type];
	    } else {
	      list.splice(position, 1);
	    }

	    if (this._events.removeListener)
	      this.emit('removeListener', type, listener);
	  }

	  return this;
	};

	EventEmitter.prototype.removeAllListeners = function(type) {
	  var key, listeners;

	  if (!this._events)
	    return this;

	  // not listening for removeListener, no need to emit
	  if (!this._events.removeListener) {
	    if (arguments.length === 0)
	      this._events = {};
	    else if (this._events[type])
	      delete this._events[type];
	    return this;
	  }

	  // emit removeListener for all listeners on all events
	  if (arguments.length === 0) {
	    for (key in this._events) {
	      if (key === 'removeListener') continue;
	      this.removeAllListeners(key);
	    }
	    this.removeAllListeners('removeListener');
	    this._events = {};
	    return this;
	  }

	  listeners = this._events[type];

	  if (isFunction(listeners)) {
	    this.removeListener(type, listeners);
	  } else if (listeners) {
	    // LIFO order
	    while (listeners.length)
	      this.removeListener(type, listeners[listeners.length - 1]);
	  }
	  delete this._events[type];

	  return this;
	};

	EventEmitter.prototype.listeners = function(type) {
	  var ret;
	  if (!this._events || !this._events[type])
	    ret = [];
	  else if (isFunction(this._events[type]))
	    ret = [this._events[type]];
	  else
	    ret = this._events[type].slice();
	  return ret;
	};

	EventEmitter.prototype.listenerCount = function(type) {
	  if (this._events) {
	    var evlistener = this._events[type];

	    if (isFunction(evlistener))
	      return 1;
	    else if (evlistener)
	      return evlistener.length;
	  }
	  return 0;
	};

	EventEmitter.listenerCount = function(emitter, type) {
	  return emitter.listenerCount(type);
	};

	function isFunction(arg) {
	  return typeof arg === 'function';
	}

	function isNumber(arg) {
	  return typeof arg === 'number';
	}

	function isObject(arg) {
	  return typeof arg === 'object' && arg !== null;
	}

	function isUndefined(arg) {
	  return arg === void 0;
	}


/***/ }),

/***/ 312:
/***/ (function(module, exports) {

	if (typeof Object.create === 'function') {
	  // implementation from standard node.js 'util' module
	  module.exports = function inherits(ctor, superCtor) {
	    ctor.super_ = superCtor
	    ctor.prototype = Object.create(superCtor.prototype, {
	      constructor: {
	        value: ctor,
	        enumerable: false,
	        writable: true,
	        configurable: true
	      }
	    });
	  };
	} else {
	  // old school shim for old browsers
	  module.exports = function inherits(ctor, superCtor) {
	    ctor.super_ = superCtor
	    var TempCtor = function () {}
	    TempCtor.prototype = superCtor.prototype
	    ctor.prototype = new TempCtor()
	    ctor.prototype.constructor = ctor
	  }
	}


/***/ }),

/***/ 313:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(314);
	exports.Stream = exports;
	exports.Readable = exports;
	exports.Writable = __webpack_require__(325);
	exports.Duplex = __webpack_require__(324);
	exports.Transform = __webpack_require__(330);
	exports.PassThrough = __webpack_require__(331);


/***/ }),

/***/ 314:
/***/ (function(module, exports, __webpack_require__) {

	/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.
	//
	// Permission is hereby granted, free of charge, to any person obtaining a
	// copy of this software and associated documentation files (the
	// "Software"), to deal in the Software without restriction, including
	// without limitation the rights to use, copy, modify, merge, publish,
	// distribute, sublicense, and/or sell copies of the Software, and to permit
	// persons to whom the Software is furnished to do so, subject to the
	// following conditions:
	//
	// The above copyright notice and this permission notice shall be included
	// in all copies or substantial portions of the Software.
	//
	// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
	// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
	// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
	// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
	// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
	// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
	// USE OR OTHER DEALINGS IN THE SOFTWARE.

	'use strict';

	/*<replacement>*/

	var processNextTick = __webpack_require__(315);
	/*</replacement>*/

	module.exports = Readable;

	/*<replacement>*/
	var isArray = __webpack_require__(309);
	/*</replacement>*/

	/*<replacement>*/
	var Duplex;
	/*</replacement>*/

	Readable.ReadableState = ReadableState;

	/*<replacement>*/
	var EE = __webpack_require__(311).EventEmitter;

	var EElistenerCount = function (emitter, type) {
	  return emitter.listeners(type).length;
	};
	/*</replacement>*/

	/*<replacement>*/
	var Stream = __webpack_require__(316);
	/*</replacement>*/

	// TODO(bmeurer): Change this back to const once hole checks are
	// properly optimized away early in Ignition+TurboFan.
	/*<replacement>*/
	var Buffer = __webpack_require__(317).Buffer;
	var OurUint8Array = global.Uint8Array || function () {};
	function _uint8ArrayToBuffer(chunk) {
	  return Buffer.from(chunk);
	}
	function _isUint8Array(obj) {
	  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
	}
	/*</replacement>*/

	/*<replacement>*/
	var util = __webpack_require__(320);
	util.inherits = __webpack_require__(312);
	/*</replacement>*/

	/*<replacement>*/
	var debugUtil = __webpack_require__(321);
	var debug = void 0;
	if (debugUtil && debugUtil.debuglog) {
	  debug = debugUtil.debuglog('stream');
	} else {
	  debug = function () {};
	}
	/*</replacement>*/

	var BufferList = __webpack_require__(322);
	var destroyImpl = __webpack_require__(323);
	var StringDecoder;

	util.inherits(Readable, Stream);

	var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];

	function prependListener(emitter, event, fn) {
	  // Sadly this is not cacheable as some libraries bundle their own
	  // event emitter implementation with them.
	  if (typeof emitter.prependListener === 'function') {
	    return emitter.prependListener(event, fn);
	  } else {
	    // This is a hack to make sure that our error handler is attached before any
	    // userland ones.  NEVER DO THIS. This is here only because this code needs
	    // to continue to work with older versions of Node.js that do not include
	    // the prependListener() method. The goal is to eventually remove this hack.
	    if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
	  }
	}

	function ReadableState(options, stream) {
	  Duplex = Duplex || __webpack_require__(324);

	  options = options || {};

	  // object stream flag. Used to make read(n) ignore n and to
	  // make all the buffer merging and length checks go away
	  this.objectMode = !!options.objectMode;

	  if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;

	  // the point at which it stops calling _read() to fill the buffer
	  // Note: 0 is a valid value, means "don't call _read preemptively ever"
	  var hwm = options.highWaterMark;
	  var defaultHwm = this.objectMode ? 16 : 16 * 1024;
	  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;

	  // cast to ints.
	  this.highWaterMark = Math.floor(this.highWaterMark);

	  // A linked list is used to store data chunks instead of an array because the
	  // linked list can remove elements from the beginning faster than
	  // array.shift()
	  this.buffer = new BufferList();
	  this.length = 0;
	  this.pipes = null;
	  this.pipesCount = 0;
	  this.flowing = null;
	  this.ended = false;
	  this.endEmitted = false;
	  this.reading = false;

	  // a flag to be able to tell if the event 'readable'/'data' is emitted
	  // immediately, or on a later tick.  We set this to true at first, because
	  // any actions that shouldn't happen until "later" should generally also
	  // not happen before the first read call.
	  this.sync = true;

	  // whenever we return null, then we set a flag to say
	  // that we're awaiting a 'readable' event emission.
	  this.needReadable = false;
	  this.emittedReadable = false;
	  this.readableListening = false;
	  this.resumeScheduled = false;

	  // has it been destroyed
	  this.destroyed = false;

	  // Crypto is kind of old and crusty.  Historically, its default string
	  // encoding is 'binary' so we have to make this configurable.
	  // Everything else in the universe uses 'utf8', though.
	  this.defaultEncoding = options.defaultEncoding || 'utf8';

	  // the number of writers that are awaiting a drain event in .pipe()s
	  this.awaitDrain = 0;

	  // if true, a maybeReadMore has been scheduled
	  this.readingMore = false;

	  this.decoder = null;
	  this.encoding = null;
	  if (options.encoding) {
	    if (!StringDecoder) StringDecoder = __webpack_require__(329).StringDecoder;
	    this.decoder = new StringDecoder(options.encoding);
	    this.encoding = options.encoding;
	  }
	}

	function Readable(options) {
	  Duplex = Duplex || __webpack_require__(324);

	  if (!(this instanceof Readable)) return new Readable(options);

	  this._readableState = new ReadableState(options, this);

	  // legacy
	  this.readable = true;

	  if (options) {
	    if (typeof options.read === 'function') this._read = options.read;

	    if (typeof options.destroy === 'function') this._destroy = options.destroy;
	  }

	  Stream.call(this);
	}

	Object.defineProperty(Readable.prototype, 'destroyed', {
	  get: function () {
	    if (this._readableState === undefined) {
	      return false;
	    }
	    return this._readableState.destroyed;
	  },
	  set: function (value) {
	    // we ignore the value if the stream
	    // has not been initialized yet
	    if (!this._readableState) {
	      return;
	    }

	    // backward compatibility, the user is explicitly
	    // managing destroyed
	    this._readableState.destroyed = value;
	  }
	});

	Readable.prototype.destroy = destroyImpl.destroy;
	Readable.prototype._undestroy = destroyImpl.undestroy;
	Readable.prototype._destroy = function (err, cb) {
	  this.push(null);
	  cb(err);
	};

	// Manually shove something into the read() buffer.
	// This returns true if the highWaterMark has not been hit yet,
	// similar to how Writable.write() returns true if you should
	// write() some more.
	Readable.prototype.push = function (chunk, encoding) {
	  var state = this._readableState;
	  var skipChunkCheck;

	  if (!state.objectMode) {
	    if (typeof chunk === 'string') {
	      encoding = encoding || state.defaultEncoding;
	      if (encoding !== state.encoding) {
	        chunk = Buffer.from(chunk, encoding);
	        encoding = '';
	      }
	      skipChunkCheck = true;
	    }
	  } else {
	    skipChunkCheck = true;
	  }

	  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);
	};

	// Unshift should *always* be something directly out of read()
	Readable.prototype.unshift = function (chunk) {
	  return readableAddChunk(this, chunk, null, true, false);
	};

	function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {
	  var state = stream._readableState;
	  if (chunk === null) {
	    state.reading = false;
	    onEofChunk(stream, state);
	  } else {
	    var er;
	    if (!skipChunkCheck) er = chunkInvalid(state, chunk);
	    if (er) {
	      stream.emit('error', er);
	    } else if (state.objectMode || chunk && chunk.length > 0) {
	      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {
	        chunk = _uint8ArrayToBuffer(chunk);
	      }

	      if (addToFront) {
	        if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);
	      } else if (state.ended) {
	        stream.emit('error', new Error('stream.push() after EOF'));
	      } else {
	        state.reading = false;
	        if (state.decoder && !encoding) {
	          chunk = state.decoder.write(chunk);
	          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);
	        } else {
	          addChunk(stream, state, chunk, false);
	        }
	      }
	    } else if (!addToFront) {
	      state.reading = false;
	    }
	  }

	  return needMoreData(state);
	}

	function addChunk(stream, state, chunk, addToFront) {
	  if (state.flowing && state.length === 0 && !state.sync) {
	    stream.emit('data', chunk);
	    stream.read(0);
	  } else {
	    // update the buffer info.
	    state.length += state.objectMode ? 1 : chunk.length;
	    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);

	    if (state.needReadable) emitReadable(stream);
	  }
	  maybeReadMore(stream, state);
	}

	function chunkInvalid(state, chunk) {
	  var er;
	  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
	    er = new TypeError('Invalid non-string/buffer chunk');
	  }
	  return er;
	}

	// if it's past the high water mark, we can push in some more.
	// Also, if we have no data yet, we can stand some
	// more bytes.  This is to work around cases where hwm=0,
	// such as the repl.  Also, if the push() triggered a
	// readable event, and the user called read(largeNumber) such that
	// needReadable was set, then we ought to push more, so that another
	// 'readable' event will be triggered.
	function needMoreData(state) {
	  return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
	}

	Readable.prototype.isPaused = function () {
	  return this._readableState.flowing === false;
	};

	// backwards compatibility.
	Readable.prototype.setEncoding = function (enc) {
	  if (!StringDecoder) StringDecoder = __webpack_require__(329).StringDecoder;
	  this._readableState.decoder = new StringDecoder(enc);
	  this._readableState.encoding = enc;
	  return this;
	};

	// Don't raise the hwm > 8MB
	var MAX_HWM = 0x800000;
	function computeNewHighWaterMark(n) {
	  if (n >= MAX_HWM) {
	    n = MAX_HWM;
	  } else {
	    // Get the next highest power of 2 to prevent increasing hwm excessively in
	    // tiny amounts
	    n--;
	    n |= n >>> 1;
	    n |= n >>> 2;
	    n |= n >>> 4;
	    n |= n >>> 8;
	    n |= n >>> 16;
	    n++;
	  }
	  return n;
	}

	// This function is designed to be inlinable, so please take care when making
	// changes to the function body.
	function howMuchToRead(n, state) {
	  if (n <= 0 || state.length === 0 && state.ended) return 0;
	  if (state.objectMode) return 1;
	  if (n !== n) {
	    // Only flow one buffer at a time
	    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
	  }
	  // If we're asking for more than the current hwm, then raise the hwm.
	  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
	  if (n <= state.length) return n;
	  // Don't have enough
	  if (!state.ended) {
	    state.needReadable = true;
	    return 0;
	  }
	  return state.length;
	}

	// you can override either this method, or the async _read(n) below.
	Readable.prototype.read = function (n) {
	  debug('read', n);
	  n = parseInt(n, 10);
	  var state = this._readableState;
	  var nOrig = n;

	  if (n !== 0) state.emittedReadable = false;

	  // if we're doing read(0) to trigger a readable event, but we
	  // already have a bunch of data in the buffer, then just trigger
	  // the 'readable' event and move on.
	  if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
	    debug('read: emitReadable', state.length, state.ended);
	    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
	    return null;
	  }

	  n = howMuchToRead(n, state);

	  // if we've ended, and we're now clear, then finish it up.
	  if (n === 0 && state.ended) {
	    if (state.length === 0) endReadable(this);
	    return null;
	  }

	  // All the actual chunk generation logic needs to be
	  // *below* the call to _read.  The reason is that in certain
	  // synthetic stream cases, such as passthrough streams, _read
	  // may be a completely synchronous operation which may change
	  // the state of the read buffer, providing enough data when
	  // before there was *not* enough.
	  //
	  // So, the steps are:
	  // 1. Figure out what the state of things will be after we do
	  // a read from the buffer.
	  //
	  // 2. If that resulting state will trigger a _read, then call _read.
	  // Note that this may be asynchronous, or synchronous.  Yes, it is
	  // deeply ugly to write APIs this way, but that still doesn't mean
	  // that the Readable class should behave improperly, as streams are
	  // designed to be sync/async agnostic.
	  // Take note if the _read call is sync or async (ie, if the read call
	  // has returned yet), so that we know whether or not it's safe to emit
	  // 'readable' etc.
	  //
	  // 3. Actually pull the requested chunks out of the buffer and return.

	  // if we need a readable event, then we need to do some reading.
	  var doRead = state.needReadable;
	  debug('need readable', doRead);

	  // if we currently have less than the highWaterMark, then also read some
	  if (state.length === 0 || state.length - n < state.highWaterMark) {
	    doRead = true;
	    debug('length less than watermark', doRead);
	  }

	  // however, if we've ended, then there's no point, and if we're already
	  // reading, then it's unnecessary.
	  if (state.ended || state.reading) {
	    doRead = false;
	    debug('reading or ended', doRead);
	  } else if (doRead) {
	    debug('do read');
	    state.reading = true;
	    state.sync = true;
	    // if the length is currently zero, then we *need* a readable event.
	    if (state.length === 0) state.needReadable = true;
	    // call internal read method
	    this._read(state.highWaterMark);
	    state.sync = false;
	    // If _read pushed data synchronously, then `reading` will be false,
	    // and we need to re-evaluate how much data we can return to the user.
	    if (!state.reading) n = howMuchToRead(nOrig, state);
	  }

	  var ret;
	  if (n > 0) ret = fromList(n, state);else ret = null;

	  if (ret === null) {
	    state.needReadable = true;
	    n = 0;
	  } else {
	    state.length -= n;
	  }

	  if (state.length === 0) {
	    // If we have nothing in the buffer, then we want to know
	    // as soon as we *do* get something into the buffer.
	    if (!state.ended) state.needReadable = true;

	    // If we tried to read() past the EOF, then emit end on the next tick.
	    if (nOrig !== n && state.ended) endReadable(this);
	  }

	  if (ret !== null) this.emit('data', ret);

	  return ret;
	};

	function onEofChunk(stream, state) {
	  if (state.ended) return;
	  if (state.decoder) {
	    var chunk = state.decoder.end();
	    if (chunk && chunk.length) {
	      state.buffer.push(chunk);
	      state.length += state.objectMode ? 1 : chunk.length;
	    }
	  }
	  state.ended = true;

	  // emit 'readable' now to make sure it gets picked up.
	  emitReadable(stream);
	}

	// Don't emit readable right away in sync mode, because this can trigger
	// another read() call => stack overflow.  This way, it might trigger
	// a nextTick recursion warning, but that's not so bad.
	function emitReadable(stream) {
	  var state = stream._readableState;
	  state.needReadable = false;
	  if (!state.emittedReadable) {
	    debug('emitReadable', state.flowing);
	    state.emittedReadable = true;
	    if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
	  }
	}

	function emitReadable_(stream) {
	  debug('emit readable');
	  stream.emit('readable');
	  flow(stream);
	}

	// at this point, the user has presumably seen the 'readable' event,
	// and called read() to consume some data.  that may have triggered
	// in turn another _read(n) call, in which case reading = true if
	// it's in progress.
	// However, if we're not ended, or reading, and the length < hwm,
	// then go ahead and try to read some more preemptively.
	function maybeReadMore(stream, state) {
	  if (!state.readingMore) {
	    state.readingMore = true;
	    processNextTick(maybeReadMore_, stream, state);
	  }
	}

	function maybeReadMore_(stream, state) {
	  var len = state.length;
	  while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
	    debug('maybeReadMore read 0');
	    stream.read(0);
	    if (len === state.length)
	      // didn't get any data, stop spinning.
	      break;else len = state.length;
	  }
	  state.readingMore = false;
	}

	// abstract method.  to be overridden in specific implementation classes.
	// call cb(er, data) where data is <= n in length.
	// for virtual (non-string, non-buffer) streams, "length" is somewhat
	// arbitrary, and perhaps not very meaningful.
	Readable.prototype._read = function (n) {
	  this.emit('error', new Error('_read() is not implemented'));
	};

	Readable.prototype.pipe = function (dest, pipeOpts) {
	  var src = this;
	  var state = this._readableState;

	  switch (state.pipesCount) {
	    case 0:
	      state.pipes = dest;
	      break;
	    case 1:
	      state.pipes = [state.pipes, dest];
	      break;
	    default:
	      state.pipes.push(dest);
	      break;
	  }
	  state.pipesCount += 1;
	  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);

	  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;

	  var endFn = doEnd ? onend : unpipe;
	  if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);

	  dest.on('unpipe', onunpipe);
	  function onunpipe(readable, unpipeInfo) {
	    debug('onunpipe');
	    if (readable === src) {
	      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {
	        unpipeInfo.hasUnpiped = true;
	        cleanup();
	      }
	    }
	  }

	  function onend() {
	    debug('onend');
	    dest.end();
	  }

	  // when the dest drains, it reduces the awaitDrain counter
	  // on the source.  This would be more elegant with a .once()
	  // handler in flow(), but adding and removing repeatedly is
	  // too slow.
	  var ondrain = pipeOnDrain(src);
	  dest.on('drain', ondrain);

	  var cleanedUp = false;
	  function cleanup() {
	    debug('cleanup');
	    // cleanup event handlers once the pipe is broken
	    dest.removeListener('close', onclose);
	    dest.removeListener('finish', onfinish);
	    dest.removeListener('drain', ondrain);
	    dest.removeListener('error', onerror);
	    dest.removeListener('unpipe', onunpipe);
	    src.removeListener('end', onend);
	    src.removeListener('end', unpipe);
	    src.removeListener('data', ondata);

	    cleanedUp = true;

	    // if the reader is waiting for a drain event from this
	    // specific writer, then it would cause it to never start
	    // flowing again.
	    // So, if this is awaiting a drain, then we just call it now.
	    // If we don't know, then assume that we are waiting for one.
	    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
	  }

	  // If the user pushes more data while we're writing to dest then we'll end up
	  // in ondata again. However, we only want to increase awaitDrain once because
	  // dest will only emit one 'drain' event for the multiple writes.
	  // => Introduce a guard on increasing awaitDrain.
	  var increasedAwaitDrain = false;
	  src.on('data', ondata);
	  function ondata(chunk) {
	    debug('ondata');
	    increasedAwaitDrain = false;
	    var ret = dest.write(chunk);
	    if (false === ret && !increasedAwaitDrain) {
	      // If the user unpiped during `dest.write()`, it is possible
	      // to get stuck in a permanently paused state if that write
	      // also returned false.
	      // => Check whether `dest` is still a piping destination.
	      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
	        debug('false write response, pause', src._readableState.awaitDrain);
	        src._readableState.awaitDrain++;
	        increasedAwaitDrain = true;
	      }
	      src.pause();
	    }
	  }

	  // if the dest has an error, then stop piping into it.
	  // however, don't suppress the throwing behavior for this.
	  function onerror(er) {
	    debug('onerror', er);
	    unpipe();
	    dest.removeListener('error', onerror);
	    if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
	  }

	  // Make sure our error handler is attached before userland ones.
	  prependListener(dest, 'error', onerror);

	  // Both close and finish should trigger unpipe, but only once.
	  function onclose() {
	    dest.removeListener('finish', onfinish);
	    unpipe();
	  }
	  dest.once('close', onclose);
	  function onfinish() {
	    debug('onfinish');
	    dest.removeListener('close', onclose);
	    unpipe();
	  }
	  dest.once('finish', onfinish);

	  function unpipe() {
	    debug('unpipe');
	    src.unpipe(dest);
	  }

	  // tell the dest that it's being piped to
	  dest.emit('pipe', src);

	  // start the flow if it hasn't been started already.
	  if (!state.flowing) {
	    debug('pipe resume');
	    src.resume();
	  }

	  return dest;
	};

	function pipeOnDrain(src) {
	  return function () {
	    var state = src._readableState;
	    debug('pipeOnDrain', state.awaitDrain);
	    if (state.awaitDrain) state.awaitDrain--;
	    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
	      state.flowing = true;
	      flow(src);
	    }
	  };
	}

	Readable.prototype.unpipe = function (dest) {
	  var state = this._readableState;
	  var unpipeInfo = { hasUnpiped: false };

	  // if we're not piping anywhere, then do nothing.
	  if (state.pipesCount === 0) return this;

	  // just one destination.  most common case.
	  if (state.pipesCount === 1) {
	    // passed in one, but it's not the right one.
	    if (dest && dest !== state.pipes) return this;

	    if (!dest) dest = state.pipes;

	    // got a match.
	    state.pipes = null;
	    state.pipesCount = 0;
	    state.flowing = false;
	    if (dest) dest.emit('unpipe', this, unpipeInfo);
	    return this;
	  }

	  // slow case. multiple pipe destinations.

	  if (!dest) {
	    // remove all.
	    var dests = state.pipes;
	    var len = state.pipesCount;
	    state.pipes = null;
	    state.pipesCount = 0;
	    state.flowing = false;

	    for (var i = 0; i < len; i++) {
	      dests[i].emit('unpipe', this, unpipeInfo);
	    }return this;
	  }

	  // try to find the right one.
	  var index = indexOf(state.pipes, dest);
	  if (index === -1) return this;

	  state.pipes.splice(index, 1);
	  state.pipesCount -= 1;
	  if (state.pipesCount === 1) state.pipes = state.pipes[0];

	  dest.emit('unpipe', this, unpipeInfo);

	  return this;
	};

	// set up data events if they are asked for
	// Ensure readable listeners eventually get something
	Readable.prototype.on = function (ev, fn) {
	  var res = Stream.prototype.on.call(this, ev, fn);

	  if (ev === 'data') {
	    // Start flowing on next tick if stream isn't explicitly paused
	    if (this._readableState.flowing !== false) this.resume();
	  } else if (ev === 'readable') {
	    var state = this._readableState;
	    if (!state.endEmitted && !state.readableListening) {
	      state.readableListening = state.needReadable = true;
	      state.emittedReadable = false;
	      if (!state.reading) {
	        processNextTick(nReadingNextTick, this);
	      } else if (state.length) {
	        emitReadable(this);
	      }
	    }
	  }

	  return res;
	};
	Readable.prototype.addListener = Readable.prototype.on;

	function nReadingNextTick(self) {
	  debug('readable nexttick read 0');
	  self.read(0);
	}

	// pause() and resume() are remnants of the legacy readable stream API
	// If the user uses them, then switch into old mode.
	Readable.prototype.resume = function () {
	  var state = this._readableState;
	  if (!state.flowing) {
	    debug('resume');
	    state.flowing = true;
	    resume(this, state);
	  }
	  return this;
	};

	function resume(stream, state) {
	  if (!state.resumeScheduled) {
	    state.resumeScheduled = true;
	    processNextTick(resume_, stream, state);
	  }
	}

	function resume_(stream, state) {
	  if (!state.reading) {
	    debug('resume read 0');
	    stream.read(0);
	  }

	  state.resumeScheduled = false;
	  state.awaitDrain = 0;
	  stream.emit('resume');
	  flow(stream);
	  if (state.flowing && !state.reading) stream.read(0);
	}

	Readable.prototype.pause = function () {
	  debug('call pause flowing=%j', this._readableState.flowing);
	  if (false !== this._readableState.flowing) {
	    debug('pause');
	    this._readableState.flowing = false;
	    this.emit('pause');
	  }
	  return this;
	};

	function flow(stream) {
	  var state = stream._readableState;
	  debug('flow', state.flowing);
	  while (state.flowing && stream.read() !== null) {}
	}

	// wrap an old-style stream as the async data source.
	// This is *not* part of the readable stream interface.
	// It is an ugly unfortunate mess of history.
	Readable.prototype.wrap = function (stream) {
	  var state = this._readableState;
	  var paused = false;

	  var self = this;
	  stream.on('end', function () {
	    debug('wrapped end');
	    if (state.decoder && !state.ended) {
	      var chunk = state.decoder.end();
	      if (chunk && chunk.length) self.push(chunk);
	    }

	    self.push(null);
	  });

	  stream.on('data', function (chunk) {
	    debug('wrapped data');
	    if (state.decoder) chunk = state.decoder.write(chunk);

	    // don't skip over falsy values in objectMode
	    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;

	    var ret = self.push(chunk);
	    if (!ret) {
	      paused = true;
	      stream.pause();
	    }
	  });

	  // proxy all the other methods.
	  // important when wrapping filters and duplexes.
	  for (var i in stream) {
	    if (this[i] === undefined && typeof stream[i] === 'function') {
	      this[i] = function (method) {
	        return function () {
	          return stream[method].apply(stream, arguments);
	        };
	      }(i);
	    }
	  }

	  // proxy certain important events.
	  for (var n = 0; n < kProxyEvents.length; n++) {
	    stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));
	  }

	  // when we try to consume some more bytes, simply unpause the
	  // underlying stream.
	  self._read = function (n) {
	    debug('wrapped _read', n);
	    if (paused) {
	      paused = false;
	      stream.resume();
	    }
	  };

	  return self;
	};

	// exposed for testing purposes only.
	Readable._fromList = fromList;

	// Pluck off n bytes from an array of buffers.
	// Length is the combined lengths of all the buffers in the list.
	// This function is designed to be inlinable, so please take care when making
	// changes to the function body.
	function fromList(n, state) {
	  // nothing buffered
	  if (state.length === 0) return null;

	  var ret;
	  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
	    // read it all, truncate the list
	    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
	    state.buffer.clear();
	  } else {
	    // read part of list
	    ret = fromListPartial(n, state.buffer, state.decoder);
	  }

	  return ret;
	}

	// Extracts only enough buffered data to satisfy the amount requested.
	// This function is designed to be inlinable, so please take care when making
	// changes to the function body.
	function fromListPartial(n, list, hasStrings) {
	  var ret;
	  if (n < list.head.data.length) {
	    // slice is the same for buffers and strings
	    ret = list.head.data.slice(0, n);
	    list.head.data = list.head.data.slice(n);
	  } else if (n === list.head.data.length) {
	    // first chunk is a perfect match
	    ret = list.shift();
	  } else {
	    // result spans more than one buffer
	    ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
	  }
	  return ret;
	}

	// Copies a specified amount of characters from the list of buffered data
	// chunks.
	// This function is designed to be inlinable, so please take care when making
	// changes to the function body.
	function copyFromBufferString(n, list) {
	  var p = list.head;
	  var c = 1;
	  var ret = p.data;
	  n -= ret.length;
	  while (p = p.next) {
	    var str = p.data;
	    var nb = n > str.length ? str.length : n;
	    if (nb === str.length) ret += str;else ret += str.slice(0, n);
	    n -= nb;
	    if (n === 0) {
	      if (nb === str.length) {
	        ++c;
	        if (p.next) list.head = p.next;else list.head = list.tail = null;
	      } else {
	        list.head = p;
	        p.data = str.slice(nb);
	      }
	      break;
	    }
	    ++c;
	  }
	  list.length -= c;
	  return ret;
	}

	// Copies a specified amount of bytes from the list of buffered data chunks.
	// This function is designed to be inlinable, so please take care when making
	// changes to the function body.
	function copyFromBuffer(n, list) {
	  var ret = Buffer.allocUnsafe(n);
	  var p = list.head;
	  var c = 1;
	  p.data.copy(ret);
	  n -= p.data.length;
	  while (p = p.next) {
	    var buf = p.data;
	    var nb = n > buf.length ? buf.length : n;
	    buf.copy(ret, ret.length - n, 0, nb);
	    n -= nb;
	    if (n === 0) {
	      if (nb === buf.length) {
	        ++c;
	        if (p.next) list.head = p.next;else list.head = list.tail = null;
	      } else {
	        list.head = p;
	        p.data = buf.slice(nb);
	      }
	      break;
	    }
	    ++c;
	  }
	  list.length -= c;
	  return ret;
	}

	function endReadable(stream) {
	  var state = stream._readableState;

	  // If we get here before consuming all the bytes, then that is a
	  // bug in node.  Should never happen.
	  if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');

	  if (!state.endEmitted) {
	    state.ended = true;
	    processNextTick(endReadableNT, state, stream);
	  }
	}

	function endReadableNT(state, stream) {
	  // Check that we didn't get one last unshift.
	  if (!state.endEmitted && state.length === 0) {
	    state.endEmitted = true;
	    stream.readable = false;
	    stream.emit('end');
	  }
	}

	function forEach(xs, f) {
	  for (var i = 0, l = xs.length; i < l; i++) {
	    f(xs[i], i);
	  }
	}

	function indexOf(xs, x) {
	  for (var i = 0, l = xs.length; i < l; i++) {
	    if (xs[i] === x) return i;
	  }
	  return -1;
	}
	/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(10)))

/***/ }),

/***/ 315:
/***/ (function(module, exports, __webpack_require__) {

	/* WEBPACK VAR INJECTION */(function(process) {'use strict';

	if (!process.version ||
	    process.version.indexOf('v0.') === 0 ||
	    process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
	  module.exports = nextTick;
	} else {
	  module.exports = process.nextTick;
	}

	function nextTick(fn, arg1, arg2, arg3) {
	  if (typeof fn !== 'function') {
	    throw new TypeError('"callback" argument must be a function');
	  }
	  var len = arguments.length;
	  var args, i;
	  switch (len) {
	  case 0:
	  case 1:
	    return process.nextTick(fn);
	  case 2:
	    return process.nextTick(function afterTickOne() {
	      fn.call(null, arg1);
	    });
	  case 3:
	    return process.nextTick(function afterTickTwo() {
	      fn.call(null, arg1, arg2);
	    });
	  case 4:
	    return process.nextTick(function afterTickThree() {
	      fn.call(null, arg1, arg2, arg3);
	    });
	  default:
	    args = new Array(len - 1);
	    i = 0;
	    while (i < args.length) {
	      args[i++] = arguments[i];
	    }
	    return process.nextTick(function afterTick() {
	      fn.apply(null, args);
	    });
	  }
	}

	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(10)))

/***/ }),

/***/ 316:
/***/ (function(module, exports, __webpack_require__) {

	module.exports = __webpack_require__(311).EventEmitter;


/***/ }),

/***/ 317:
/***/ (function(module, exports, __webpack_require__) {

	/* eslint-disable node/no-deprecated-api */
	var buffer = __webpack_require__(318)
	var Buffer = buffer.Buffer

	// alternative to using Object.keys for old browsers
	function copyProps (src, dst) {
	  for (var key in src) {
	    dst[key] = src[key]
	  }
	}
	if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
	  module.exports = buffer
	} else {
	  // Copy properties from require('buffer')
	  copyProps(buffer, exports)
	  exports.Buffer = SafeBuffer
	}

	function SafeBuffer (arg, encodingOrOffset, length) {
	  return Buffer(arg, encodingOrOffset, length)
	}

	// Copy static methods from Buffer
	copyProps(Buffer, SafeBuffer)

	SafeBuffer.from = function (arg, encodingOrOffset, length) {
	  if (typeof arg === 'number') {
	    throw new TypeError('Argument must not be a number')
	  }
	  return Buffer(arg, encodingOrOffset, length)
	}

	SafeBuffer.alloc = function (size, fill, encoding) {
	  if (typeof size !== 'number') {
	    throw new TypeError('Argument must be a number')
	  }
	  var buf = Buffer(size)
	  if (fill !== undefined) {
	    if (typeof encoding === 'string') {
	      buf.fill(fill, encoding)
	    } else {
	      buf.fill(fill)
	    }
	  } else {
	    buf.fill(0)
	  }
	  return buf
	}

	SafeBuffer.allocUnsafe = function (size) {
	  if (typeof size !== 'number') {
	    throw new TypeError('Argument must be a number')
	  }
	  return Buffer(size)
	}

	SafeBuffer.allocUnsafeSlow = function (size) {
	  if (typeof size !== 'number') {
	    throw new TypeError('Argument must be a number')
	  }
	  return buffer.SlowBuffer(size)
	}


/***/ }),

/***/ 318:
/***/ (function(module, exports, __webpack_require__) {

	/* WEBPACK VAR INJECTION */(function(Buffer, global) {/*!
	 * The buffer module from node.js, for the browser.
	 *
	 * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
	 * @license  MIT
	 */
	/* eslint-disable no-proto */

	'use strict'

	var base64 = __webpack_require__(319)
	var ieee754 = __webpack_require__(308)
	var isArray = __webpack_require__(309)

	exports.Buffer = Buffer
	exports.SlowBuffer = SlowBuffer
	exports.INSPECT_MAX_BYTES = 50
	Buffer.poolSize = 8192 // not used by this implementation

	var rootParent = {}

	/**
	 * If `Buffer.TYPED_ARRAY_SUPPORT`:
	 *   === true    Use Uint8Array implementation (fastest)
	 *   === false   Use Object implementation (most compatible, even IE6)
	 *
	 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
	 * Opera 11.6+, iOS 4.2+.
	 *
	 * Due to various browser bugs, sometimes the Object implementation will be used even
	 * when the browser supports typed arrays.
	 *
	 * Note:
	 *
	 *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
	 *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
	 *
	 *   - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property
	 *     on objects.
	 *
	 *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
	 *
	 *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
	 *     incorrect length in some situations.

	 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
	 * get the Object implementation, which is slower but behaves correctly.
	 */
	Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
	  ? global.TYPED_ARRAY_SUPPORT
	  : typedArraySupport()

	function typedArraySupport () {
	  function Bar () {}
	  try {
	    var arr = new Uint8Array(1)
	    arr.foo = function () { return 42 }
	    arr.constructor = Bar
	    return arr.foo() === 42 && // typed array instances can be augmented
	        arr.constructor === Bar && // constructor can be set
	        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
	        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
	  } catch (e) {
	    return false
	  }
	}

	function kMaxLength () {
	  return Buffer.TYPED_ARRAY_SUPPORT
	    ? 0x7fffffff
	    : 0x3fffffff
	}

	/**
	 * Class: Buffer
	 * =============
	 *
	 * The Buffer constructor returns instances of `Uint8Array` that are augmented
	 * with function properties for all the node `Buffer` API functions. We use
	 * `Uint8Array` so that square bracket notation works as expected -- it returns
	 * a single octet.
	 *
	 * By augmenting the instances, we can avoid modifying the `Uint8Array`
	 * prototype.
	 */
	function Buffer (arg) {
	  if (!(this instanceof Buffer)) {
	    // Avoid going through an ArgumentsAdaptorTrampoline in the common case.
	    if (arguments.length > 1) return new Buffer(arg, arguments[1])
	    return new Buffer(arg)
	  }

	  if (!Buffer.TYPED_ARRAY_SUPPORT) {
	    this.length = 0
	    this.parent = undefined
	  }

	  // Common case.
	  if (typeof arg === 'number') {
	    return fromNumber(this, arg)
	  }

	  // Slightly less common case.
	  if (typeof arg === 'string') {
	    return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')
	  }

	  // Unusual.
	  return fromObject(this, arg)
	}

	function fromNumber (that, length) {
	  that = allocate(that, length < 0 ? 0 : checked(length) | 0)
	  if (!Buffer.TYPED_ARRAY_SUPPORT) {
	    for (var i = 0; i < length; i++) {
	      that[i] = 0
	    }
	  }
	  return that
	}

	function fromString (that, string, encoding) {
	  if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'

	  // Assumption: byteLength() return value is always < kMaxLength.
	  var length = byteLength(string, encoding) | 0
	  that = allocate(that, length)

	  that.write(string, encoding)
	  return that
	}

	function fromObject (that, object) {
	  if (Buffer.isBuffer(object)) return fromBuffer(that, object)

	  if (isArray(object)) return fromArray(that, object)

	  if (object == null) {
	    throw new TypeError('must start with number, buffer, array or string')
	  }

	  if (typeof ArrayBuffer !== 'undefined') {
	    if (object.buffer instanceof ArrayBuffer) {
	      return fromTypedArray(that, object)
	    }
	    if (object instanceof ArrayBuffer) {
	      return fromArrayBuffer(that, object)
	    }
	  }

	  if (object.length) return fromArrayLike(that, object)

	  return fromJsonObject(that, object)
	}

	function fromBuffer (that, buffer) {
	  var length = checked(buffer.length) | 0
	  that = allocate(that, length)
	  buffer.copy(that, 0, 0, length)
	  return that
	}

	function fromArray (that, array) {
	  var length = checked(array.length) | 0
	  that = allocate(that, length)
	  for (var i = 0; i < length; i += 1) {
	    that[i] = array[i] & 255
	  }
	  return that
	}

	// Duplicate of fromArray() to keep fromArray() monomorphic.
	function fromTypedArray (that, array) {
	  var length = checked(array.length) | 0
	  that = allocate(that, length)
	  // Truncating the elements is probably not what people expect from typed
	  // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior
	  // of the old Buffer constructor.
	  for (var i = 0; i < length; i += 1) {
	    that[i] = array[i] & 255
	  }
	  return that
	}

	function fromArrayBuffer (that, array) {
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    // Return an augmented `Uint8Array` instance, for best performance
	    array.byteLength
	    that = Buffer._augment(new Uint8Array(array))
	  } else {
	    // Fallback: Return an object instance of the Buffer class
	    that = fromTypedArray(that, new Uint8Array(array))
	  }
	  return that
	}

	function fromArrayLike (that, array) {
	  var length = checked(array.length) | 0
	  that = allocate(that, length)
	  for (var i = 0; i < length; i += 1) {
	    that[i] = array[i] & 255
	  }
	  return that
	}

	// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.
	// Returns a zero-length buffer for inputs that don't conform to the spec.
	function fromJsonObject (that, object) {
	  var array
	  var length = 0

	  if (object.type === 'Buffer' && isArray(object.data)) {
	    array = object.data
	    length = checked(array.length) | 0
	  }
	  that = allocate(that, length)

	  for (var i = 0; i < length; i += 1) {
	    that[i] = array[i] & 255
	  }
	  return that
	}

	if (Buffer.TYPED_ARRAY_SUPPORT) {
	  Buffer.prototype.__proto__ = Uint8Array.prototype
	  Buffer.__proto__ = Uint8Array
	} else {
	  // pre-set for values that may exist in the future
	  Buffer.prototype.length = undefined
	  Buffer.prototype.parent = undefined
	}

	function allocate (that, length) {
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    // Return an augmented `Uint8Array` instance, for best performance
	    that = Buffer._augment(new Uint8Array(length))
	    that.__proto__ = Buffer.prototype
	  } else {
	    // Fallback: Return an object instance of the Buffer class
	    that.length = length
	    that._isBuffer = true
	  }

	  var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1
	  if (fromPool) that.parent = rootParent

	  return that
	}

	function checked (length) {
	  // Note: cannot use `length < kMaxLength` here because that fails when
	  // length is NaN (which is otherwise coerced to zero.)
	  if (length >= kMaxLength()) {
	    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
	                         'size: 0x' + kMaxLength().toString(16) + ' bytes')
	  }
	  return length | 0
	}

	function SlowBuffer (subject, encoding) {
	  if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)

	  var buf = new Buffer(subject, encoding)
	  delete buf.parent
	  return buf
	}

	Buffer.isBuffer = function isBuffer (b) {
	  return !!(b != null && b._isBuffer)
	}

	Buffer.compare = function compare (a, b) {
	  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
	    throw new TypeError('Arguments must be Buffers')
	  }

	  if (a === b) return 0

	  var x = a.length
	  var y = b.length

	  var i = 0
	  var len = Math.min(x, y)
	  while (i < len) {
	    if (a[i] !== b[i]) break

	    ++i
	  }

	  if (i !== len) {
	    x = a[i]
	    y = b[i]
	  }

	  if (x < y) return -1
	  if (y < x) return 1
	  return 0
	}

	Buffer.isEncoding = function isEncoding (encoding) {
	  switch (String(encoding).toLowerCase()) {
	    case 'hex':
	    case 'utf8':
	    case 'utf-8':
	    case 'ascii':
	    case 'binary':
	    case 'base64':
	    case 'raw':
	    case 'ucs2':
	    case 'ucs-2':
	    case 'utf16le':
	    case 'utf-16le':
	      return true
	    default:
	      return false
	  }
	}

	Buffer.concat = function concat (list, length) {
	  if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')

	  if (list.length === 0) {
	    return new Buffer(0)
	  }

	  var i
	  if (length === undefined) {
	    length = 0
	    for (i = 0; i < list.length; i++) {
	      length += list[i].length
	    }
	  }

	  var buf = new Buffer(length)
	  var pos = 0
	  for (i = 0; i < list.length; i++) {
	    var item = list[i]
	    item.copy(buf, pos)
	    pos += item.length
	  }
	  return buf
	}

	function byteLength (string, encoding) {
	  if (typeof string !== 'string') string = '' + string

	  var len = string.length
	  if (len === 0) return 0

	  // Use a for loop to avoid recursion
	  var loweredCase = false
	  for (;;) {
	    switch (encoding) {
	      case 'ascii':
	      case 'binary':
	      // Deprecated
	      case 'raw':
	      case 'raws':
	        return len
	      case 'utf8':
	      case 'utf-8':
	        return utf8ToBytes(string).length
	      case 'ucs2':
	      case 'ucs-2':
	      case 'utf16le':
	      case 'utf-16le':
	        return len * 2
	      case 'hex':
	        return len >>> 1
	      case 'base64':
	        return base64ToBytes(string).length
	      default:
	        if (loweredCase) return utf8ToBytes(string).length // assume utf8
	        encoding = ('' + encoding).toLowerCase()
	        loweredCase = true
	    }
	  }
	}
	Buffer.byteLength = byteLength

	function slowToString (encoding, start, end) {
	  var loweredCase = false

	  start = start | 0
	  end = end === undefined || end === Infinity ? this.length : end | 0

	  if (!encoding) encoding = 'utf8'
	  if (start < 0) start = 0
	  if (end > this.length) end = this.length
	  if (end <= start) return ''

	  while (true) {
	    switch (encoding) {
	      case 'hex':
	        return hexSlice(this, start, end)

	      case 'utf8':
	      case 'utf-8':
	        return utf8Slice(this, start, end)

	      case 'ascii':
	        return asciiSlice(this, start, end)

	      case 'binary':
	        return binarySlice(this, start, end)

	      case 'base64':
	        return base64Slice(this, start, end)

	      case 'ucs2':
	      case 'ucs-2':
	      case 'utf16le':
	      case 'utf-16le':
	        return utf16leSlice(this, start, end)

	      default:
	        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
	        encoding = (encoding + '').toLowerCase()
	        loweredCase = true
	    }
	  }
	}

	Buffer.prototype.toString = function toString () {
	  var length = this.length | 0
	  if (length === 0) return ''
	  if (arguments.length === 0) return utf8Slice(this, 0, length)
	  return slowToString.apply(this, arguments)
	}

	Buffer.prototype.equals = function equals (b) {
	  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
	  if (this === b) return true
	  return Buffer.compare(this, b) === 0
	}

	Buffer.prototype.inspect = function inspect () {
	  var str = ''
	  var max = exports.INSPECT_MAX_BYTES
	  if (this.length > 0) {
	    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
	    if (this.length > max) str += ' ... '
	  }
	  return '<Buffer ' + str + '>'
	}

	Buffer.prototype.compare = function compare (b) {
	  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
	  if (this === b) return 0
	  return Buffer.compare(this, b)
	}

	Buffer.prototype.indexOf = function indexOf (val, byteOffset) {
	  if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff
	  else if (byteOffset < -0x80000000) byteOffset = -0x80000000
	  byteOffset >>= 0

	  if (this.length === 0) return -1
	  if (byteOffset >= this.length) return -1

	  // Negative offsets start from the end of the buffer
	  if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)

	  if (typeof val === 'string') {
	    if (val.length === 0) return -1 // special case: looking for empty string always fails
	    return String.prototype.indexOf.call(this, val, byteOffset)
	  }
	  if (Buffer.isBuffer(val)) {
	    return arrayIndexOf(this, val, byteOffset)
	  }
	  if (typeof val === 'number') {
	    if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {
	      return Uint8Array.prototype.indexOf.call(this, val, byteOffset)
	    }
	    return arrayIndexOf(this, [ val ], byteOffset)
	  }

	  function arrayIndexOf (arr, val, byteOffset) {
	    var foundIndex = -1
	    for (var i = 0; byteOffset + i < arr.length; i++) {
	      if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {
	        if (foundIndex === -1) foundIndex = i
	        if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex
	      } else {
	        foundIndex = -1
	      }
	    }
	    return -1
	  }

	  throw new TypeError('val must be string, number or Buffer')
	}

	// `get` is deprecated
	Buffer.prototype.get = function get (offset) {
	  console.log('.get() is deprecated. Access using array indexes instead.')
	  return this.readUInt8(offset)
	}

	// `set` is deprecated
	Buffer.prototype.set = function set (v, offset) {
	  console.log('.set() is deprecated. Access using array indexes instead.')
	  return this.writeUInt8(v, offset)
	}

	function hexWrite (buf, string, offset, length) {
	  offset = Number(offset) || 0
	  var remaining = buf.length - offset
	  if (!length) {
	    length = remaining
	  } else {
	    length = Number(length)
	    if (length > remaining) {
	      length = remaining
	    }
	  }

	  // must be an even number of digits
	  var strLen = string.length
	  if (strLen % 2 !== 0) throw new Error('Invalid hex string')

	  if (length > strLen / 2) {
	    length = strLen / 2
	  }
	  for (var i = 0; i < length; i++) {
	    var parsed = parseInt(string.substr(i * 2, 2), 16)
	    if (isNaN(parsed)) throw new Error('Invalid hex string')
	    buf[offset + i] = parsed
	  }
	  return i
	}

	function utf8Write (buf, string, offset, length) {
	  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
	}

	function asciiWrite (buf, string, offset, length) {
	  return blitBuffer(asciiToBytes(string), buf, offset, length)
	}

	function binaryWrite (buf, string, offset, length) {
	  return asciiWrite(buf, string, offset, length)
	}

	function base64Write (buf, string, offset, length) {
	  return blitBuffer(base64ToBytes(string), buf, offset, length)
	}

	function ucs2Write (buf, string, offset, length) {
	  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
	}

	Buffer.prototype.write = function write (string, offset, length, encoding) {
	  // Buffer#write(string)
	  if (offset === undefined) {
	    encoding = 'utf8'
	    length = this.length
	    offset = 0
	  // Buffer#write(string, encoding)
	  } else if (length === undefined && typeof offset === 'string') {
	    encoding = offset
	    length = this.length
	    offset = 0
	  // Buffer#write(string, offset[, length][, encoding])
	  } else if (isFinite(offset)) {
	    offset = offset | 0
	    if (isFinite(length)) {
	      length = length | 0
	      if (encoding === undefined) encoding = 'utf8'
	    } else {
	      encoding = length
	      length = undefined
	    }
	  // legacy write(string, encoding, offset, length) - remove in v0.13
	  } else {
	    var swap = encoding
	    encoding = offset
	    offset = length | 0
	    length = swap
	  }

	  var remaining = this.length - offset
	  if (length === undefined || length > remaining) length = remaining

	  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
	    throw new RangeError('attempt to write outside buffer bounds')
	  }

	  if (!encoding) encoding = 'utf8'

	  var loweredCase = false
	  for (;;) {
	    switch (encoding) {
	      case 'hex':
	        return hexWrite(this, string, offset, length)

	      case 'utf8':
	      case 'utf-8':
	        return utf8Write(this, string, offset, length)

	      case 'ascii':
	        return asciiWrite(this, string, offset, length)

	      case 'binary':
	        return binaryWrite(this, string, offset, length)

	      case 'base64':
	        // Warning: maxLength not taken into account in base64Write
	        return base64Write(this, string, offset, length)

	      case 'ucs2':
	      case 'ucs-2':
	      case 'utf16le':
	      case 'utf-16le':
	        return ucs2Write(this, string, offset, length)

	      default:
	        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
	        encoding = ('' + encoding).toLowerCase()
	        loweredCase = true
	    }
	  }
	}

	Buffer.prototype.toJSON = function toJSON () {
	  return {
	    type: 'Buffer',
	    data: Array.prototype.slice.call(this._arr || this, 0)
	  }
	}

	function base64Slice (buf, start, end) {
	  if (start === 0 && end === buf.length) {
	    return base64.fromByteArray(buf)
	  } else {
	    return base64.fromByteArray(buf.slice(start, end))
	  }
	}

	function utf8Slice (buf, start, end) {
	  end = Math.min(buf.length, end)
	  var res = []

	  var i = start
	  while (i < end) {
	    var firstByte = buf[i]
	    var codePoint = null
	    var bytesPerSequence = (firstByte > 0xEF) ? 4
	      : (firstByte > 0xDF) ? 3
	      : (firstByte > 0xBF) ? 2
	      : 1

	    if (i + bytesPerSequence <= end) {
	      var secondByte, thirdByte, fourthByte, tempCodePoint

	      switch (bytesPerSequence) {
	        case 1:
	          if (firstByte < 0x80) {
	            codePoint = firstByte
	          }
	          break
	        case 2:
	          secondByte = buf[i + 1]
	          if ((secondByte & 0xC0) === 0x80) {
	            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
	            if (tempCodePoint > 0x7F) {
	              codePoint = tempCodePoint
	            }
	          }
	          break
	        case 3:
	          secondByte = buf[i + 1]
	          thirdByte = buf[i + 2]
	          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
	            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
	            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
	              codePoint = tempCodePoint
	            }
	          }
	          break
	        case 4:
	          secondByte = buf[i + 1]
	          thirdByte = buf[i + 2]
	          fourthByte = buf[i + 3]
	          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
	            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
	            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
	              codePoint = tempCodePoint
	            }
	          }
	      }
	    }

	    if (codePoint === null) {
	      // we did not generate a valid codePoint so insert a
	      // replacement char (U+FFFD) and advance only 1 byte
	      codePoint = 0xFFFD
	      bytesPerSequence = 1
	    } else if (codePoint > 0xFFFF) {
	      // encode to utf16 (surrogate pair dance)
	      codePoint -= 0x10000
	      res.push(codePoint >>> 10 & 0x3FF | 0xD800)
	      codePoint = 0xDC00 | codePoint & 0x3FF
	    }

	    res.push(codePoint)
	    i += bytesPerSequence
	  }

	  return decodeCodePointsArray(res)
	}

	// Based on http://stackoverflow.com/a/22747272/680742, the browser with
	// the lowest limit is Chrome, with 0x10000 args.
	// We go 1 magnitude less, for safety
	var MAX_ARGUMENTS_LENGTH = 0x1000

	function decodeCodePointsArray (codePoints) {
	  var len = codePoints.length
	  if (len <= MAX_ARGUMENTS_LENGTH) {
	    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
	  }

	  // Decode in chunks to avoid "call stack size exceeded".
	  var res = ''
	  var i = 0
	  while (i < len) {
	    res += String.fromCharCode.apply(
	      String,
	      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
	    )
	  }
	  return res
	}

	function asciiSlice (buf, start, end) {
	  var ret = ''
	  end = Math.min(buf.length, end)

	  for (var i = start; i < end; i++) {
	    ret += String.fromCharCode(buf[i] & 0x7F)
	  }
	  return ret
	}

	function binarySlice (buf, start, end) {
	  var ret = ''
	  end = Math.min(buf.length, end)

	  for (var i = start; i < end; i++) {
	    ret += String.fromCharCode(buf[i])
	  }
	  return ret
	}

	function hexSlice (buf, start, end) {
	  var len = buf.length

	  if (!start || start < 0) start = 0
	  if (!end || end < 0 || end > len) end = len

	  var out = ''
	  for (var i = start; i < end; i++) {
	    out += toHex(buf[i])
	  }
	  return out
	}

	function utf16leSlice (buf, start, end) {
	  var bytes = buf.slice(start, end)
	  var res = ''
	  for (var i = 0; i < bytes.length; i += 2) {
	    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
	  }
	  return res
	}

	Buffer.prototype.slice = function slice (start, end) {
	  var len = this.length
	  start = ~~start
	  end = end === undefined ? len : ~~end

	  if (start < 0) {
	    start += len
	    if (start < 0) start = 0
	  } else if (start > len) {
	    start = len
	  }

	  if (end < 0) {
	    end += len
	    if (end < 0) end = 0
	  } else if (end > len) {
	    end = len
	  }

	  if (end < start) end = start

	  var newBuf
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    newBuf = Buffer._augment(this.subarray(start, end))
	  } else {
	    var sliceLen = end - start
	    newBuf = new Buffer(sliceLen, undefined)
	    for (var i = 0; i < sliceLen; i++) {
	      newBuf[i] = this[i + start]
	    }
	  }

	  if (newBuf.length) newBuf.parent = this.parent || this

	  return newBuf
	}

	/*
	 * Need to make sure that buffer isn't trying to write out of bounds.
	 */
	function checkOffset (offset, ext, length) {
	  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
	  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
	}

	Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
	  offset = offset | 0
	  byteLength = byteLength | 0
	  if (!noAssert) checkOffset(offset, byteLength, this.length)

	  var val = this[offset]
	  var mul = 1
	  var i = 0
	  while (++i < byteLength && (mul *= 0x100)) {
	    val += this[offset + i] * mul
	  }

	  return val
	}

	Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
	  offset = offset | 0
	  byteLength = byteLength | 0
	  if (!noAssert) {
	    checkOffset(offset, byteLength, this.length)
	  }

	  var val = this[offset + --byteLength]
	  var mul = 1
	  while (byteLength > 0 && (mul *= 0x100)) {
	    val += this[offset + --byteLength] * mul
	  }

	  return val
	}

	Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 1, this.length)
	  return this[offset]
	}

	Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 2, this.length)
	  return this[offset] | (this[offset + 1] << 8)
	}

	Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 2, this.length)
	  return (this[offset] << 8) | this[offset + 1]
	}

	Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 4, this.length)

	  return ((this[offset]) |
	      (this[offset + 1] << 8) |
	      (this[offset + 2] << 16)) +
	      (this[offset + 3] * 0x1000000)
	}

	Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 4, this.length)

	  return (this[offset] * 0x1000000) +
	    ((this[offset + 1] << 16) |
	    (this[offset + 2] << 8) |
	    this[offset + 3])
	}

	Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
	  offset = offset | 0
	  byteLength = byteLength | 0
	  if (!noAssert) checkOffset(offset, byteLength, this.length)

	  var val = this[offset]
	  var mul = 1
	  var i = 0
	  while (++i < byteLength && (mul *= 0x100)) {
	    val += this[offset + i] * mul
	  }
	  mul *= 0x80

	  if (val >= mul) val -= Math.pow(2, 8 * byteLength)

	  return val
	}

	Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
	  offset = offset | 0
	  byteLength = byteLength | 0
	  if (!noAssert) checkOffset(offset, byteLength, this.length)

	  var i = byteLength
	  var mul = 1
	  var val = this[offset + --i]
	  while (i > 0 && (mul *= 0x100)) {
	    val += this[offset + --i] * mul
	  }
	  mul *= 0x80

	  if (val >= mul) val -= Math.pow(2, 8 * byteLength)

	  return val
	}

	Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 1, this.length)
	  if (!(this[offset] & 0x80)) return (this[offset])
	  return ((0xff - this[offset] + 1) * -1)
	}

	Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 2, this.length)
	  var val = this[offset] | (this[offset + 1] << 8)
	  return (val & 0x8000) ? val | 0xFFFF0000 : val
	}

	Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 2, this.length)
	  var val = this[offset + 1] | (this[offset] << 8)
	  return (val & 0x8000) ? val | 0xFFFF0000 : val
	}

	Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 4, this.length)

	  return (this[offset]) |
	    (this[offset + 1] << 8) |
	    (this[offset + 2] << 16) |
	    (this[offset + 3] << 24)
	}

	Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 4, this.length)

	  return (this[offset] << 24) |
	    (this[offset + 1] << 16) |
	    (this[offset + 2] << 8) |
	    (this[offset + 3])
	}

	Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 4, this.length)
	  return ieee754.read(this, offset, true, 23, 4)
	}

	Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 4, this.length)
	  return ieee754.read(this, offset, false, 23, 4)
	}

	Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 8, this.length)
	  return ieee754.read(this, offset, true, 52, 8)
	}

	Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
	  if (!noAssert) checkOffset(offset, 8, this.length)
	  return ieee754.read(this, offset, false, 52, 8)
	}

	function checkInt (buf, value, offset, ext, max, min) {
	  if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')
	  if (value > max || value < min) throw new RangeError('value is out of bounds')
	  if (offset + ext > buf.length) throw new RangeError('index out of range')
	}

	Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
	  value = +value
	  offset = offset | 0
	  byteLength = byteLength | 0
	  if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)

	  var mul = 1
	  var i = 0
	  this[offset] = value & 0xFF
	  while (++i < byteLength && (mul *= 0x100)) {
	    this[offset + i] = (value / mul) & 0xFF
	  }

	  return offset + byteLength
	}

	Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
	  value = +value
	  offset = offset | 0
	  byteLength = byteLength | 0
	  if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)

	  var i = byteLength - 1
	  var mul = 1
	  this[offset + i] = value & 0xFF
	  while (--i >= 0 && (mul *= 0x100)) {
	    this[offset + i] = (value / mul) & 0xFF
	  }

	  return offset + byteLength
	}

	Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
	  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
	  this[offset] = (value & 0xff)
	  return offset + 1
	}

	function objectWriteUInt16 (buf, value, offset, littleEndian) {
	  if (value < 0) value = 0xffff + value + 1
	  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {
	    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
	      (littleEndian ? i : 1 - i) * 8
	  }
	}

	Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    this[offset] = (value & 0xff)
	    this[offset + 1] = (value >>> 8)
	  } else {
	    objectWriteUInt16(this, value, offset, true)
	  }
	  return offset + 2
	}

	Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    this[offset] = (value >>> 8)
	    this[offset + 1] = (value & 0xff)
	  } else {
	    objectWriteUInt16(this, value, offset, false)
	  }
	  return offset + 2
	}

	function objectWriteUInt32 (buf, value, offset, littleEndian) {
	  if (value < 0) value = 0xffffffff + value + 1
	  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {
	    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
	  }
	}

	Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    this[offset + 3] = (value >>> 24)
	    this[offset + 2] = (value >>> 16)
	    this[offset + 1] = (value >>> 8)
	    this[offset] = (value & 0xff)
	  } else {
	    objectWriteUInt32(this, value, offset, true)
	  }
	  return offset + 4
	}

	Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    this[offset] = (value >>> 24)
	    this[offset + 1] = (value >>> 16)
	    this[offset + 2] = (value >>> 8)
	    this[offset + 3] = (value & 0xff)
	  } else {
	    objectWriteUInt32(this, value, offset, false)
	  }
	  return offset + 4
	}

	Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) {
	    var limit = Math.pow(2, 8 * byteLength - 1)

	    checkInt(this, value, offset, byteLength, limit - 1, -limit)
	  }

	  var i = 0
	  var mul = 1
	  var sub = value < 0 ? 1 : 0
	  this[offset] = value & 0xFF
	  while (++i < byteLength && (mul *= 0x100)) {
	    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
	  }

	  return offset + byteLength
	}

	Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) {
	    var limit = Math.pow(2, 8 * byteLength - 1)

	    checkInt(this, value, offset, byteLength, limit - 1, -limit)
	  }

	  var i = byteLength - 1
	  var mul = 1
	  var sub = value < 0 ? 1 : 0
	  this[offset + i] = value & 0xFF
	  while (--i >= 0 && (mul *= 0x100)) {
	    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
	  }

	  return offset + byteLength
	}

	Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
	  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
	  if (value < 0) value = 0xff + value + 1
	  this[offset] = (value & 0xff)
	  return offset + 1
	}

	Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    this[offset] = (value & 0xff)
	    this[offset + 1] = (value >>> 8)
	  } else {
	    objectWriteUInt16(this, value, offset, true)
	  }
	  return offset + 2
	}

	Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    this[offset] = (value >>> 8)
	    this[offset + 1] = (value & 0xff)
	  } else {
	    objectWriteUInt16(this, value, offset, false)
	  }
	  return offset + 2
	}

	Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    this[offset] = (value & 0xff)
	    this[offset + 1] = (value >>> 8)
	    this[offset + 2] = (value >>> 16)
	    this[offset + 3] = (value >>> 24)
	  } else {
	    objectWriteUInt32(this, value, offset, true)
	  }
	  return offset + 4
	}

	Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
	  value = +value
	  offset = offset | 0
	  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
	  if (value < 0) value = 0xffffffff + value + 1
	  if (Buffer.TYPED_ARRAY_SUPPORT) {
	    this[offset] = (value >>> 24)
	    this[offset + 1] = (value >>> 16)
	    this[offset + 2] = (value >>> 8)
	    this[offset + 3] = (value & 0xff)
	  } else {
	    objectWriteUInt32(this, value, offset, false)
	  }
	  return offset + 4
	}

	function checkIEEE754 (buf, value, offset, ext, max, min) {
	  if (value > max || value < min) throw new RangeError('value is out of bounds')
	  if (offset + ext > buf.length) throw new RangeError('index out of range')
	  if (offset < 0) throw new RangeError('index out of range')
	}

	function writeFloat (buf, value, offset, littleEndian, noAssert) {
	  if (!noAssert) {
	    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
	  }
	  ieee754.write(buf, value, offset, littleEndian, 23, 4)
	  return offset + 4
	}

	Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
	  return writeFloat(this, value, offset, true, noAssert)
	}

	Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
	  return writeFloat(this, value, offset, false, noAssert)
	}

	function writeDouble (buf, value, offset, littleEndian, noAssert) {
	  if (!noAssert) {
	    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
	  }
	  ieee754.write(buf, value, offset, littleEndian, 52, 8)
	  return offset + 8
	}

	Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
	  return writeDouble(this, value, offset, true, noAssert)
	}

	Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
	  return writeDouble(this, value, offset, false, noAssert)
	}

	// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
	Buffer.prototype.copy = function copy (target, targetStart, start, end) {
	  if (!start) start = 0
	  if (!end && end !== 0) end = this.length
	  if (targetStart >= target.length) targetStart = target.length
	  if (!targetStart) targetStart = 0
	  if (end > 0 && end < start) end = start

	  // Copy 0 bytes; we're done
	  if (end === start) return 0
	  if (target.length === 0 || this.length === 0) return 0

	  // Fatal error conditions
	  if (targetStart < 0) {
	    throw new RangeError('targetStart out of bounds')
	  }
	  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
	  if (end < 0) throw new RangeError('sourceEnd out of bounds')

	  // Are we oob?
	  if (end > this.length) end = this.length
	  if (target.length - targetStart < end - start) {
	    end = target.length - targetStart + start
	  }

	  var len = end - start
	  var i

	  if (this === target && start < targetStart && targetStart < end) {
	    // descending copy from end
	    for (i = len - 1; i >= 0; i--) {
	      target[i + targetStart] = this[i + start]
	    }
	  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
	    // ascending copy from start
	    for (i = 0; i < len; i++) {
	      target[i + targetStart] = this[i + start]
	    }
	  } else {
	    target._set(this.subarray(start, start + len), targetStart)
	  }

	  return len
	}

	// fill(value, start=0, end=buffer.length)
	Buffer.prototype.fill = function fill (value, start, end) {
	  if (!value) value = 0
	  if (!start) start = 0
	  if (!end) end = this.length

	  if (end < start) throw new RangeError('end < start')

	  // Fill 0 bytes; we're done
	  if (end === start) return
	  if (this.length === 0) return

	  if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')
	  if (end < 0 || end > this.length) throw new RangeError('end out of bounds')

	  var i
	  if (typeof value === 'number') {
	    for (i = start; i < end; i++) {
	      this[i] = value
	    }
	  } else {
	    var bytes = utf8ToBytes(value.toString())
	    var len = bytes.length
	    for (i = start; i < end; i++) {
	      this[i] = bytes[i % len]
	    }
	  }

	  return this
	}

	/**
	 * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
	 * Added in Node 0.12. Only available in browsers that support ArrayBuffer.
	 */
	Buffer.prototype.toArrayBuffer = function toArrayBuffer () {
	  if (typeof Uint8Array !== 'undefined') {
	    if (Buffer.TYPED_ARRAY_SUPPORT) {
	      return (new Buffer(this)).buffer
	    } else {
	      var buf = new Uint8Array(this.length)
	      for (var i = 0, len = buf.length; i < len; i += 1) {
	        buf[i] = this[i]
	      }
	      return buf.buffer
	    }
	  } else {
	    throw new TypeError('Buffer.toArrayBuffer not supported in this browser')
	  }
	}

	// HELPER FUNCTIONS
	// ================

	var BP = Buffer.prototype

	/**
	 * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
	 */
	Buffer._augment = function _augment (arr) {
	  arr.constructor = Buffer
	  arr._isBuffer = true

	  // save reference to original Uint8Array set method before overwriting
	  arr._set = arr.set

	  // deprecated
	  arr.get = BP.get
	  arr.set = BP.set

	  arr.write = BP.write
	  arr.toString = BP.toString
	  arr.toLocaleString = BP.toString
	  arr.toJSON = BP.toJSON
	  arr.equals = BP.equals
	  arr.compare = BP.compare
	  arr.indexOf = BP.indexOf
	  arr.copy = BP.copy
	  arr.slice = BP.slice
	  arr.readUIntLE = BP.readUIntLE
	  arr.readUIntBE = BP.readUIntBE
	  arr.readUInt8 = BP.readUInt8
	  arr.readUInt16LE = BP.readUInt16LE
	  arr.readUInt16BE = BP.readUInt16BE
	  arr.readUInt32LE = BP.readUInt32LE
	  arr.readUInt32BE = BP.readUInt32BE
	  arr.readIntLE = BP.readIntLE
	  arr.readIntBE = BP.readIntBE
	  arr.readInt8 = BP.readInt8
	  arr.readInt16LE = BP.readInt16LE
	  arr.readInt16BE = BP.readInt16BE
	  arr.readInt32LE = BP.readInt32LE
	  arr.readInt32BE = BP.readInt32BE
	  arr.readFloatLE = BP.readFloatLE
	  arr.readFloatBE = BP.readFloatBE
	  arr.readDoubleLE = BP.readDoubleLE
	  arr.readDoubleBE = BP.readDoubleBE
	  arr.writeUInt8 = BP.writeUInt8
	  arr.writeUIntLE = BP.writeUIntLE
	  arr.writeUIntBE = BP.writeUIntBE
	  arr.writeUInt16LE = BP.writeUInt16LE
	  arr.writeUInt16BE = BP.writeUInt16BE
	  arr.writeUInt32LE = BP.writeUInt32LE
	  arr.writeUInt32BE = BP.writeUInt32BE
	  arr.writeIntLE = BP.writeIntLE
	  arr.writeIntBE = BP.writeIntBE
	  arr.writeInt8 = BP.writeInt8
	  arr.writeInt16LE = BP.writeInt16LE
	  arr.writeInt16BE = BP.writeInt16BE
	  arr.writeInt32LE = BP.writeInt32LE
	  arr.writeInt32BE = BP.writeInt32BE
	  arr.writeFloatLE = BP.writeFloatLE
	  arr.writeFloatBE = BP.writeFloatBE
	  arr.writeDoubleLE = BP.writeDoubleLE
	  arr.writeDoubleBE = BP.writeDoubleBE
	  arr.fill = BP.fill
	  arr.inspect = BP.inspect
	  arr.toArrayBuffer = BP.toArrayBuffer

	  return arr
	}

	var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g

	function base64clean (str) {
	  // Node strips out invalid characters like \n and \t from the string, base64-js does not
	  str = stringtrim(str).replace(INVALID_BASE64_RE, '')
	  // Node converts strings with length < 2 to ''
	  if (str.length < 2) return ''
	  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
	  while (str.length % 4 !== 0) {
	    str = str + '='
	  }
	  return str
	}

	function stringtrim (str) {
	  if (str.trim) return str.trim()
	  return str.replace(/^\s+|\s+$/g, '')
	}

	function toHex (n) {
	  if (n < 16) return '0' + n.toString(16)
	  return n.toString(16)
	}

	function utf8ToBytes (string, units) {
	  units = units || Infinity
	  var codePoint
	  var length = string.length
	  var leadSurrogate = null
	  var bytes = []

	  for (var i = 0; i < length; i++) {
	    codePoint = string.charCodeAt(i)

	    // is surrogate component
	    if (codePoint > 0xD7FF && codePoint < 0xE000) {
	      // last char was a lead
	      if (!leadSurrogate) {
	        // no lead yet
	        if (codePoint > 0xDBFF) {
	          // unexpected trail
	          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
	          continue
	        } else if (i + 1 === length) {
	          // unpaired lead
	          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
	          continue
	        }

	        // valid lead
	        leadSurrogate = codePoint

	        continue
	      }

	      // 2 leads in a row
	      if (codePoint < 0xDC00) {
	        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
	        leadSurrogate = codePoint
	        continue
	      }

	      // valid surrogate pair
	      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
	    } else if (leadSurrogate) {
	      // valid bmp char, but last char was a lead
	      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
	    }

	    leadSurrogate = null

	    // encode utf8
	    if (codePoint < 0x80) {
	      if ((units -= 1) < 0) break
	      bytes.push(codePoint)
	    } else if (codePoint < 0x800) {
	      if ((units -= 2) < 0) break
	      bytes.push(
	        codePoint >> 0x6 | 0xC0,
	        codePoint & 0x3F | 0x80
	      )
	    } else if (codePoint < 0x10000) {
	      if ((units -= 3) < 0) break
	      bytes.push(
	        codePoint >> 0xC | 0xE0,
	        codePoint >> 0x6 & 0x3F | 0x80,
	        codePoint & 0x3F | 0x80
	      )
	    } else if (codePoint < 0x110000) {
	      if ((units -= 4) < 0) break
	      bytes.push(
	        codePoint >> 0x12 | 0xF0,
	        codePoint >> 0xC & 0x3F | 0x80,
	        codePoint >> 0x6 & 0x3F | 0x80,
	        codePoint & 0x3F | 0x80
	      )
	    } else {
	      throw new Error('Invalid code point')
	    }
	  }

	  return bytes
	}

	function asciiToBytes (str) {
	  var byteArray = []
	  for (var i = 0; i < str.length; i++) {
	    // Node's code seems to be doing this and not & 0x7F..
	    byteArray.push(str.charCodeAt(i) & 0xFF)
	  }
	  return byteArray
	}

	function utf16leToBytes (str, units) {
	  var c, hi, lo
	  var byteArray = []
	  for (var i = 0; i < str.length; i++) {
	    if ((units -= 2) < 0) break

	    c = str.charCodeAt(i)
	    hi = c >> 8
	    lo = c % 256
	    byteArray.push(lo)
	    byteArray.push(hi)
	  }

	  return byteArray
	}

	function base64ToBytes (str) {
	  return base64.toByteArray(base64clean(str))
	}

	function blitBuffer (src, dst, offset, length) {
	  for (var i = 0; i < length; i++) {
	    if ((i + offset >= dst.length) || (i >= src.length)) break
	    dst[i + offset] = src[i]
	  }
	  return i
	}

	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(306).Buffer, (function() { return this; }())))

/***/ }),

/***/ 319:
/***/ (function(module, exports, __webpack_require__) {

	var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';

	;(function (exports) {
		'use strict';

	  var Arr = (typeof Uint8Array !== 'undefined')
	    ? Uint8Array
	    : Array

		var PLUS   = '+'.charCodeAt(0)
		var SLASH  = '/'.charCodeAt(0)
		var NUMBER = '0'.charCodeAt(0)
		var LOWER  = 'a'.charCodeAt(0)
		var UPPER  = 'A'.charCodeAt(0)
		var PLUS_URL_SAFE = '-'.charCodeAt(0)
		var SLASH_URL_SAFE = '_'.charCodeAt(0)

		function decode (elt) {
			var code = elt.charCodeAt(0)
			if (code === PLUS ||
			    code === PLUS_URL_SAFE)
				return 62 // '+'
			if (code === SLASH ||
			    code === SLASH_URL_SAFE)
				return 63 // '/'
			if (code < NUMBER)
				return -1 //no match
			if (code < NUMBER + 10)
				return code - NUMBER + 26 + 26
			if (code < UPPER + 26)
				return code - UPPER
			if (code < LOWER + 26)
				return code - LOWER + 26
		}

		function b64ToByteArray (b64) {
			var i, j, l, tmp, placeHolders, arr

			if (b64.length % 4 > 0) {
				throw new Error('Invalid string. Length must be a multiple of 4')
			}

			// the number of equal signs (place holders)
			// if there are two placeholders, than the two characters before it
			// represent one byte
			// if there is only one, then the three characters before it represent 2 bytes
			// this is just a cheap hack to not do indexOf twice
			var len = b64.length
			placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0

			// base64 is 4/3 + up to two characters of the original data
			arr = new Arr(b64.length * 3 / 4 - placeHolders)

			// if there are placeholders, only get up to the last complete 4 chars
			l = placeHolders > 0 ? b64.length - 4 : b64.length

			var L = 0

			function push (v) {
				arr[L++] = v
			}

			for (i = 0, j = 0; i < l; i += 4, j += 3) {
				tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
				push((tmp & 0xFF0000) >> 16)
				push((tmp & 0xFF00) >> 8)
				push(tmp & 0xFF)
			}

			if (placeHolders === 2) {
				tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
				push(tmp & 0xFF)
			} else if (placeHolders === 1) {
				tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
				push((tmp >> 8) & 0xFF)
				push(tmp & 0xFF)
			}

			return arr
		}

		function uint8ToBase64 (uint8) {
			var i,
				extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
				output = "",
				temp, length

			function encode (num) {
				return lookup.charAt(num)
			}

			function tripletToBase64 (num) {
				return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
			}

			// go through the array every three bytes, we'll deal with trailing stuff later
			for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
				temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
				output += tripletToBase64(temp)
			}

			// pad the end with zeros, but make sure to not forget the extra bytes
			switch (extraBytes) {
				case 1:
					temp = uint8[uint8.length - 1]
					output += encode(temp >> 2)
					output += encode((temp << 4) & 0x3F)
					output += '=='
					break
				case 2:
					temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
					output += encode(temp >> 10)
					output += encode((temp >> 4) & 0x3F)
					output += encode((temp << 2) & 0x3F)
					output += '='
					break
			}

			return output
		}

		exports.toByteArray = b64ToByteArray
		exports.fromByteArray = uint8ToBase64
	}( false ? (this.base64js = {}) : exports))


/***/ }),

/***/ 320:
/***/ (function(module, exports, __webpack_require__) {

	/* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors.
	//
	// Permission is hereby granted, free of charge, to any person obtaining a
	// copy of this software and associated documentation files (the
	// "Software"), to deal in the Software without restriction, including
	// without limitation the rights to use, copy, modify, merge, publish,
	// distribute, sublicense, and/or sell copies of the Software, and to permit
	// persons to whom the Software is furnished to do so, subject to the
	// following conditions:
	//
	// The above copyright notice and this permission notice shall be included
	// in all copies or substantial portions of the Software.
	//
	// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
	// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
	// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
	// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
	// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
	// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
	// USE OR OTHER DEALINGS IN THE SOFTWARE.

	// NOTE: These type checking functions intentionally don't use `instanceof`
	// because it is fragile and can be easily faked with `Object.create()`.

	function isArray(arg) {
	  if (Array.isArray) {
	    return Array.isArray(arg);
	  }
	  return objectToString(arg) === '[object Array]';
	}
	exports.isArray = isArray;

	function isBoolean(arg) {
	  return typeof arg === 'boolean';
	}
	exports.isBoolean = isBoolean;

	function isNull(arg) {
	  return arg === null;
	}
	exports.isNull = isNull;

	function isNullOrUndefined(arg) {
	  return arg == null;
	}
	exports.isNullOrUndefined = isNullOrUndefined;

	function isNumber(arg) {
	  return typeof arg === 'number';
	}
	exports.isNumber = isNumber;

	function isString(arg) {
	  return typeof arg === 'string';
	}
	exports.isString = isString;

	function isSymbol(arg) {
	  return typeof arg === 'symbol';
	}
	exports.isSymbol = isSymbol;

	function isUndefined(arg) {
	  return arg === void 0;
	}
	exports.isUndefined = isUndefined;

	function isRegExp(re) {
	  return objectToString(re) === '[object RegExp]';
	}
	exports.isRegExp = isRegExp;

	function isObject(arg) {
	  return typeof arg === 'object' && arg !== null;
	}
	exports.isObject = isObject;

	function isDate(d) {
	  return objectToString(d) === '[object Date]';
	}
	exports.isDate = isDate;

	function isError(e) {
	  return (objectToString(e) === '[object Error]' || e instanceof Error);
	}
	exports.isError = isError;

	function isFunction(arg) {
	  return typeof arg === 'function';
	}
	exports.isFunction = isFunction;

	function isPrimitive(arg) {
	  return arg === null ||
	         typeof arg === 'boolean' ||
	         typeof arg === 'number' ||
	         typeof arg === 'string' ||
	         typeof arg === 'symbol' ||  // ES6 symbol
	         typeof arg === 'undefined';
	}
	exports.isPrimitive = isPrimitive;

	exports.isBuffer = Buffer.isBuffer;

	function objectToString(o) {
	  return Object.prototype.toString.call(o);
	}

	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(306).Buffer))

/***/ }),

/***/ 321:
/***/ (function(module, exports) {

	/* (ignored) */

/***/ }),

/***/ 322:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';

	/*<replacement>*/

	function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

	var Buffer = __webpack_require__(317).Buffer;
	/*</replacement>*/

	function copyBuffer(src, target, offset) {
	  src.copy(target, offset);
	}

	module.exports = function () {
	  function BufferList() {
	    _classCallCheck(this, BufferList);

	    this.head = null;
	    this.tail = null;
	    this.length = 0;
	  }

	  BufferList.prototype.push = function push(v) {
	    var entry = { data: v, next: null };
	    if (this.length > 0) this.tail.next = entry;else this.head = entry;
	    this.tail = entry;
	    ++this.length;
	  };

	  BufferList.prototype.unshift = function unshift(v) {
	    var entry = { data: v, next: this.head };
	    if (this.length === 0) this.tail = entry;
	    this.head = entry;
	    ++this.length;
	  };

	  BufferList.prototype.shift = function shift() {
	    if (this.length === 0) return;
	    var ret = this.head.data;
	    if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
	    --this.length;
	    return ret;
	  };

	  BufferList.prototype.clear = function clear() {
	    this.head = this.tail = null;
	    this.length = 0;
	  };

	  BufferList.prototype.join = function join(s) {
	    if (this.length === 0) return '';
	    var p = this.head;
	    var ret = '' + p.data;
	    while (p = p.next) {
	      ret += s + p.data;
	    }return ret;
	  };

	  BufferList.prototype.concat = function concat(n) {
	    if (this.length === 0) return Buffer.alloc(0);
	    if (this.length === 1) return this.head.data;
	    var ret = Buffer.allocUnsafe(n >>> 0);
	    var p = this.head;
	    var i = 0;
	    while (p) {
	      copyBuffer(p.data, ret, i);
	      i += p.data.length;
	      p = p.next;
	    }
	    return ret;
	  };

	  return BufferList;
	}();

/***/ }),

/***/ 323:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';

	/*<replacement>*/

	var processNextTick = __webpack_require__(315);
	/*</replacement>*/

	// undocumented cb() API, needed for core, not for public API
	function destroy(err, cb) {
	  var _this = this;

	  var readableDestroyed = this._readableState && this._readableState.destroyed;
	  var writableDestroyed = this._writableState && this._writableState.destroyed;

	  if (readableDestroyed || writableDestroyed) {
	    if (cb) {
	      cb(err);
	    } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {
	      processNextTick(emitErrorNT, this, err);
	    }
	    return;
	  }

	  // we set destroyed to true before firing error callbacks in order
	  // to make it re-entrance safe in case destroy() is called within callbacks

	  if (this._readableState) {
	    this._readableState.destroyed = true;
	  }

	  // if this is a duplex stream mark the writable part as destroyed as well
	  if (this._writableState) {
	    this._writableState.destroyed = true;
	  }

	  this._destroy(err || null, function (err) {
	    if (!cb && err) {
	      processNextTick(emitErrorNT, _this, err);
	      if (_this._writableState) {
	        _this._writableState.errorEmitted = true;
	      }
	    } else if (cb) {
	      cb(err);
	    }
	  });
	}

	function undestroy() {
	  if (this._readableState) {
	    this._readableState.destroyed = false;
	    this._readableState.reading = false;
	    this._readableState.ended = false;
	    this._readableState.endEmitted = false;
	  }

	  if (this._writableState) {
	    this._writableState.destroyed = false;
	    this._writableState.ended = false;
	    this._writableState.ending = false;
	    this._writableState.finished = false;
	    this._writableState.errorEmitted = false;
	  }
	}

	function emitErrorNT(self, err) {
	  self.emit('error', err);
	}

	module.exports = {
	  destroy: destroy,
	  undestroy: undestroy
	};

/***/ }),

/***/ 324:
/***/ (function(module, exports, __webpack_require__) {

	// Copyright Joyent, Inc. and other Node contributors.
	//
	// Permission is hereby granted, free of charge, to any person obtaining a
	// copy of this software and associated documentation files (the
	// "Software"), to deal in the Software without restriction, including
	// without limitation the rights to use, copy, modify, merge, publish,
	// distribute, sublicense, and/or sell copies of the Software, and to permit
	// persons to whom the Software is furnished to do so, subject to the
	// following conditions:
	//
	// The above copyright notice and this permission notice shall be included
	// in all copies or substantial portions of the Software.
	//
	// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
	// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
	// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
	// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
	// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
	// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
	// USE OR OTHER DEALINGS IN THE SOFTWARE.

	// a duplex stream is just a stream that is both readable and writable.
	// Since JS doesn't have multiple prototypal inheritance, this class
	// prototypally inherits from Readable, and then parasitically from
	// Writable.

	'use strict';

	/*<replacement>*/

	var processNextTick = __webpack_require__(315);
	/*</replacement>*/

	/*<replacement>*/
	var objectKeys = Object.keys || function (obj) {
	  var keys = [];
	  for (var key in obj) {
	    keys.push(key);
	  }return keys;
	};
	/*</replacement>*/

	module.exports = Duplex;

	/*<replacement>*/
	var util = __webpack_require__(320);
	util.inherits = __webpack_require__(312);
	/*</replacement>*/

	var Readable = __webpack_require__(314);
	var Writable = __webpack_require__(325);

	util.inherits(Duplex, Readable);

	var keys = objectKeys(Writable.prototype);
	for (var v = 0; v < keys.length; v++) {
	  var method = keys[v];
	  if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
	}

	function Duplex(options) {
	  if (!(this instanceof Duplex)) return new Duplex(options);

	  Readable.call(this, options);
	  Writable.call(this, options);

	  if (options && options.readable === false) this.readable = false;

	  if (options && options.writable === false) this.writable = false;

	  this.allowHalfOpen = true;
	  if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;

	  this.once('end', onend);
	}

	// the no-half-open enforcer
	function onend() {
	  // if we allow half-open state, or if the writable side ended,
	  // then we're ok.
	  if (this.allowHalfOpen || this._writableState.ended) return;

	  // no more data can be written.
	  // But allow more writes to happen in this tick.
	  processNextTick(onEndNT, this);
	}

	function onEndNT(self) {
	  self.end();
	}

	Object.defineProperty(Duplex.prototype, 'destroyed', {
	  get: function () {
	    if (this._readableState === undefined || this._writableState === undefined) {
	      return false;
	    }
	    return this._readableState.destroyed && this._writableState.destroyed;
	  },
	  set: function (value) {
	    // we ignore the value if the stream
	    // has not been initialized yet
	    if (this._readableState === undefined || this._writableState === undefined) {
	      return;
	    }

	    // backward compatibility, the user is explicitly
	    // managing destroyed
	    this._readableState.destroyed = value;
	    this._writableState.destroyed = value;
	  }
	});

	Duplex.prototype._destroy = function (err, cb) {
	  this.push(null);
	  this.end();

	  processNextTick(cb, err);
	};

	function forEach(xs, f) {
	  for (var i = 0, l = xs.length; i < l; i++) {
	    f(xs[i], i);
	  }
	}

/***/ }),

/***/ 325:
/***/ (function(module, exports, __webpack_require__) {

	/* WEBPACK VAR INJECTION */(function(process, setImmediate, global) {// Copyright Joyent, Inc. and other Node contributors.
	//
	// Permission is hereby granted, free of charge, to any person obtaining a
	// copy of this software and associated documentation files (the
	// "Software"), to deal in the Software without restriction, including
	// without limitation the rights to use, copy, modify, merge, publish,
	// distribute, sublicense, and/or sell copies of the Software, and to permit
	// persons to whom the Software is furnished to do so, subject to the
	// following conditions:
	//
	// The above copyright notice and this permission notice shall be included
	// in all copies or substantial portions of the Software.
	//
	// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
	// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
	// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
	// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
	// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
	// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
	// USE OR OTHER DEALINGS IN THE SOFTWARE.

	// A bit simpler than readable streams.
	// Implement an async ._write(chunk, encoding, cb), and it'll handle all
	// the drain event emission and buffering.

	'use strict';

	/*<replacement>*/

	var processNextTick = __webpack_require__(315);
	/*</replacement>*/

	module.exports = Writable;

	/* <replacement> */
	function WriteReq(chunk, encoding, cb) {
	  this.chunk = chunk;
	  this.encoding = encoding;
	  this.callback = cb;
	  this.next = null;
	}

	// It seems a linked list but it is not
	// there will be only 2 of these for each stream
	function CorkedRequest(state) {
	  var _this = this;

	  this.next = null;
	  this.entry = null;
	  this.finish = function () {
	    onCorkedFinish(_this, state);
	  };
	}
	/* </replacement> */

	/*<replacement>*/
	var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
	/*</replacement>*/

	/*<replacement>*/
	var Duplex;
	/*</replacement>*/

	Writable.WritableState = WritableState;

	/*<replacement>*/
	var util = __webpack_require__(320);
	util.inherits = __webpack_require__(312);
	/*</replacement>*/

	/*<replacement>*/
	var internalUtil = {
	  deprecate: __webpack_require__(328)
	};
	/*</replacement>*/

	/*<replacement>*/
	var Stream = __webpack_require__(316);
	/*</replacement>*/

	/*<replacement>*/
	var Buffer = __webpack_require__(317).Buffer;
	var OurUint8Array = global.Uint8Array || function () {};
	function _uint8ArrayToBuffer(chunk) {
	  return Buffer.from(chunk);
	}
	function _isUint8Array(obj) {
	  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
	}
	/*</replacement>*/

	var destroyImpl = __webpack_require__(323);

	util.inherits(Writable, Stream);

	function nop() {}

	function WritableState(options, stream) {
	  Duplex = Duplex || __webpack_require__(324);

	  options = options || {};

	  // object stream flag to indicate whether or not this stream
	  // contains buffers or objects.
	  this.objectMode = !!options.objectMode;

	  if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;

	  // the point at which write() starts returning false
	  // Note: 0 is a valid value, means that we always return false if
	  // the entire buffer is not flushed immediately on write()
	  var hwm = options.highWaterMark;
	  var defaultHwm = this.objectMode ? 16 : 16 * 1024;
	  this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;

	  // cast to ints.
	  this.highWaterMark = Math.floor(this.highWaterMark);

	  // if _final has been called
	  this.finalCalled = false;

	  // drain event flag.
	  this.needDrain = false;
	  // at the start of calling end()
	  this.ending = false;
	  // when end() has been called, and returned
	  this.ended = false;
	  // when 'finish' is emitted
	  this.finished = false;

	  // has it been destroyed
	  this.destroyed = false;

	  // should we decode strings into buffers before passing to _write?
	  // this is here so that some node-core streams can optimize string
	  // handling at a lower level.
	  var noDecode = options.decodeStrings === false;
	  this.decodeStrings = !noDecode;

	  // Crypto is kind of old and crusty.  Historically, its default string
	  // encoding is 'binary' so we have to make this configurable.
	  // Everything else in the universe uses 'utf8', though.
	  this.defaultEncoding = options.defaultEncoding || 'utf8';

	  // not an actual buffer we keep track of, but a measurement
	  // of how much we're waiting to get pushed to some underlying
	  // socket or file.
	  this.length = 0;

	  // a flag to see when we're in the middle of a write.
	  this.writing = false;

	  // when true all writes will be buffered until .uncork() call
	  this.corked = 0;

	  // a flag to be able to tell if the onwrite cb is called immediately,
	  // or on a later tick.  We set this to true at first, because any
	  // actions that shouldn't happen until "later" should generally also
	  // not happen before the first write call.
	  this.sync = true;

	  // a flag to know if we're processing previously buffered items, which
	  // may call the _write() callback in the same tick, so that we don't
	  // end up in an overlapped onwrite situation.
	  this.bufferProcessing = false;

	  // the callback that's passed to _write(chunk,cb)
	  this.onwrite = function (er) {
	    onwrite(stream, er);
	  };

	  // the callback that the user supplies to write(chunk,encoding,cb)
	  this.writecb = null;

	  // the amount that is being written when _write is called.
	  this.writelen = 0;

	  this.bufferedRequest = null;
	  this.lastBufferedRequest = null;

	  // number of pending user-supplied write callbacks
	  // this must be 0 before 'finish' can be emitted
	  this.pendingcb = 0;

	  // emit prefinish if the only thing we're waiting for is _write cbs
	  // This is relevant for synchronous Transform streams
	  this.prefinished = false;

	  // True if the error was already emitted and should not be thrown again
	  this.errorEmitted = false;

	  // count buffered requests
	  this.bufferedRequestCount = 0;

	  // allocate the first CorkedRequest, there is always
	  // one allocated and free to use, and we maintain at most two
	  this.corkedRequestsFree = new CorkedRequest(this);
	}

	WritableState.prototype.getBuffer = function getBuffer() {
	  var current = this.bufferedRequest;
	  var out = [];
	  while (current) {
	    out.push(current);
	    current = current.next;
	  }
	  return out;
	};

	(function () {
	  try {
	    Object.defineProperty(WritableState.prototype, 'buffer', {
	      get: internalUtil.deprecate(function () {
	        return this.getBuffer();
	      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
	    });
	  } catch (_) {}
	})();

	// Test _writableState for inheritance to account for Duplex streams,
	// whose prototype chain only points to Readable.
	var realHasInstance;
	if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
	  realHasInstance = Function.prototype[Symbol.hasInstance];
	  Object.defineProperty(Writable, Symbol.hasInstance, {
	    value: function (object) {
	      if (realHasInstance.call(this, object)) return true;

	      return object && object._writableState instanceof WritableState;
	    }
	  });
	} else {
	  realHasInstance = function (object) {
	    return object instanceof this;
	  };
	}

	function Writable(options) {
	  Duplex = Duplex || __webpack_require__(324);

	  // Writable ctor is applied to Duplexes, too.
	  // `realHasInstance` is necessary because using plain `instanceof`
	  // would return false, as no `_writableState` property is attached.

	  // Trying to use the custom `instanceof` for Writable here will also break the
	  // Node.js LazyTransform implementation, which has a non-trivial getter for
	  // `_writableState` that would lead to infinite recursion.
	  if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
	    return new Writable(options);
	  }

	  this._writableState = new WritableState(options, this);

	  // legacy.
	  this.writable = true;

	  if (options) {
	    if (typeof options.write === 'function') this._write = options.write;

	    if (typeof options.writev === 'function') this._writev = options.writev;

	    if (typeof options.destroy === 'function') this._destroy = options.destroy;

	    if (typeof options.final === 'function') this._final = options.final;
	  }

	  Stream.call(this);
	}

	// Otherwise people can pipe Writable streams, which is just wrong.
	Writable.prototype.pipe = function () {
	  this.emit('error', new Error('Cannot pipe, not readable'));
	};

	function writeAfterEnd(stream, cb) {
	  var er = new Error('write after end');
	  // TODO: defer error events consistently everywhere, not just the cb
	  stream.emit('error', er);
	  processNextTick(cb, er);
	}

	// Checks that a user-supplied chunk is valid, especially for the particular
	// mode the stream is in. Currently this means that `null` is never accepted
	// and undefined/non-string values are only allowed in object mode.
	function validChunk(stream, state, chunk, cb) {
	  var valid = true;
	  var er = false;

	  if (chunk === null) {
	    er = new TypeError('May not write null values to stream');
	  } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
	    er = new TypeError('Invalid non-string/buffer chunk');
	  }
	  if (er) {
	    stream.emit('error', er);
	    processNextTick(cb, er);
	    valid = false;
	  }
	  return valid;
	}

	Writable.prototype.write = function (chunk, encoding, cb) {
	  var state = this._writableState;
	  var ret = false;
	  var isBuf = _isUint8Array(chunk) && !state.objectMode;

	  if (isBuf && !Buffer.isBuffer(chunk)) {
	    chunk = _uint8ArrayToBuffer(chunk);
	  }

	  if (typeof encoding === 'function') {
	    cb = encoding;
	    encoding = null;
	  }

	  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;

	  if (typeof cb !== 'function') cb = nop;

	  if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
	    state.pendingcb++;
	    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
	  }

	  return ret;
	};

	Writable.prototype.cork = function () {
	  var state = this._writableState;

	  state.corked++;
	};

	Writable.prototype.uncork = function () {
	  var state = this._writableState;

	  if (state.corked) {
	    state.corked--;

	    if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
	  }
	};

	Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
	  // node::ParseEncoding() requires lower case.
	  if (typeof encoding === 'string') encoding = encoding.toLowerCase();
	  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
	  this._writableState.defaultEncoding = encoding;
	  return this;
	};

	function decodeChunk(state, chunk, encoding) {
	  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
	    chunk = Buffer.from(chunk, encoding);
	  }
	  return chunk;
	}

	// if we're already writing something, then just put this
	// in the queue, and wait our turn.  Otherwise, call _write
	// If we return false, then we need a drain event, so set that flag.
	function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
	  if (!isBuf) {
	    var newChunk = decodeChunk(state, chunk, encoding);
	    if (chunk !== newChunk) {
	      isBuf = true;
	      encoding = 'buffer';
	      chunk = newChunk;
	    }
	  }
	  var len = state.objectMode ? 1 : chunk.length;

	  state.length += len;

	  var ret = state.length < state.highWaterMark;
	  // we must ensure that previous needDrain will not be reset to false.
	  if (!ret) state.needDrain = true;

	  if (state.writing || state.corked) {
	    var last = state.lastBufferedRequest;
	    state.lastBufferedRequest = {
	      chunk: chunk,
	      encoding: encoding,
	      isBuf: isBuf,
	      callback: cb,
	      next: null
	    };
	    if (last) {
	      last.next = state.lastBufferedRequest;
	    } else {
	      state.bufferedRequest = state.lastBufferedRequest;
	    }
	    state.bufferedRequestCount += 1;
	  } else {
	    doWrite(stream, state, false, len, chunk, encoding, cb);
	  }

	  return ret;
	}

	function doWrite(stream, state, writev, len, chunk, encoding, cb) {
	  state.writelen = len;
	  state.writecb = cb;
	  state.writing = true;
	  state.sync = true;
	  if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
	  state.sync = false;
	}

	function onwriteError(stream, state, sync, er, cb) {
	  --state.pendingcb;

	  if (sync) {
	    // defer the callback if we are being called synchronously
	    // to avoid piling up things on the stack
	    processNextTick(cb, er);
	    // this can emit finish, and it will always happen
	    // after error
	    processNextTick(finishMaybe, stream, state);
	    stream._writableState.errorEmitted = true;
	    stream.emit('error', er);
	  } else {
	    // the caller expect this to happen before if
	    // it is async
	    cb(er);
	    stream._writableState.errorEmitted = true;
	    stream.emit('error', er);
	    // this can emit finish, but finish must
	    // always follow error
	    finishMaybe(stream, state);
	  }
	}

	function onwriteStateUpdate(state) {
	  state.writing = false;
	  state.writecb = null;
	  state.length -= state.writelen;
	  state.writelen = 0;
	}

	function onwrite(stream, er) {
	  var state = stream._writableState;
	  var sync = state.sync;
	  var cb = state.writecb;

	  onwriteStateUpdate(state);

	  if (er) onwriteError(stream, state, sync, er, cb);else {
	    // Check if we're actually ready to finish, but don't emit yet
	    var finished = needFinish(state);

	    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
	      clearBuffer(stream, state);
	    }

	    if (sync) {
	      /*<replacement>*/
	      asyncWrite(afterWrite, stream, state, finished, cb);
	      /*</replacement>*/
	    } else {
	      afterWrite(stream, state, finished, cb);
	    }
	  }
	}

	function afterWrite(stream, state, finished, cb) {
	  if (!finished) onwriteDrain(stream, state);
	  state.pendingcb--;
	  cb();
	  finishMaybe(stream, state);
	}

	// Must force callback to be called on nextTick, so that we don't
	// emit 'drain' before the write() consumer gets the 'false' return
	// value, and has a chance to attach a 'drain' listener.
	function onwriteDrain(stream, state) {
	  if (state.length === 0 && state.needDrain) {
	    state.needDrain = false;
	    stream.emit('drain');
	  }
	}

	// if there's something in the buffer waiting, then process it
	function clearBuffer(stream, state) {
	  state.bufferProcessing = true;
	  var entry = state.bufferedRequest;

	  if (stream._writev && entry && entry.next) {
	    // Fast case, write everything using _writev()
	    var l = state.bufferedRequestCount;
	    var buffer = new Array(l);
	    var holder = state.corkedRequestsFree;
	    holder.entry = entry;

	    var count = 0;
	    var allBuffers = true;
	    while (entry) {
	      buffer[count] = entry;
	      if (!entry.isBuf) allBuffers = false;
	      entry = entry.next;
	      count += 1;
	    }
	    buffer.allBuffers = allBuffers;

	    doWrite(stream, state, true, state.length, buffer, '', holder.finish);

	    // doWrite is almost always async, defer these to save a bit of time
	    // as the hot path ends with doWrite
	    state.pendingcb++;
	    state.lastBufferedRequest = null;
	    if (holder.next) {
	      state.corkedRequestsFree = holder.next;
	      holder.next = null;
	    } else {
	      state.corkedRequestsFree = new CorkedRequest(state);
	    }
	  } else {
	    // Slow case, write chunks one-by-one
	    while (entry) {
	      var chunk = entry.chunk;
	      var encoding = entry.encoding;
	      var cb = entry.callback;
	      var len = state.objectMode ? 1 : chunk.length;

	      doWrite(stream, state, false, len, chunk, encoding, cb);
	      entry = entry.next;
	      // if we didn't call the onwrite immediately, then
	      // it means that we need to wait until it does.
	      // also, that means that the chunk and cb are currently
	      // being processed, so move the buffer counter past them.
	      if (state.writing) {
	        break;
	      }
	    }

	    if (entry === null) state.lastBufferedRequest = null;
	  }

	  state.bufferedRequestCount = 0;
	  state.bufferedRequest = entry;
	  state.bufferProcessing = false;
	}

	Writable.prototype._write = function (chunk, encoding, cb) {
	  cb(new Error('_write() is not implemented'));
	};

	Writable.prototype._writev = null;

	Writable.prototype.end = function (chunk, encoding, cb) {
	  var state = this._writableState;

	  if (typeof chunk === 'function') {
	    cb = chunk;
	    chunk = null;
	    encoding = null;
	  } else if (typeof encoding === 'function') {
	    cb = encoding;
	    encoding = null;
	  }

	  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);

	  // .end() fully uncorks
	  if (state.corked) {
	    state.corked = 1;
	    this.uncork();
	  }

	  // ignore unnecessary end() calls.
	  if (!state.ending && !state.finished) endWritable(this, state, cb);
	};

	function needFinish(state) {
	  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
	}
	function callFinal(stream, state) {
	  stream._final(function (err) {
	    state.pendingcb--;
	    if (err) {
	      stream.emit('error', err);
	    }
	    state.prefinished = true;
	    stream.emit('prefinish');
	    finishMaybe(stream, state);
	  });
	}
	function prefinish(stream, state) {
	  if (!state.prefinished && !state.finalCalled) {
	    if (typeof stream._final === 'function') {
	      state.pendingcb++;
	      state.finalCalled = true;
	      processNextTick(callFinal, stream, state);
	    } else {
	      state.prefinished = true;
	      stream.emit('prefinish');
	    }
	  }
	}

	function finishMaybe(stream, state) {
	  var need = needFinish(state);
	  if (need) {
	    prefinish(stream, state);
	    if (state.pendingcb === 0) {
	      state.finished = true;
	      stream.emit('finish');
	    }
	  }
	  return need;
	}

	function endWritable(stream, state, cb) {
	  state.ending = true;
	  finishMaybe(stream, state);
	  if (cb) {
	    if (state.finished) processNextTick(cb);else stream.once('finish', cb);
	  }
	  state.ended = true;
	  stream.writable = false;
	}

	function onCorkedFinish(corkReq, state, err) {
	  var entry = corkReq.entry;
	  corkReq.entry = null;
	  while (entry) {
	    var cb = entry.callback;
	    state.pendingcb--;
	    cb(err);
	    entry = entry.next;
	  }
	  if (state.corkedRequestsFree) {
	    state.corkedRequestsFree.next = corkReq;
	  } else {
	    state.corkedRequestsFree = corkReq;
	  }
	}

	Object.defineProperty(Writable.prototype, 'destroyed', {
	  get: function () {
	    if (this._writableState === undefined) {
	      return false;
	    }
	    return this._writableState.destroyed;
	  },
	  set: function (value) {
	    // we ignore the value if the stream
	    // has not been initialized yet
	    if (!this._writableState) {
	      return;
	    }

	    // backward compatibility, the user is explicitly
	    // managing destroyed
	    this._writableState.destroyed = value;
	  }
	});

	Writable.prototype.destroy = destroyImpl.destroy;
	Writable.prototype._undestroy = destroyImpl.undestroy;
	Writable.prototype._destroy = function (err, cb) {
	  this.end();
	  cb(err);
	};
	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(10), __webpack_require__(326).setImmediate, (function() { return this; }())))

/***/ }),

/***/ 326:
/***/ (function(module, exports, __webpack_require__) {

	var apply = Function.prototype.apply;

	// DOM APIs, for completeness

	exports.setTimeout = function() {
	  return new Timeout(apply.call(setTimeout, window, arguments), clearTimeout);
	};
	exports.setInterval = function() {
	  return new Timeout(apply.call(setInterval, window, arguments), clearInterval);
	};
	exports.clearTimeout =
	exports.clearInterval = function(timeout) {
	  if (timeout) {
	    timeout.close();
	  }
	};

	function Timeout(id, clearFn) {
	  this._id = id;
	  this._clearFn = clearFn;
	}
	Timeout.prototype.unref = Timeout.prototype.ref = function() {};
	Timeout.prototype.close = function() {
	  this._clearFn.call(window, this._id);
	};

	// Does not start the time, just sets up the members needed.
	exports.enroll = function(item, msecs) {
	  clearTimeout(item._idleTimeoutId);
	  item._idleTimeout = msecs;
	};

	exports.unenroll = function(item) {
	  clearTimeout(item._idleTimeoutId);
	  item._idleTimeout = -1;
	};

	exports._unrefActive = exports.active = function(item) {
	  clearTimeout(item._idleTimeoutId);

	  var msecs = item._idleTimeout;
	  if (msecs >= 0) {
	    item._idleTimeoutId = setTimeout(function onTimeout() {
	      if (item._onTimeout)
	        item._onTimeout();
	    }, msecs);
	  }
	};

	// setimmediate attaches itself to the global object
	__webpack_require__(327);
	exports.setImmediate = setImmediate;
	exports.clearImmediate = clearImmediate;


/***/ }),

/***/ 327:
/***/ (function(module, exports, __webpack_require__) {

	/* WEBPACK VAR INJECTION */(function(global, process) {(function (global, undefined) {
	    "use strict";

	    if (global.setImmediate) {
	        return;
	    }

	    var nextHandle = 1; // Spec says greater than zero
	    var tasksByHandle = {};
	    var currentlyRunningATask = false;
	    var doc = global.document;
	    var registerImmediate;

	    function setImmediate(callback) {
	      // Callback can either be a function or a string
	      if (typeof callback !== "function") {
	        callback = new Function("" + callback);
	      }
	      // Copy function arguments
	      var args = new Array(arguments.length - 1);
	      for (var i = 0; i < args.length; i++) {
	          args[i] = arguments[i + 1];
	      }
	      // Store and register the task
	      var task = { callback: callback, args: args };
	      tasksByHandle[nextHandle] = task;
	      registerImmediate(nextHandle);
	      return nextHandle++;
	    }

	    function clearImmediate(handle) {
	        delete tasksByHandle[handle];
	    }

	    function run(task) {
	        var callback = task.callback;
	        var args = task.args;
	        switch (args.length) {
	        case 0:
	            callback();
	            break;
	        case 1:
	            callback(args[0]);
	            break;
	        case 2:
	            callback(args[0], args[1]);
	            break;
	        case 3:
	            callback(args[0], args[1], args[2]);
	            break;
	        default:
	            callback.apply(undefined, args);
	            break;
	        }
	    }

	    function runIfPresent(handle) {
	        // From the spec: "Wait until any invocations of this algorithm started before this one have completed."
	        // So if we're currently running a task, we'll need to delay this invocation.
	        if (currentlyRunningATask) {
	            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a
	            // "too much recursion" error.
	            setTimeout(runIfPresent, 0, handle);
	        } else {
	            var task = tasksByHandle[handle];
	            if (task) {
	                currentlyRunningATask = true;
	                try {
	                    run(task);
	                } finally {
	                    clearImmediate(handle);
	                    currentlyRunningATask = false;
	                }
	            }
	        }
	    }

	    function installNextTickImplementation() {
	        registerImmediate = function(handle) {
	            process.nextTick(function () { runIfPresent(handle); });
	        };
	    }

	    function canUsePostMessage() {
	        // The test against `importScripts` prevents this implementation from being installed inside a web worker,
	        // where `global.postMessage` means something completely different and can't be used for this purpose.
	        if (global.postMessage && !global.importScripts) {
	            var postMessageIsAsynchronous = true;
	            var oldOnMessage = global.onmessage;
	            global.onmessage = function() {
	                postMessageIsAsynchronous = false;
	            };
	            global.postMessage("", "*");
	            global.onmessage = oldOnMessage;
	            return postMessageIsAsynchronous;
	        }
	    }

	    function installPostMessageImplementation() {
	        // Installs an event handler on `global` for the `message` event: see
	        // * https://developer.mozilla.org/en/DOM/window.postMessage
	        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages

	        var messagePrefix = "setImmediate$" + Math.random() + "$";
	        var onGlobalMessage = function(event) {
	            if (event.source === global &&
	                typeof event.data === "string" &&
	                event.data.indexOf(messagePrefix) === 0) {
	                runIfPresent(+event.data.slice(messagePrefix.length));
	            }
	        };

	        if (global.addEventListener) {
	            global.addEventListener("message", onGlobalMessage, false);
	        } else {
	            global.attachEvent("onmessage", onGlobalMessage);
	        }

	        registerImmediate = function(handle) {
	            global.postMessage(messagePrefix + handle, "*");
	        };
	    }

	    function installMessageChannelImplementation() {
	        var channel = new MessageChannel();
	        channel.port1.onmessage = function(event) {
	            var handle = event.data;
	            runIfPresent(handle);
	        };

	        registerImmediate = function(handle) {
	            channel.port2.postMessage(handle);
	        };
	    }

	    function installReadyStateChangeImplementation() {
	        var html = doc.documentElement;
	        registerImmediate = function(handle) {
	            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
	            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
	            var script = doc.createElement("script");
	            script.onreadystatechange = function () {
	                runIfPresent(handle);
	                script.onreadystatechange = null;
	                html.removeChild(script);
	                script = null;
	            };
	            html.appendChild(script);
	        };
	    }

	    function installSetTimeoutImplementation() {
	        registerImmediate = function(handle) {
	            setTimeout(runIfPresent, 0, handle);
	        };
	    }

	    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.
	    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);
	    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;

	    // Don't get fooled by e.g. browserify environments.
	    if ({}.toString.call(global.process) === "[object process]") {
	        // For Node.js before 0.9
	        installNextTickImplementation();

	    } else if (canUsePostMessage()) {
	        // For non-IE10 modern browsers
	        installPostMessageImplementation();

	    } else if (global.MessageChannel) {
	        // For web workers, where supported
	        installMessageChannelImplementation();

	    } else if (doc && "onreadystatechange" in doc.createElement("script")) {
	        // For IE 6–8
	        installReadyStateChangeImplementation();

	    } else {
	        // For older browsers
	        installSetTimeoutImplementation();
	    }

	    attachTo.setImmediate = setImmediate;
	    attachTo.clearImmediate = clearImmediate;
	}(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self));

	/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(10)))

/***/ }),

/***/ 328:
/***/ (function(module, exports) {

	/* WEBPACK VAR INJECTION */(function(global) {
	/**
	 * Module exports.
	 */

	module.exports = deprecate;

	/**
	 * Mark that a method should not be used.
	 * Returns a modified function which warns once by default.
	 *
	 * If `localStorage.noDeprecation = true` is set, then it is a no-op.
	 *
	 * If `localStorage.throwDeprecation = true` is set, then deprecated functions
	 * will throw an Error when invoked.
	 *
	 * If `localStorage.traceDeprecation = true` is set, then deprecated functions
	 * will invoke `console.trace()` instead of `console.error()`.
	 *
	 * @param {Function} fn - the function to deprecate
	 * @param {String} msg - the string to print to the console when `fn` is invoked
	 * @returns {Function} a new "deprecated" version of `fn`
	 * @api public
	 */

	function deprecate (fn, msg) {
	  if (config('noDeprecation')) {
	    return fn;
	  }

	  var warned = false;
	  function deprecated() {
	    if (!warned) {
	      if (config('throwDeprecation')) {
	        throw new Error(msg);
	      } else if (config('traceDeprecation')) {
	        console.trace(msg);
	      } else {
	        console.warn(msg);
	      }
	      warned = true;
	    }
	    return fn.apply(this, arguments);
	  }

	  return deprecated;
	}

	/**
	 * Checks `localStorage` for boolean values for the given `name`.
	 *
	 * @param {String} name
	 * @returns {Boolean}
	 * @api private
	 */

	function config (name) {
	  // accessing global.localStorage can trigger a DOMException in sandboxed iframes
	  try {
	    if (!global.localStorage) return false;
	  } catch (_) {
	    return false;
	  }
	  var val = global.localStorage[name];
	  if (null == val) return false;
	  return String(val).toLowerCase() === 'true';
	}

	/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))

/***/ }),

/***/ 329:
/***/ (function(module, exports, __webpack_require__) {

	'use strict';

	var Buffer = __webpack_require__(317).Buffer;

	var isEncoding = Buffer.isEncoding || function (encoding) {
	  encoding = '' + encoding;
	  switch (encoding && encoding.toLowerCase()) {
	    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':
	      return true;
	    default:
	      return false;
	  }
	};

	function _normalizeEncoding(enc) {
	  if (!enc) return 'utf8';
	  var retried;
	  while (true) {
	    switch (enc) {
	      case 'utf8':
	      case 'utf-8':
	        return 'utf8';
	      case 'ucs2':
	      case 'ucs-2':
	      case 'utf16le':
	      case 'utf-16le':
	        return 'utf16le';
	      case 'latin1':
	      case 'binary':
	        return 'latin1';
	      case 'base64':
	      case 'ascii':
	      case 'hex':
	        return enc;
	      default:
	        if (retried) return; // undefined
	        enc = ('' + enc).toLowerCase();
	        retried = true;
	    }
	  }
	};

	// Do not cache `Buffer.isEncoding` when checking encoding names as some
	// modules monkey-patch it to support additional encodings
	function normalizeEncoding(enc) {
	  var nenc = _normalizeEncoding(enc);
	  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
	  return nenc || enc;
	}

	// StringDecoder provides an interface for efficiently splitting a series of
	// buffers into a series of JS strings without breaking apart multi-byte
	// characters.
	exports.StringDecoder = StringDecoder;
	function StringDecoder(encoding) {
	  this.encoding = normalizeEncoding(encoding);
	  var nb;
	  switch (this.encoding) {
	    case 'utf16le':
	      this.text = utf16Text;
	      this.end = utf16End;
	      nb = 4;
	      break;
	    case 'utf8':
	      this.fillLast = utf8FillLast;
	      nb = 4;
	      break;
	    case 'base64':
	      this.text = base64Text;
	      this.end = base64End;
	      nb = 3;
	      break;
	    default:
	      this.write = simpleWrite;
	      this.end = simpleEnd;
	      return;
	  }
	  this.lastNeed = 0;
	  this.lastTotal = 0;
	  this.lastChar = Buffer.allocUnsafe(nb);
	}

	StringDecoder.prototype.write = function (buf) {
	  if (buf.length === 0) return '';
	  var r;
	  var i;
	  if (this.lastNeed) {
	    r = this.fillLast(buf);
	    if (r === undefined) return '';
	    i = this.lastNeed;
	    this.lastNeed = 0;
	  } else {
	    i = 0;
	  }
	  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
	  return r || '';
	};

	StringDecoder.prototype.end = utf8End;

	// Returns only complete characters in a Buffer
	StringDecoder.prototype.text = utf8Text;

	// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
	StringDecoder.prototype.fillLast = function (buf) {
	  if (this.lastNeed <= buf.length) {
	    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
	    return this.lastChar.toString(this.encoding, 0, this.lastTotal);
	  }
	  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
	  this.lastNeed -= buf.length;
	};

	// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
	// continuation byte.
	function utf8CheckByte(byte) {
	  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
	  return -1;
	}

	// Checks at most 3 bytes at the end of a Buffer in order to detect an
	// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
	// needed to complete the UTF-8 character (if applicable) are returned.
	function utf8CheckIncomplete(self, buf, i) {
	  var j = buf.length - 1;
	  if (j < i) return 0;
	  var nb = utf8CheckByte(buf[j]);
	  if (nb >= 0) {
	    if (nb > 0) self.lastNeed = nb - 1;
	    return nb;
	  }
	  if (--j < i) return 0;
	  nb = utf8CheckByte(buf[j]);
	  if (nb >= 0) {
	    if (nb > 0) self.lastNeed = nb - 2;
	    return nb;
	  }
	  if (--j < i) return 0;
	  nb = utf8CheckByte(buf[j]);
	  if (nb >= 0) {
	    if (nb > 0) {
	      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
	    }
	    return nb;
	  }
	  return 0;
	}

	// Validates as many continuation bytes for a multi-byte UTF-8 character as
	// needed or are available. If we see a non-continuation byte where we expect
	// one, we "replace" the validated continuation bytes we've seen so far with
	// UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding
	// behavior. The continuation byte check is included three times in the case
	// where all of the continuation bytes for a character exist in the same buffer.
	// It is also done this way as a slight performance increase instead of using a
	// loop.
	function utf8CheckExtraBytes(self, buf, p) {
	  if ((buf[0] & 0xC0) !== 0x80) {
	    self.lastNeed = 0;
	    return '\ufffd'.repeat(p);
	  }
	  if (self.lastNeed > 1 && buf.length > 1) {
	    if ((buf[1] & 0xC0) !== 0x80) {
	      self.lastNeed = 1;
	      return '\ufffd'.repeat(p + 1);
	    }
	    if (self.lastNeed > 2 && buf.length > 2) {
	      if ((buf[2] & 0xC0) !== 0x80) {
	        self.lastNeed = 2;
	        return '\ufffd'.repeat(p + 2);
	      }
	    }
	  }
	}

	// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
	function utf8FillLast(buf) {
	  var p = this.lastTotal - this.lastNeed;
	  var r = utf8CheckExtraBytes(this, buf, p);
	  if (r !== undefined) return r;
	  if (this.lastNeed <= buf.length) {
	    buf.copy(this.lastChar, p, 0, this.lastNeed);
	    return this.lastChar.toString(this.encoding, 0, this.lastTotal);
	  }
	  buf.copy(this.lastChar, p, 0, buf.length);
	  this.lastNeed -= buf.length;
	}

	// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
	// partial character, the character's bytes are buffered until the required
	// number of bytes are available.
	function utf8Text(buf, i) {
	  var total = utf8CheckIncomplete(this, buf, i);
	  if (!this.lastNeed) return buf.toString('utf8', i);
	  this.lastTotal = total;
	  var end = buf.length - (total - this.lastNeed);
	  buf.copy(this.lastChar, 0, end);
	  return buf.toString('utf8', i, end);
	}

	// For UTF-8, a replacement character for each buffered byte of a (partial)
	// character needs to be added to the output.
	function utf8End(buf) {
	  var r = buf && buf.length ? this.write(buf) : '';
	  if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed);
	  return r;
	}

	// UTF-16LE typically needs two bytes per character, but even if we have an even
	// number of bytes available, we need to check if we end on a leading/high
	// surrogate. In that case, we need to wait for the next two bytes in order to
	// decode the last character properly.
	function utf16Text(buf, i) {
	  if ((buf.length - i) % 2 === 0) {
	    var r = buf.toString('utf16le', i);
	    if (r) {
	      var c = r.charCodeAt(r.length - 1);
	      if (c >= 0xD800 && c <= 0xDBFF) {
	        this.lastNeed = 2;
	        this.lastTotal = 4;
	        this.lastChar[0] = buf[buf.length - 2];
	        this.lastChar[1] = buf[buf.length - 1];
	        return r.slice(0, -1);
	      }
	    }
	    return r;
	  }
	  this.lastNeed = 1;
	  this.lastTotal = 2;
	  this.lastChar[0] = buf[buf.length - 1];
	  return buf.toString('utf16le', i, buf.length - 1);
	}

	// For UTF-16LE we do not explicitly append special replacement characters if we
	// end on a partial character, we simply let v8 handle that.
	function utf16End(buf) {
	  var r = buf && buf.length ? this.write(buf) : '';
	  if (this.lastNeed) {
	    var end = this.lastTotal - this.lastNeed;
	    return r + this.lastChar.toString('utf16le', 0, end);
	  }
	  return r;
	}

	function base64Text(buf, i) {
	  var n = (buf.length - i) % 3;
	  if (n === 0) return buf.toString('base64', i);
	  this.lastNeed = 3 - n;
	  this.lastTotal = 3;
	  if (n === 1) {
	    this.lastChar[0] = buf[buf.length - 1];
	  } else {
	    this.lastChar[0] = buf[buf.length - 2];
	    this.lastChar[1] = buf[buf.length - 1];
	  }
	  return buf.toString('base64', i, buf.length - n);
	}

	function base64End(buf) {
	  var r = buf && buf.length ? this.write(buf) : '';
	  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
	  return r;
	}

	// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
	function simpleWrite(buf) {
	  return buf.toString(this.encoding);
	}

	function simpleEnd(buf) {
	  return buf && buf.length ? this.write(buf) : '';
	}

/***/ }),

/***/ 330:
/***/ (function(module, exports, __webpack_require__) {

	// Copyright Joyent, Inc. and other Node contributors.
	//
	// Permission is hereby granted, free of charge, to any person obtaining a
	// copy of this software and associated documentation files (the
	// "Software"), to deal in the Software without restriction, including
	// without limitation the rights to use, copy, modify, merge, publish,
	// distribute, sublicense, and/or sell copies of the Software, and to permit
	// persons to whom the Software is furnished to do so, subject to the
	// following conditions:
	//
	// The above copyright notice and this permission notice shall be included
	// in all copies or substantial portions of the Software.
	//
	// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
	// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
	// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
	// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
	// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
	// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
	// USE OR OTHER DEALINGS IN THE SOFTWARE.

	// a transform stream is a readable/writable stream where you do
	// something with the data.  Sometimes it's called a "filter",
	// but that's not a great name for it, since that implies a thing where
	// some bits pass through, and others are simply ignored.  (That would
	// be a valid example of a transform, of course.)
	//
	// While the output is causally related to the input, it's not a
	// necessarily symmetric or synchronous transformation.  For example,
	// a zlib stream might take multiple plain-text writes(), and then
	// emit a single compressed chunk some time in the future.
	//
	// Here's how this works:
	//
	// The Transform stream has all the aspects of the readable and writable
	// stream classes.  When you write(chunk), that calls _write(chunk,cb)
	// internally, and returns false if there's a lot of pending writes
	// buffered up.  When you call read(), that calls _read(n) until
	// there's enough pending readable data buffered up.
	//
	// In a transform stream, the written data is placed in a buffer.  When
	// _read(n) is called, it transforms the queued up data, calling the
	// buffered _write cb's as it consumes chunks.  If consuming a single
	// written chunk would result in multiple output chunks, then the first
	// outputted bit calls the readcb, and subsequent chunks just go into
	// the read buffer, and will cause it to emit 'readable' if necessary.
	//
	// This way, back-pressure is actually determined by the reading side,
	// since _read has to be called to start processing a new chunk.  However,
	// a pathological inflate type of transform can cause excessive buffering
	// here.  For example, imagine a stream where every byte of input is
	// interpreted as an integer from 0-255, and then results in that many
	// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in
	// 1kb of data being output.  In this case, you could write a very small
	// amount of input, and end up with a very large amount of output.  In
	// such a pathological inflating mechanism, there'd be no way to tell
	// the system to stop doing the transform.  A single 4MB write could
	// cause the system to run out of memory.
	//
	// However, even in such a pathological case, only a single written chunk
	// would be consumed, and then the rest would wait (un-transformed) until
	// the results of the previous transformed chunk were consumed.

	'use strict';

	module.exports = Transform;

	var Duplex = __webpack_require__(324);

	/*<replacement>*/
	var util = __webpack_require__(320);
	util.inherits = __webpack_require__(312);
	/*</replacement>*/

	util.inherits(Transform, Duplex);

	function TransformState(stream) {
	  this.afterTransform = function (er, data) {
	    return afterTransform(stream, er, data);
	  };

	  this.needTransform = false;
	  this.transforming = false;
	  this.writecb = null;
	  this.writechunk = null;
	  this.writeencoding = null;
	}

	function afterTransform(stream, er, data) {
	  var ts = stream._transformState;
	  ts.transforming = false;

	  var cb = ts.writecb;

	  if (!cb) {
	    return stream.emit('error', new Error('write callback called multiple times'));
	  }

	  ts.writechunk = null;
	  ts.writecb = null;

	  if (data !== null && data !== undefined) stream.push(data);

	  cb(er);

	  var rs = stream._readableState;
	  rs.reading = false;
	  if (rs.needReadable || rs.length < rs.highWaterMark) {
	    stream._read(rs.highWaterMark);
	  }
	}

	function Transform(options) {
	  if (!(this instanceof Transform)) return new Transform(options);

	  Duplex.call(this, options);

	  this._transformState = new TransformState(this);

	  var stream = this;

	  // start out asking for a readable event once data is transformed.
	  this._readableState.needReadable = true;

	  // we have implemented the _read method, and done the other things
	  // that Readable wants before the first _read call, so unset the
	  // sync guard flag.
	  this._readableState.sync = false;

	  if (options) {
	    if (typeof options.transform === 'function') this._transform = options.transform;

	    if (typeof options.flush === 'function') this._flush = options.flush;
	  }

	  // When the writable side finishes, then flush out anything remaining.
	  this.once('prefinish', function () {
	    if (typeof this._flush === 'function') this._flush(function (er, data) {
	      done(stream, er, data);
	    });else done(stream);
	  });
	}

	Transform.prototype.push = function (chunk, encoding) {
	  this._transformState.needTransform = false;
	  return Duplex.prototype.push.call(this, chunk, encoding);
	};

	// This is the part where you do stuff!
	// override this function in implementation classes.
	// 'chunk' is an input chunk.
	//
	// Call `push(newChunk)` to pass along transformed output
	// to the readable side.  You may call 'push' zero or more times.
	//
	// Call `cb(err)` when you are done with this chunk.  If you pass
	// an error, then that'll put the hurt on the whole operation.  If you
	// never call cb(), then you'll never get another chunk.
	Transform.prototype._transform = function (chunk, encoding, cb) {
	  throw new Error('_transform() is not implemented');
	};

	Transform.prototype._write = function (chunk, encoding, cb) {
	  var ts = this._transformState;
	  ts.writecb = cb;
	  ts.writechunk = chunk;
	  ts.writeencoding = encoding;
	  if (!ts.transforming) {
	    var rs = this._readableState;
	    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
	  }
	};

	// Doesn't matter what the args are here.
	// _transform does all the work.
	// That we got here means that the readable side wants more data.
	Transform.prototype._read = function (n) {
	  var ts = this._transformState;

	  if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
	    ts.transforming = true;
	    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
	  } else {
	    // mark that we need a transform, so that any data that comes in
	    // will get processed, now that we've asked for it.
	    ts.needTransform = true;
	  }
	};

	Transform.prototype._destroy = function (err, cb) {
	  var _this = this;

	  Duplex.prototype._destroy.call(this, err, function (err2) {
	    cb(err2);
	    _this.emit('close');
	  });
	};

	function done(stream, er, data) {
	  if (er) return stream.emit('error', er);

	  if (data !== null && data !== undefined) stream.push(data);

	  // if there's nothing in the write buffer, then that means
	  // that nothing more will ever be provided
	  var ws = stream._writableState;
	  var ts = stream._transformState;

	  if (ws.length) throw new Error('Calling transform done when ws.length != 0');

	  if (ts.transforming) throw new Error('Calling transform done when still transforming');

	  return stream.push(null);
	}

/***/ }),

/***/ 331:
/***/ (function(module, exports, __webpack_require__) {

	// Copyright Joyent, Inc. and other Node contributors.
	//
	// Permission is hereby granted, free of charge, to any person obtaining a
	// copy of this software and associated documentation files (the
	// "Software"), to deal in the Software without restriction, including
	// without limitation the rights to use, copy, modify, merge, publish,
	// distribute, sublicense, and/or sell copies of the Software, and to permit
	// persons to whom the Software is furnished to do so, subject to the
	// following conditions:
	//
	// The above copyright notice and this permission notice shall be included
	// in all copies or substantial portions of the Software.
	//
	// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
	// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
	// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
	// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
	// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
	// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
	// USE OR OTHER DEALINGS IN THE SOFTWARE.

	// a passthrough stream.
	// basically just the most minimal sort of Transform stream.
	// Every written chunk gets output as-is.

	'use strict';

	module.exports = PassThrough;

	var Transform = __webpack_require__(330);

	/*<replacement>*/
	var util = __webpack_require__(320);
	util.inherits = __webpack_require__(312);
	/*</replacement>*/

	util.inherits(PassThrough, Transform);

	function PassThrough(options) {
	  if (!(this instanceof PassThrough)) return new PassThrough(options);

	  Transform.call(this, options);
	}

	PassThrough.prototype._transform = function (chunk, encoding, cb) {
	  cb(null, chunk);
	};

/***/ }),

/***/ 332:
/***/ (function(module, exports, __webpack_require__) {

	module.exports = __webpack_require__(325);


/***/ }),

/***/ 333:
/***/ (function(module, exports, __webpack_require__) {

	module.exports = __webpack_require__(324);


/***/ }),

/***/ 334:
/***/ (function(module, exports, __webpack_require__) {

	module.exports = __webpack_require__(313).Transform


/***/ }),

/***/ 335:
/***/ (function(module, exports, __webpack_require__) {

	module.exports = __webpack_require__(313).PassThrough


/***/ }),

/***/ 336:
/***/ (function(module, exports, __webpack_require__) {

	// Copyright Joyent, Inc. and other Node contributors.
	//
	// Permission is hereby granted, free of charge, to any person obtaining a
	// copy of this software and associated documentation files (the
	// "Software"), to deal in the Software without restriction, including
	// without limitation the rights to use, copy, modify, merge, publish,
	// distribute, sublicense, and/or sell copies of the Software, and to permit
	// persons to whom the Software is furnished to do so, subject to the
	// following conditions:
	//
	// The above copyright notice and this permission notice shall be included
	// in all copies or substantial portions of the Software.
	//
	// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
	// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
	// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
	// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
	// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
	// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
	// USE OR OTHER DEALINGS IN THE SOFTWARE.

	var Buffer = __webpack_require__(318).Buffer;

	var isBufferEncoding = Buffer.isEncoding
	  || function(encoding) {
	       switch (encoding && encoding.toLowerCase()) {
	         case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;
	         default: return false;
	       }
	     }


	function assertEncoding(encoding) {
	  if (encoding && !isBufferEncoding(encoding)) {
	    throw new Error('Unknown encoding: ' + encoding);
	  }
	}

	// StringDecoder provides an interface for efficiently splitting a series of
	// buffers into a series of JS strings without breaking apart multi-byte
	// characters. CESU-8 is handled as part of the UTF-8 encoding.
	//
	// @TODO Handling all encodings inside a single object makes it very difficult
	// to reason about this code, so it should be split up in the future.
	// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
	// points as used by CESU-8.
	var StringDecoder = exports.StringDecoder = function(encoding) {
	  this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
	  assertEncoding(encoding);
	  switch (this.encoding) {
	    case 'utf8':
	      // CESU-8 represents each of Surrogate Pair by 3-bytes
	      this.surrogateSize = 3;
	      break;
	    case 'ucs2':
	    case 'utf16le':
	      // UTF-16 represents each of Surrogate Pair by 2-bytes
	      this.surrogateSize = 2;
	      this.detectIncompleteChar = utf16DetectIncompleteChar;
	      break;
	    case 'base64':
	      // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
	      this.surrogateSize = 3;
	      this.detectIncompleteChar = base64DetectIncompleteChar;
	      break;
	    default:
	      this.write = passThroughWrite;
	      return;
	  }

	  // Enough space to store all bytes of a single character. UTF-8 needs 4
	  // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
	  this.charBuffer = new Buffer(6);
	  // Number of bytes received for the current incomplete multi-byte character.
	  this.charReceived = 0;
	  // Number of bytes expected for the current incomplete multi-byte character.
	  this.charLength = 0;
	};


	// write decodes the given buffer and returns it as JS string that is
	// guaranteed to not contain any partial multi-byte characters. Any partial
	// character found at the end of the buffer is buffered up, and will be
	// returned when calling write again with the remaining bytes.
	//
	// Note: Converting a Buffer containing an orphan surrogate to a String
	// currently works, but converting a String to a Buffer (via `new Buffer`, or
	// Buffer#write) will replace incomplete surrogates with the unicode
	// replacement character. See https://codereview.chromium.org/121173009/ .
	StringDecoder.prototype.write = function(buffer) {
	  var charStr = '';
	  // if our last write ended with an incomplete multibyte character
	  while (this.charLength) {
	    // determine how many remaining bytes this buffer has to offer for this char
	    var available = (buffer.length >= this.charLength - this.charReceived) ?
	        this.charLength - this.charReceived :
	        buffer.length;

	    // add the new bytes to the char buffer
	    buffer.copy(this.charBuffer, this.charReceived, 0, available);
	    this.charReceived += available;

	    if (this.charReceived < this.charLength) {
	      // still not enough chars in this buffer? wait for more ...
	      return '';
	    }

	    // remove bytes belonging to the current character from the buffer
	    buffer = buffer.slice(available, buffer.length);

	    // get the character that was split
	    charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);

	    // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
	    var charCode = charStr.charCodeAt(charStr.length - 1);
	    if (charCode >= 0xD800 && charCode <= 0xDBFF) {
	      this.charLength += this.surrogateSize;
	      charStr = '';
	      continue;
	    }
	    this.charReceived = this.charLength = 0;

	    // if there are no more bytes in this buffer, just emit our char
	    if (buffer.length === 0) {
	      return charStr;
	    }
	    break;
	  }

	  // determine and set charLength / charReceived
	  this.detectIncompleteChar(buffer);

	  var end = buffer.length;
	  if (this.charLength) {
	    // buffer the incomplete character bytes we got
	    buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
	    end -= this.charReceived;
	  }

	  charStr += buffer.toString(this.encoding, 0, end);

	  var end = charStr.length - 1;
	  var charCode = charStr.charCodeAt(end);
	  // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
	  if (charCode >= 0xD800 && charCode <= 0xDBFF) {
	    var size = this.surrogateSize;
	    this.charLength += size;
	    this.charReceived += size;
	    this.charBuffer.copy(this.charBuffer, size, 0, size);
	    buffer.copy(this.charBuffer, 0, 0, size);
	    return charStr.substring(0, end);
	  }

	  // or just emit the charStr
	  return charStr;
	};

	// detectIncompleteChar determines if there is an incomplete UTF-8 character at
	// the end of the given buffer. If so, it sets this.charLength to the byte
	// length that character, and sets this.charReceived to the number of bytes
	// that are available for this character.
	StringDecoder.prototype.detectIncompleteChar = function(buffer) {
	  // determine how many bytes we have to check at the end of this buffer
	  var i = (buffer.length >= 3) ? 3 : buffer.length;

	  // Figure out if one of the last i bytes of our buffer announces an
	  // incomplete char.
	  for (; i > 0; i--) {
	    var c = buffer[buffer.length - i];

	    // See http://en.wikipedia.org/wiki/UTF-8#Description

	    // 110XXXXX
	    if (i == 1 && c >> 5 == 0x06) {
	      this.charLength = 2;
	      break;
	    }

	    // 1110XXXX
	    if (i <= 2 && c >> 4 == 0x0E) {
	      this.charLength = 3;
	      break;
	    }

	    // 11110XXX
	    if (i <= 3 && c >> 3 == 0x1E) {
	      this.charLength = 4;
	      break;
	    }
	  }
	  this.charReceived = i;
	};

	StringDecoder.prototype.end = function(buffer) {
	  var res = '';
	  if (buffer && buffer.length)
	    res = this.write(buffer);

	  if (this.charReceived) {
	    var cr = this.charReceived;
	    var buf = this.charBuffer;
	    var enc = this.encoding;
	    res += buf.slice(0, cr).toString(enc);
	  }

	  return res;
	};

	function passThroughWrite(buffer) {
	  return buffer.toString(this.encoding);
	}

	function utf16DetectIncompleteChar(buffer) {
	  this.charReceived = buffer.length % 2;
	  this.charLength = this.charReceived ? 2 : 0;
	}

	function base64DetectIncompleteChar(buffer) {
	  this.charReceived = buffer.length % 3;
	  this.charLength = this.charReceived ? 3 : 0;
	}


/***/ }),

/***/ 337:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n.view---modules-nav-enterprise---7-0-0---2qFFG {\n    height: 25px;\n    padding-left: 10px;\n    padding-right: 20px;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---2qFFG"
	};

/***/ }),

/***/ 338:
/***/ (function(module, exports) {

	module.exports = "\n<h3><%= _(\"Disconnected from Splunk server\").t() %></h3>\n<p><%= _(\"Your network connection may have been lost or Splunk server may be down.\").t() %></p>\n<div class=\"<%=css.spinnerWrapper%>\" data-role='spinner-wrapper'></div>\n"

/***/ }),

/***/ 339:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n.view---modules-nav-enterprise---7-0-0---2SkLV {\n    text-align: center;\n}\n\n.spinnerWrapper---modules-nav-enterprise---7-0-0---2l2ko {\n    margin: 10px 0 10px 50%;\n    float:left;\n    transform: translateX(-50%);\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---2SkLV",
		"spinnerWrapper": "spinnerWrapper---modules-nav-enterprise---7-0-0---2l2ko"
	};

/***/ }),

/***/ 340:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(283), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n.backdrop---modules-nav-enterprise---7-0-0---OW5qp {\n    z-index: 1051;\n}\n\n.view---modules-nav-enterprise---7-0-0---3WUw8 {\n    z-index: 1052;\n    padding: 20px;\n}\n", ""]);

	// exports
	exports.locals = {
		"backdrop": "backdrop---modules-nav-enterprise---7-0-0---OW5qp " + __webpack_require__(283).locals["backdrop"] + "",
		"view": "view---modules-nav-enterprise---7-0-0---3WUw8 " + __webpack_require__(283).locals["view"] + ""
	};

/***/ }),

/***/ 341:
/***/ (function(module, exports) {

	module.exports = "\n    <li><a data-action=\"instances\" data-link-external=\"external\" href=\"<%=productMenuUriPrefix%>apex/RMEC_InstancePage\" target=\"productlink\"><%- _(\"Instances\").t() %> </a></li>\n    <% if(isAdmin) {%>\n        <li><a data-action=\"upgrade\" data-link-external=\"external\" href=\"<%=productMenuUriPrefix%>apex/RMEC_InstancePage\" target=\"productlink\"><%- _(\"Upgrade\").t() %> </a></li>\n        <li><a data-action=\"invite\" data-link-external=\"external\" href=\"<%=productMenuUriPrefix%>apex/RMEC_InvitePage\" target=\"productlink\"><%- _(\"Invite Users\").t() %> </a></li>\n    <% }%>\n"

/***/ }),

/***/ 342:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(268), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n.view---modules-nav-enterprise---7-0-0---2ls55 {\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---2ls55 " + __webpack_require__(268).locals["menu"] + ""
	};

/***/ }),

/***/ 343:
/***/ (function(module, exports) {

	module.exports = "<a href=\"<%-homeLink%>\" class=\"<%=css.brand%>\" title=\"splunk &gt; <%- _('listen to your data').t() %>\" data-action=\"home\"><span class=\"<%=css.gt%>\" data-role=\"gt\"></span></a>\n<div class=\"<%=css.nav%>\" data-role=\"left-nav\">\n</div>\n<div class=\"<%=css.navRight%>\" data-role=\"right-nav\">\n</div>\n"

/***/ }),

/***/ 344:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(271), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n.view---modules-nav-enterprise---7-0-0---3tpsx {\n    display: block;\n    float: left;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---3tpsx " + __webpack_require__(271).locals["view"] + ""
	};

/***/ }),

/***/ 345:
/***/ (function(module, exports) {

	module.exports = "<% if(!navData.submenu){return \"\";}%>\n<% if(needsBack){%>\n<li>\n    <a data-role=\"back\" href=\"#\"> <%-_(\"Back\").t()%>\n    </a>\n</li>\n<%}%>\n<% _.each(navData.submenu, function(i, index) { %>\n<li  class=\"<%=i.divider ? css.divider:''%> <%= needsBack && index === 0 ? css.startGroup :''%>\" <%= i.divider ? 'data-role=\"divider\"':''%>>\n    <% if(!i.divider){ %>\n        <% if(i.submenu && i.submenu.length>0){ %>\n            <a href=\"#\" data-index=\"<%=index%>\" data-has-children=\"true\"><span class=\"<%=css.submenuIcon%>\" data-role='submenu-icon'></span><%- _.unescape(_(i.label).t()) %></a>\n        <%}else if (i.hasOwnProperty('reportUri')) { %>\n            <% var dispatchView = i.hasOwnProperty('dispatchView') && i.dispatchView === 'pivot' ? 'pivot' : 'search' %>\n            <a href=\"<%=i.reportUri%>\" class=\"<%=css.primaryLink%>\" data-dispatch-view=\"<%= dispatchView %>\"><%- _.unescape(_(i.label).t()) %></a>\n            <a href=\"<%=i.uri%>\" class=\"<%-css.secondaryLink%>\" data-role=\"secondary-report-link\" data-dispatch-view=\"<%= dispatchView %>\"></a>\n        <%} else { %>\n            <a href=\"<%=i.uri%>\"><%- _.unescape(_(i.label).t()) %></a>\n        <%}%>\n    <%}%>\n</li>\n<% }); %>\n"

/***/ }),

/***/ 346:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(268), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Splunk: Component: App-Nav */\n/*  ========================== */\n/*  app nav componet used on app bar and previously on the home page. */\n\n/*  App Boxes */\n/*  ----------------------------- */\n\n\n.view---modules-nav-enterprise---7-0-0---3BWFO {\n    transition: transform 200ms;\n    max-height:calc(100vh - 100px);\n    width: 300px;\n    box-sizing: border-box;\n    position: absolute;\n    left: 0;\n    top: 0;\n    transform: translateX(0%);\n}\n\n\n.view---modules-nav-enterprise---7-0-0---3BWFO:first-child:last-child {\n    position: static;\n}\n\n\n.view---modules-nav-enterprise---7-0-0---3BWFO ::-webkit-scrollbar {\n    width: 7px;\n}\n\n\n.view---modules-nav-enterprise---7-0-0---3BWFO ::-webkit-scrollbar-track {\n    box-shadow: inset 0 0 6px rgba(0,0,0,0.1);\n    border-radius: 10px;\n}\n\n\n.view---modules-nav-enterprise---7-0-0---3BWFO ::-webkit-scrollbar-thumb {\n    border-radius: 10px;\n    background: rgba(107,107,107,0.4);\n    box-shadow: inset 0 0 6px rgba(0,0,0,0.2);\n}\n\n\n.view---modules-nav-enterprise---7-0-0---3BWFO + .view---modules-nav-enterprise---7-0-0---3BWFO {\n    border-top: none;\n}\n.divider---modules-nav-enterprise---7-0-0---2UK_E {\n}\n\n.primaryLink---modules-nav-enterprise---7-0-0---2cVZQ {\n}\n\n.secondaryLink---modules-nav-enterprise---7-0-0---1jAsK {\n}\n\n.startGroup---modules-nav-enterprise---7-0-0---24HzT {\n}\n\n.submenuIcon---modules-nav-enterprise---7-0-0---2pJ2S {\n    float: right;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---3BWFO " + __webpack_require__(268).locals["menu"] + "",
		"divider": "divider---modules-nav-enterprise---7-0-0---2UK_E " + __webpack_require__(268).locals["divider"] + "",
		"primaryLink": "primaryLink---modules-nav-enterprise---7-0-0---2cVZQ " + __webpack_require__(268).locals["primaryLink"] + "",
		"secondaryLink": "secondaryLink---modules-nav-enterprise---7-0-0---1jAsK " + __webpack_require__(268).locals["secondaryLink"] + "",
		"startGroup": "startGroup---modules-nav-enterprise---7-0-0---24HzT " + __webpack_require__(268).locals["startGroup"] + "",
		"submenuIcon": "submenuIcon---modules-nav-enterprise---7-0-0---2pJ2S"
	};

/***/ }),

/***/ 347:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Splunk: Component: App-Nav */\n/*  ========================== */\n/*  app nav componet used on app bar and previously on the home page. */\n\n/*  App Boxes */\n/*  ----------------------------- */\n\n\n.view---modules-nav-enterprise---7-0-0---2dlPN {\n\tborder-radius: 4px;\n\tposition:relative;\n    width: 300px;\n    overflow:hidden;\n    transition: height 200ms;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---2dlPN"
	};

/***/ }),

/***/ 348:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n/* toggle */\n\n.view---modules-nav-enterprise---7-0-0---14_Tp {\n    color: #fff;\n    background: transparent;\n    padding:0 15px;\n\n    line-height: 40px;\n\n    position: relative;\n    white-space: nowrap;\n    display: block;\n    float: left;\n    text-decoration: none;\n}\n\n/*  hover / focus state */\n\n.view---modules-nav-enterprise---7-0-0---14_Tp:first-child {\n    padding-left: 20px;\n}\n\n.view---modules-nav-enterprise---7-0-0---14_Tp:hover {\n    background: rgba(255,255,255,0.07);\n    color: inherit;\n    text-decoration: none;\n}\n\n/*  selected */\n\n.view---modules-nav-enterprise---7-0-0---14_Tp[data-active] {\n    background-color: rgba(0, 0, 0, 0.08)\n}\n\n.view---modules-nav-enterprise---7-0-0---14_Tp:focus {\n    box-shadow: inset 0 0 8px 0 rgba(255,255,255,0.07);\n    background: rgba(255,255,255,0.11);\n    text-decoration: none;\n}\n\n.label---modules-nav-enterprise---7-0-0---1Xo01:not(:last-child) {\n    padding-right: 3px;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---14_Tp",
		"label": "label---modules-nav-enterprise---7-0-0---1Xo01"
	};

/***/ }),

/***/ 349:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n.view---modules-nav-enterprise---7-0-0---2d_9P {\n    float: left;\n    position: relative;\n}\n.divider---modules-nav-enterprise---7-0-0---11l2N {\n    display: inline-block;\n    height: 10px;\n    margin: 0 15px;\n    opacity: 0.2;\n}\n.appNavInner---modules-nav-enterprise---7-0-0---1yeMH {\n    float: left;\n}\n\n/*  Lite UI */\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---2d_9P",
		"divider": "divider---modules-nav-enterprise---7-0-0---11l2N",
		"appNavInner": "appNavInner---modules-nav-enterprise---7-0-0---1yeMH"
	};

/***/ }),

/***/ 350:
/***/ (function(module, exports) {

	module.exports = "<a class=\"<%=css.link%>\" href=\"<%=appLink%>\" data-role=\"app-home-link\">\n    <span data-role=\"app-name\">\n        <%-_(appLabel).t()%>\n    </span>\n</a>\n"

/***/ }),

/***/ 351:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  App Bar */\n/*  ========== */\n/*  Note, the menus that open from the app bar are in a separate file navs-app */\n\n\n.view---modules-nav-enterprise---7-0-0---3_JB9 {\n    margin: 0;\n    line-height: 40px;\n    font-weight:200;\n    font-size:18px;\n    height: 40px;\n    font-weight: 200;\n    overflow: hidden;\n    float: right;\n\n}\n\n.link---modules-nav-enterprise---7-0-0---34IQK {\n    color: #fff;\n    display: block;\n    padding: 0 20px;\n    position: relative;\n    text-decoration: none;\n}\n\n.link---modules-nav-enterprise---7-0-0---34IQK:hover {\n    color: #fff;\n    display: block;\n    text-decoration: none;\n    background-color: transparent;\n    /*  fallback */\n    background: rgba(255,255,255,0.07);\n\n}\n\n.link---modules-nav-enterprise---7-0-0---34IQK:focus {\n    box-shadow: inset 0 0 8px 0 rgba(255,255,255,0.07);\n    background: rgba(255,255,255,0.11);\n    text-decoration: none;\n\n}\n\n.image---modules-nav-enterprise---7-0-0---1Xm6a {\n    max-height: 40px;\n    display:block;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---3_JB9",
		"link": "link---modules-nav-enterprise---7-0-0---34IQK",
		"image": "image---modules-nav-enterprise---7-0-0---1Xm6a"
	};

/***/ }),

/***/ 352:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(276), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n.view---modules-nav-enterprise---7-0-0---1DVyL {\n    font-size: 20px;\n}\n\n.view---modules-nav-enterprise---7-0-0---1DVyL:after {\n    content: '\\2219\\2219\\2219';\n}\n\n.label---modules-nav-enterprise---7-0-0---1DFmi {\n}", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---1DVyL " + __webpack_require__(276).locals["view"] + "",
		"label": "label---modules-nav-enterprise---7-0-0---1DFmi " + __webpack_require__(276).locals["label"] + ""
	};

/***/ }),

/***/ 353:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n.view---modules-nav-enterprise---7-0-0---3y4rb {\n\tposition: relative;\n    float: right;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---3y4rb"
	};

/***/ }),

/***/ 354:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  App Bar */\n/*  ========== */\n/*  Note, the menus that open from the app bar are in a separate file navs-app */\n\n\n.view---modules-nav-enterprise---7-0-0---1zrJY {\n    animation: none 0s ease 0s 1 normal none running;\n    -webkit-backface-visibility: visible;\n            backface-visibility: visible;\n    background: transparent none repeat 0 0 / auto auto padding-box border-box scroll;\n    border: medium none currentColor;\n    border-collapse: separate;\n    border-image: none;\n    border-radius: 0;\n    border-spacing: 0;\n    bottom: auto;\n    box-shadow: none;\n    box-sizing: content-box;\n    caption-side: top;\n    clear: none;\n    clip: auto;\n    color: #000;\n    columns: auto;\n    column-count: auto;\n    column-fill: balance;\n    column-gap: normal;\n    column-rule: medium none currentColor;\n    column-span: 1;\n    column-width: auto;\n    content: normal;\n    counter-increment: none;\n    counter-reset: none;\n    cursor: auto;\n    direction: ltr;\n    display: inline;\n    empty-cells: show;\n    float: none;\n    font-family: serif;\n    font-size: medium;\n    font-style: normal;\n    font-variant: normal;\n    font-weight: normal;\n    font-stretch: normal;\n    line-height: normal;\n    height: auto;\n    -webkit-hyphens: none;\n        -ms-hyphens: none;\n            hyphens: none;\n    left: auto;\n    letter-spacing: normal;\n    list-style: disc outside none;\n    margin: 0;\n    max-height: none;\n    max-width: none;\n    min-height: 0;\n    min-width: 0;\n    opacity: 1;\n    orphans: 2;\n    outline: medium none invert;\n    overflow: visible;\n    overflow-x: visible;\n    overflow-y: visible;\n    padding: 0;\n    page-break-after: auto;\n    page-break-before: auto;\n    page-break-inside: auto;\n    perspective: none;\n    perspective-origin: 50% 50%;\n    position: static;\n    right: auto;\n    -moz-tab-size: 8;\n         tab-size: 8;\n    table-layout: auto;\n    text-align: left;\n    text-align-last: auto;\n    text-decoration: none;\n    text-indent: 0;\n    text-shadow: none;\n    text-transform: none;\n    top: auto;\n    transform: none;\n    transform-origin: 50% 50% 0;\n    transform-style: flat;\n    transition: none 0s ease 0s;\n    unicode-bidi: normal;\n    vertical-align: baseline;\n    visibility: visible;\n    white-space: normal;\n    widows: 2;\n    width: auto;\n    word-spacing: normal;\n    z-index: auto;\n    all: initial;\n    display: block;\n\n    color: #fff;\n    background-color: rgb(133, 133, 133);\n\n    min-height:40px;\n    position:relative;\n    clear:both;\n\n    font-size: 12px;\n    font-family: \"Roboto\", \"Droid\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n}\n\n\n.view---modules-nav-enterprise---7-0-0---1zrJY:before,\n    .view---modules-nav-enterprise---7-0-0---1zrJY:after {\n    display: table;\n    content: \"\";\n    /*  Fixes Opera/contenteditable bug: */\n    /*  http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952 */\n    line-height: 0;\n}\n\n\n.view---modules-nav-enterprise---7-0-0---1zrJY:after {\n    clear: both;\n}\n\n\n/*  override normal pills style for header */\n\n\n.view---modules-nav-enterprise---7-0-0---1zrJY .shared-appbar-navitem---modules-nav-enterprise---7-0-0---1DZlK > .dropdown-menu---modules-nav-enterprise---7-0-0---UNBpd {\n    width: 300px;\n}\n\n\n.view---modules-nav-enterprise---7-0-0---1zrJY ul.slidenavList---modules-nav-enterprise---7-0-0---1wok2 li > a {\n    border-top: none;\n}\n\n.name---modules-nav-enterprise---7-0-0---1ajmW {\n    margin: 0;\n    line-height: 40px;\n    font-weight:200;\n    font-size:18px;\n    height: 40px;\n    font-weight: 200;\n    overflow: hidden;\n    float: right;\n}\n\n.name---modules-nav-enterprise---7-0-0---1ajmW a {\n    color: #fff;\n    display: block;\n    padding: 0 20px;\n    position: relative;\n    text-decoration: none;\n}\n\n.name---modules-nav-enterprise---7-0-0---1ajmW a:hover {\n    text-decoration: none;\n    background-color: transparent;\n    /*  fallback */\n    background: rgba(255,255,255,0.07);\n}\n\n.name---modules-nav-enterprise---7-0-0---1ajmW a:focus {\n    box-shadow: inset 0 0 8px 0 rgba(255,255,255,0.07);\n    background: rgba(255,255,255,0.11);\n    text-decoration: none;\n}\n\n.link---modules-nav-enterprise---7-0-0---3JtM5\n.logo---modules-nav-enterprise---7-0-0---2UaUo img {\n    max-height: 40px;\n}\n\n[data-action=resizing-nav-right] {\n    position: absolute;\n    right: 10px;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---1zrJY",
		"shared-appbar-navitem": "shared-appbar-navitem---modules-nav-enterprise---7-0-0---1DZlK",
		"dropdown-menu": "dropdown-menu---modules-nav-enterprise---7-0-0---UNBpd",
		"slidenavList": "slidenavList---modules-nav-enterprise---7-0-0---1wok2",
		"name": "name---modules-nav-enterprise---7-0-0---1ajmW",
		"link": "link---modules-nav-enterprise---7-0-0---3JtM5",
		"logo": "logo---modules-nav-enterprise---7-0-0---2UaUo"
	};

/***/ }),

/***/ 355:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n.brand---modules-nav-enterprise---7-0-0---26xe5 {\n    font-size: 17px;\n    float: left;\n    text-decoration: none;\n    line-height: 40px;\n    height: 40px;\n    border: none;\n}\n\n.brand---modules-nav-enterprise---7-0-0---26xe5:hover {\n    background: none;\n    border: none;\n    text-decoration: none;\n}\n\n.gt---modules-nav-enterprise---7-0-0---3_yJ8 {\n    color: #97999B;\n    font-weight: normal;\n}\n\n.subBrand---modules-nav-enterprise---7-0-0---11xup,\n.appText---modules-nav-enterprise---7-0-0---1MCdD {\n    color: #F58220;\n    -webkit-font-smoothing: antialiased;\n}\n\n.appText---modules-nav-enterprise---7-0-0---1MCdD {\n    font-size: 14px;\n    margin-right: 5px;\n}", ""]);

	// exports
	exports.locals = {
		"brand": "brand---modules-nav-enterprise---7-0-0---26xe5",
		"gt": "gt---modules-nav-enterprise---7-0-0---3_yJ8",
		"subBrand": "subBrand---modules-nav-enterprise---7-0-0---11xup",
		"appText": "appText---modules-nav-enterprise---7-0-0---1MCdD"
	};

/***/ }),

/***/ 356:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  tour links in product tours modal */\n.toursLinks---modules-nav-enterprise---7-0-0---1ohIC {\n    text-align: center;\n}\n.tourLink---modules-nav-enterprise---7-0-0---1zbpS {\n    position: relative;\n    padding: 10px;\n    margin-right: 20px;\n    display: inline-block;\n    color: #65A637;\n    border: 1px solid #eee;\n}\n.tourLink---modules-nav-enterprise---7-0-0---1zbpS:last-child {\n    margin-right: 0;\n}\n.tourLink---modules-nav-enterprise---7-0-0---1zbpS:hover,\n    .tourLink---modules-nav-enterprise---7-0-0---1zbpS:focus {\n    background: rgba(101, 166, 55, 0.1);\n    transition: background 0.15s linear;\n    text-decoration: none;\n}\n\n.icon---modules-nav-enterprise---7-0-0---13qVT {\n    padding: 12px 32px;\n}\n\n/*  Lite UI */\n", ""]);

	// exports
	exports.locals = {
		"toursLinks": "toursLinks---modules-nav-enterprise---7-0-0---1ohIC",
		"tourLink": "tourLink---modules-nav-enterprise---7-0-0---1zbpS",
		"icon": "icon---modules-nav-enterprise---7-0-0---13qVT"
	};

/***/ }),

/***/ 357:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(283), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n.view---modules-nav-enterprise---7-0-0---1hOMY {\n    width: 570px;\n    margin-left: -285px;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---1hOMY " + __webpack_require__(283).locals["view"] + ""
	};

/***/ }),

/***/ 358:
/***/ (function(module, exports) {

	module.exports = "<div id=\"<%= imageTourId %>\">\n    <div class=\"<%= css.carouselInner %>\" data-carousel=\"items\">\n        <% for (var i=0; i < images.length; i++) { %>\n            <div class=\"<%= css.carouselItem %>\" <%- (i === 0) ? \"data-active=true\" : ''%> data-carousel=\"item\">\n                <img class=\"<%= css.carouselImage %>\" src=\"<%- imgUrlLocalized %>/<%- images[i] %>\" />\n                <div class=\"<%= css.tourGutter %>\">\n                    <div class=\"<%= css.gutterText %>\">\n                        <%= captions[i] %>\n                    </div>\n                </div>\n            </div>\n        <% } %>\n    </div>\n    <div class=\"<%= css.carouselAssets %>\">\n        <ol class=\"<%= css.carouselIndicators %>\" data-carousel=\"indicators\">\n            <% for (var i=0; i < images.length; i++) { %>\n                <li class=\"<%= css.carouselIndicator %>\" data-target=\"#<%- imageTourId %>\" data-slide-to=\"<%- i %>\" <%- (i === 0) ? \"data-active=true\": ''%>></li>\n            <% } %>\n        </ol>\n        <a style=\"display:none;\" class=\"<%= css.previous %>\" data-slide=\"prev\" href=\"#\">\n            <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"25px\" height=\"48px\" viewBox=\"0 0 612 792\">\n                <polygon points=\"476.81,-0.002 499.794,22.355 136.249,395.998 499.794,769.641 476.81,791.998 91.501,395.998\" />\n            </svg>\n        </a>\n        <a class=\"<%= css.next %>\" data-slide=\"next\" href=\"#\">\n            <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"25px\" height=\"48px\" viewBox=\"0 0 612 792\">\n                <polygon points=\"114.484,792 91.5,769.643 455.045,396 91.5,22.357 114.484,0 499.793,396\" />\n            </svg>\n        </a>\n        <p class=\"<%= css.tourLinks %>\">\n            <a class=\"<%= css.skipTour %>\" data-action=\"skip-tour\" href=\"#\">\n                <%- skipTourLabel %>\n            </a>\n            <a class=\"<%= css.nextTour %>\" data-action=\"next-tour\" href=\"#\">\n                <%- continueLabel %>\n            </a>\n            <% if (doneLabel) { %>\n                <a class=\"<%= css.doneLink %>\" data-action=\"tour-done\" href=\"#\">\n                    <%- doneLabel %>\n                </a>\n            <% } %>\n        </p>\n    </div>\n</div>\n"

/***/ }),

/***/ 359:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  IMAGE TOUR CAROUSEL */\n.carousel---modules-nav-enterprise---7-0-0---2D4w7 {\n    width: 960px;\n    height: 718px;\n    background: #333;\n    margin-bottom: 0;\n}\n.carouselControl---modules-nav-enterprise---7-0-0---2Xzll {\n    top: 52%;\n    background: none;\n    border: none;\n    color: #65A637;\n    opacity: 1;\n    font-size: 48px;\n    margin-top: -20px;\n    z-index: 60;\n    position: absolute;\n}\n.carouselControl---modules-nav-enterprise---7-0-0---2Xzll polygon {\n    fill: #65A637;\n}\n.carouselControl---modules-nav-enterprise---7-0-0---2Xzll:hover,\n    .carouselControl---modules-nav-enterprise---7-0-0---2Xzll:focus {\n    box-shadow: none;\n    background: none;\n}\n.carouselControl---modules-nav-enterprise---7-0-0---2Xzll:hover polygon, .carouselControl---modules-nav-enterprise---7-0-0---2Xzll:focus polygon {\n    fill: rgb(125, 195, 75);\n}\n.previous---modules-nav-enterprise---7-0-0---2odrQ {\n    left: 45px;\n}\n.next---modules-nav-enterprise---7-0-0---1Dv_- {\n    right: 45px;\n}\n\n.carouselInner---modules-nav-enterprise---7-0-0---2rbGc {\n    overflow: hidden;\n    width: 100%;\n    position: relative;\n}\n\n.carouselInner---modules-nav-enterprise---7-0-0---2rbGc [data-active=true] {\n    display: block;\n}\n\n.carouselInner---modules-nav-enterprise---7-0-0---2rbGc [data-animate=in-left] {\n    animation: slideLeft---modules-nav-enterprise---7-0-0---2-cUo 0.75s ease-in-out reverse;\n    position: absolute;\n}\n\n.carouselInner---modules-nav-enterprise---7-0-0---2rbGc [data-animate=in-right] {\n    animation: slideRight---modules-nav-enterprise---7-0-0---2xSvc 0.75s ease-in-out reverse;\n}\n\n.carouselInner---modules-nav-enterprise---7-0-0---2rbGc [data-animate=out-left] {\n    animation: slideLeft---modules-nav-enterprise---7-0-0---2-cUo 0.75s ease-in-out;\n    position: absolute;\n}\n\n.carouselInner---modules-nav-enterprise---7-0-0---2rbGc [data-animate=out-right] {\n    animation: slideRight---modules-nav-enterprise---7-0-0---2xSvc 0.75s ease-in-out;\n}\n\n@keyframes slideLeft---modules-nav-enterprise---7-0-0---2-cUo {\n    0% { transform: translateX(0%); }\n    100% { transform: translateX(-100%); }\n}\n@keyframes slideRight---modules-nav-enterprise---7-0-0---2xSvc {\n    0% { transform: translateX(0%); }\n    100% { transform: translateX(100%); }\n}\n\n.carouselItem---modules-nav-enterprise---7-0-0---ndXwl {\n    width: 960px;\n    height: 716px;\n    display: none;\n    position: relative;\n}\n\n.carouselImage---modules-nav-enterprise---7-0-0---RqROK {\n    display: inline;\n    width: 100%;\n}\n\n.carouselImage---modules-nav-enterprise---7-0-0---RqROK:hover {\n    cursor: pointer;\n}\n\n.carouselIndicators---modules-nav-enterprise---7-0-0---bl7sK {\n    position: absolute;\n    bottom: 18px;\n    top: inherit;\n    right: 50%;\n    transform: translate(50%, 0);\n    z-index: 60;\n}\n\n.carouselIndicators---modules-nav-enterprise---7-0-0---bl7sK [data-active=true] {\n    background-color: #65A637;\n}\n.carouselIndicator---modules-nav-enterprise---7-0-0---3aeHj {\n    display: block;\n    float: left;\n    height: 6px;\n    width: 6px;\n    cursor: pointer;\n    background: #999;\n    border: none;\n    border-radius: 5px;\n    margin-left: 10px;\n    margin-bottom: 0px;\n}\n.carouselIndicator---modules-nav-enterprise---7-0-0---3aeHj:first-child {\n    margin-left: 0;\n}\n\n.tourBtn---modules-nav-enterprise---7-0-0---1Z9rn {\n    background: rgba(0, 0, 0, 0.3);\n    position: absolute;\n    top: 300px;\n    left: 50%;\n    padding: 30px 40px;\n    font-size: 30px;\n    color: #fff;\n    cursor: pointer;\n    transform: translate(-50%, 0);\n}\n.startTour---modules-nav-enterprise---7-0-0---3TGEN,\n.exitTour---modules-nav-enterprise---7-0-0---1pAsG {\n    color: #F58220;\n}\n.tourGutter---modules-nav-enterprise---7-0-0---12cDM {\n    background: rgba(51, 51, 51, 0.9);\n    height: 132px;\n    width: 962px;\n    font-size: 16px;\n    color: #fff;\n    position: absolute;\n    bottom: 0px;\n    z-index: 50;\n    left: 50%;\n    transform: translate(-50%, 0);\n}\n.gutterText---modules-nav-enterprise---7-0-0---1XxD3 {\n    transform: translate(0, -50%);\n    margin: 0 auto;\n    position: relative;\n    top: 50%;\n    line-height: 150%;\n    width: 720px;\n    text-align: center;\n}\n.gutterLink---modules-nav-enterprise---7-0-0---uL7iA {\n    color: #fff;\n    text-decoration: underline;\n}\n.gutterLink---modules-nav-enterprise---7-0-0---uL7iA:hover {\n    color: #fff;\n    text-decoration: underline;\n}\n\n.carouselAssets---modules-nav-enterprise---7-0-0---1oOrg {\n    position: absolute;\n    height: 132px;\n    width: 960px;\n    bottom: 0;\n}\n\n.tourLinks---modules-nav-enterprise---7-0-0---1bwN8 {\n    position: absolute;\n    top: 15px;\n    right: 5px;\n    padding: 5px;\n    text-align: right;\n    z-index: 50;\n    font-size: 12px;\n}\n.tourLink---modules-nav-enterprise---7-0-0---6erve {\n    color: #fff;\n    margin-left: 15px;\n}\n.tourLink---modules-nav-enterprise---7-0-0---6erve:hover {\n    color: #fff;\n    text-decoration: underline;\n}\n.skipTour---modules-nav-enterprise---7-0-0---3PM5H {\n}\n.nextTour---modules-nav-enterprise---7-0-0---1T4qu,\n.tryItNow---modules-nav-enterprise---7-0-0---RhFYP,\n.doneLink---modules-nav-enterprise---7-0-0---2e3Ny  {\n    display: none;\n}\n.tryItNow---modules-nav-enterprise---7-0-0---RhFYP {\n    position: absolute;\n    right: 30px;\n    z-index: 500;\n    bottom: 50px;\n}\n\n@media only screen and (max-height: 750px) {\n    .carouselAssets---modules-nav-enterprise---7-0-0---1oOrg,\n    .tourGutter---modules-nav-enterprise---7-0-0---12cDM {\n        position: fixed;\n    }\n    .carouselAssets---modules-nav-enterprise---7-0-0---1oOrg {\n        bottom: -132px;\n        z-index: 60;\n    }\n    .carouselControl---modules-nav-enterprise---7-0-0---2Xzll {\n        top: inherit;\n        bottom: 175px;\n    }\n    .carouselIndicators---modules-nav-enterprise---7-0-0---bl7sK {\n        bottom: 150px;\n    }\n    .tourLinks---modules-nav-enterprise---7-0-0---1bwN8 {\n        top: inherit;\n        bottom: 220px;\n    }\n    .tryItNow---modules-nav-enterprise---7-0-0---RhFYP {\n        top: inherit;\n        bottom: 180px;\n    }\n}\n\n.tourModal---modules-nav-enterprise---7-0-0---2ob1x {\n    width: 960px;\n    height: 716px;\n    background: #333;\n    z-index: 1062;\n}\n\n.tourModal---modules-nav-enterprise---7-0-0---2ob1x.fade---modules-nav-enterprise---7-0-0---1gcji.in---modules-nav-enterprise---7-0-0---3nrtG {\n    top: 15px;\n}\n\n.modal-backdrop---modules-nav-enterprise---7-0-0---1Zi7W.tour-backdrop---modules-nav-enterprise---7-0-0---1eOoq.fade---modules-nav-enterprise---7-0-0---1gcji {\n    background: #333;\n    z-index: 1061;\n}\n\n.modal-backdrop---modules-nav-enterprise---7-0-0---1Zi7W.tour-backdrop---modules-nav-enterprise---7-0-0---1eOoq.fade---modules-nav-enterprise---7-0-0---1gcji.in---modules-nav-enterprise---7-0-0---3nrtG {\n    opacity: 1;\n    background: #333;\n}\n\n/*  Lite UI */\n", ""]);

	// exports
	exports.locals = {
		"carousel": "carousel---modules-nav-enterprise---7-0-0---2D4w7",
		"carouselControl": "carouselControl---modules-nav-enterprise---7-0-0---2Xzll",
		"previous": "previous---modules-nav-enterprise---7-0-0---2odrQ carouselControl---modules-nav-enterprise---7-0-0---2Xzll",
		"next": "next---modules-nav-enterprise---7-0-0---1Dv_- carouselControl---modules-nav-enterprise---7-0-0---2Xzll",
		"carouselInner": "carouselInner---modules-nav-enterprise---7-0-0---2rbGc",
		"slideLeft": "slideLeft---modules-nav-enterprise---7-0-0---2-cUo",
		"slideRight": "slideRight---modules-nav-enterprise---7-0-0---2xSvc",
		"carouselItem": "carouselItem---modules-nav-enterprise---7-0-0---ndXwl",
		"carouselImage": "carouselImage---modules-nav-enterprise---7-0-0---RqROK",
		"carouselIndicators": "carouselIndicators---modules-nav-enterprise---7-0-0---bl7sK",
		"carouselIndicator": "carouselIndicator---modules-nav-enterprise---7-0-0---3aeHj",
		"tourBtn": "tourBtn---modules-nav-enterprise---7-0-0---1Z9rn",
		"startTour": "startTour---modules-nav-enterprise---7-0-0---3TGEN",
		"exitTour": "exitTour---modules-nav-enterprise---7-0-0---1pAsG",
		"tourGutter": "tourGutter---modules-nav-enterprise---7-0-0---12cDM",
		"gutterText": "gutterText---modules-nav-enterprise---7-0-0---1XxD3",
		"gutterLink": "gutterLink---modules-nav-enterprise---7-0-0---uL7iA",
		"carouselAssets": "carouselAssets---modules-nav-enterprise---7-0-0---1oOrg",
		"tourLinks": "tourLinks---modules-nav-enterprise---7-0-0---1bwN8",
		"tourLink": "tourLink---modules-nav-enterprise---7-0-0---6erve",
		"skipTour": "skipTour---modules-nav-enterprise---7-0-0---3PM5H tourLink---modules-nav-enterprise---7-0-0---6erve",
		"nextTour": "nextTour---modules-nav-enterprise---7-0-0---1T4qu tourLink---modules-nav-enterprise---7-0-0---6erve",
		"tryItNow": "tryItNow---modules-nav-enterprise---7-0-0---RhFYP tourLink---modules-nav-enterprise---7-0-0---6erve",
		"doneLink": "doneLink---modules-nav-enterprise---7-0-0---2e3Ny tourLink---modules-nav-enterprise---7-0-0---6erve",
		"tourModal": "tourModal---modules-nav-enterprise---7-0-0---2ob1x",
		"fade": "fade---modules-nav-enterprise---7-0-0---1gcji",
		"in": "in---modules-nav-enterprise---7-0-0---3nrtG",
		"modal-backdrop": "modal-backdrop---modules-nav-enterprise---7-0-0---1Zi7W",
		"tour-backdrop": "tour-backdrop---modules-nav-enterprise---7-0-0---1eOoq"
	};

/***/ }),

/***/ 360:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(283), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n.view---modules-nav-enterprise---7-0-0---3aaep {\n    width: 960px;\n    margin-left: -480px;\n}\n\n.body---modules-nav-enterprise---7-0-0---1FDKp {\n    max-height: 100vh;\n}\n.bodyPadded---modules-nav-enterprise---7-0-0---3pHqq {\n    padding: 20px;\n}\n.bodyScrolling---modules-nav-enterprise---7-0-0---2Y4Uf {\n    overflow-y: auto;\n}\n.bodyScrollingPadded---modules-nav-enterprise---7-0-0---1PPFt {\n    overflow-y: auto;\n}\n\n.backdrop---modules-nav-enterprise---7-0-0---2XFX_ {\n    background-color: #333;\n}\n\n.backdrop---modules-nav-enterprise---7-0-0---2XFX_[data-modal-state=open] {\n    opacity: 1;\n}\n\n.closeWrapper---modules-nav-enterprise---7-0-0---3NfOF {\n    top: 3px;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---3aaep " + __webpack_require__(283).locals["view"] + "",
		"body": "body---modules-nav-enterprise---7-0-0---1FDKp",
		"bodyPadded": "bodyPadded---modules-nav-enterprise---7-0-0---3pHqq body---modules-nav-enterprise---7-0-0---1FDKp",
		"bodyScrolling": "bodyScrolling---modules-nav-enterprise---7-0-0---2Y4Uf body---modules-nav-enterprise---7-0-0---1FDKp",
		"bodyScrollingPadded": "bodyScrollingPadded---modules-nav-enterprise---7-0-0---1PPFt bodyPadded---modules-nav-enterprise---7-0-0---3pHqq body---modules-nav-enterprise---7-0-0---1FDKp",
		"backdrop": "backdrop---modules-nav-enterprise---7-0-0---2XFX_ " + __webpack_require__(283).locals["backdrop"] + "",
		"closeWrapper": "closeWrapper---modules-nav-enterprise---7-0-0---3NfOF " + __webpack_require__(283).locals["closeWrapper"] + ""
	};

/***/ }),

/***/ 361:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(271), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Messages appears in Splunk Bar and Lite Bar */\n/*  ======================= */\n\n\n.view---modules-nav-enterprise---7-0-0---3FYw4 {\n    margin: 0 10px;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---3FYw4 " + __webpack_require__(271).locals["view"] + ""
	};

/***/ }),

/***/ 362:
/***/ (function(module, exports) {

	module.exports = "<a class=\"<%-css.collapsibleToggle%>\" data-accordion-role=\"toggle\" href=\"#\">\n    <%- groupTitle %>\n</a>\n<div class=\"<%-css.collapsibleBody%>\" data-accordion-role=\"body\" style=\"display: none\">\n    <% var addedItems = []; %>\n    <% _.each(this.model.get('items'), function(item, i){ %>\n        <% if(_.indexOf(addedItems, item.entry.content.get('menu.label')) === -1) { %>\n            <a href=\"<%-item.get('url')%>\" id=\"<%- item.entry.get(\"name\") %>\"><%- _(item.entry.content.get('menu.label') || item.entry.get('name') || '').t() %></a>\n            <% addedItems.push(item.entry.content.get('menu.label')); %>\n        <% } %>\n    <% }); %>\n</div>\n"

/***/ }),

/***/ 363:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Lite Side Nav Accordions */\n/*  ======================= */\n\n.view---modules-nav-enterprise---7-0-0---32tm8 {\n    border: none;\n}\n\n.collapsibleBody---modules-nav-enterprise---7-0-0---2ObYp a {\n    line-height: 24px;\n    padding: 0 20px 0 55px;\n    display: block;\n}\n\n.collapsibleBody---modules-nav-enterprise---7-0-0---2ObYp a:hover {\n    text-decoration: none;\n    background: rgba(255, 255, 255, 0.1);\n}\n\n.collapsibleToggle---modules-nav-enterprise---7-0-0---3pzuh {\n    padding: 0 20px;\n    line-height: 24px;\n    font-weight: bold;\n    margin: 10px 0;\n    display: block;\n}\n\n.collapsibleToggle---modules-nav-enterprise---7-0-0---3pzuh i {\n    width: 15px;\n}\n\n.collapsibleToggle---modules-nav-enterprise---7-0-0---3pzuh:hover {\n    text-decoration: none;\n    background: rgba(255, 255, 255, 0.1);\n}", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---32tm8",
		"collapsibleBody": "collapsibleBody---modules-nav-enterprise---7-0-0---2ObYp",
		"collapsibleToggle": "collapsibleToggle---modules-nav-enterprise---7-0-0---3pzuh"
	};

/***/ }),

/***/ 364:
/***/ (function(module, exports, __webpack_require__) {

	/*** IMPORTS FROM imports-loader ***/
	var jQuery = __webpack_require__("shim/jquery");

	/**
	 * Cookie plugin
	 *
	 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
	 * Dual licensed under the MIT and GPL licenses:
	 * http://www.opensource.org/licenses/mit-license.php
	 * http://www.gnu.org/licenses/gpl.html
	 *
	 */

	/**
	 * Create a cookie with the given name and value and other optional parameters.
	 *
	 * @example $.cookie('the_cookie', 'the_value');
	 * @desc Set the value of a cookie.
	 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
	 * @desc Create a cookie with all available options.
	 * @example $.cookie('the_cookie', 'the_value');
	 * @desc Create a session cookie.
	 * @example $.cookie('the_cookie', null);
	 * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
	 *       used when the cookie was set.
	 *
	 * @param String name The name of the cookie.
	 * @param String value The value of the cookie.
	 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
	 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
	 *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
	 *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
	 *                             when the the browser exits.
	 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
	 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
	 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
	 *                        require a secure protocol (like HTTPS).
	 * @type undefined
	 *
	 * @name $.cookie
	 * @cat Plugins/Cookie
	 * @author Klaus Hartl/klaus.hartl@stilbuero.de
	 */

	/**
	 * Get the value of a cookie with the given name.
	 *
	 * @example $.cookie('the_cookie');
	 * @desc Get the value of a cookie.
	 *
	 * @param String name The name of the cookie.
	 * @return The value of the cookie.
	 * @type String
	 *
	 * @name $.cookie
	 * @cat Plugins/Cookie
	 * @author Klaus Hartl/klaus.hartl@stilbuero.de
	 */
	jQuery.cookie = function(name, value, options) {
	    if (typeof value != 'undefined') { // name and value given, set cookie
	        options = options || {};
	        if (value === null) {
	            value = '';
	            options.expires = -1;
	        }
	        var expires = '';
	        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
	            var date;
	            if (typeof options.expires == 'number') {
	                date = new Date();
	                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
	            } else {
	                date = options.expires;
	            }
	            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
	        }
	        // CAUTION: Needed to parenthesize options.path and options.domain
	        // in the following expressions, otherwise they evaluate to undefined
	        // in the packed version for some reason...
	        var path = options.path ? '; path=' + (options.path) : '';
	        var domain = options.domain ? '; domain=' + (options.domain) : '';
	        var secure = options.secure ? '; secure' : '';
	        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
	    } else { // only name given, get cookie
	        var cookieValue = null;
	        if (document.cookie && document.cookie != '') {
	            var cookies = document.cookie.split(';');
	            for (var i = 0; i < cookies.length; i++) {
	                var cookie = jQuery.trim(cookies[i]);
	                // Does this cookie string begin with the name we want?
	                if (cookie.substring(0, name.length + 1) == (name + '=')) {
	                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
	                    break;
	                }
	            }
	        }
	        return cookieValue;
	    }
	};


/***/ }),

/***/ 365:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(288), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Messages appears in Splunk Bar and Lite Bar */\n/*  ======================= */\n\n.view---modules-nav-enterprise---7-0-0---1fXGU {\n    color: #fff;\n    background: transparent;\n}\n\n.view---modules-nav-enterprise---7-0-0---1fXGU + .view---modules-nav-enterprise---7-0-0---1fXGU {\n    border: none;\n}\n\n.view---modules-nav-enterprise---7-0-0---1fXGU a {\n    color: #fff;\n}\n\n.time---modules-nav-enterprise---7-0-0---dTx1e {\n    color: #999;\n}\n\n.icon---modules-nav-enterprise---7-0-0---s6hZ7 {\n}\n\n.info---modules-nav-enterprise---7-0-0---3hybL,\n.debug---modules-nav-enterprise---7-0-0---10opO {\n}\n\n.warn---modules-nav-enterprise---7-0-0---3V0UC {\n}\n\n.greater---modules-nav-enterprise---7-0-0---2ynvy {\n    color: #F58220;\n    top: 3px;\n}\n\n.important---modules-nav-enterprise---7-0-0---2yUZA,\n.error---modules-nav-enterprise---7-0-0---1sfOF,\n.critical---modules-nav-enterprise---7-0-0---145Yb\n{\n}\n\n.delete---modules-nav-enterprise---7-0-0---84In5 {\n}\n\na.delete---modules-nav-enterprise---7-0-0---84In5.delete---modules-nav-enterprise---7-0-0---84In5 {\n    color: #999;\n}\n\na.delete---modules-nav-enterprise---7-0-0---84In5.delete---modules-nav-enterprise---7-0-0---84In5:hover {\n    color: inherit;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---1fXGU " + __webpack_require__(288).locals["view"] + "",
		"time": "time---modules-nav-enterprise---7-0-0---dTx1e " + __webpack_require__(288).locals["time"] + "",
		"icon": "icon---modules-nav-enterprise---7-0-0---s6hZ7 " + __webpack_require__(288).locals["icon"] + "",
		"info": "info---modules-nav-enterprise---7-0-0---3hybL " + __webpack_require__(288).locals["info"] + "",
		"debug": "debug---modules-nav-enterprise---7-0-0---10opO " + __webpack_require__(288).locals["info"] + "",
		"warn": "warn---modules-nav-enterprise---7-0-0---3V0UC " + __webpack_require__(288).locals["warn"] + "",
		"greater": "greater---modules-nav-enterprise---7-0-0---2ynvy " + __webpack_require__(288).locals["greater"] + "",
		"important": "important---modules-nav-enterprise---7-0-0---2yUZA " + __webpack_require__(288).locals["important"] + "",
		"error": "error---modules-nav-enterprise---7-0-0---1sfOF " + __webpack_require__(288).locals["important"] + "",
		"critical": "critical---modules-nav-enterprise---7-0-0---145Yb " + __webpack_require__(288).locals["important"] + "",
		"delete": "delete---modules-nav-enterprise---7-0-0---84In5 " + __webpack_require__(288).locals["delete"] + ""
	};

/***/ }),

/***/ 366:
/***/ (function(module, exports) {

	module.exports = "<div class=\"<%-css.messagesHeader%>\">\n    <div class=\"<%-css.messagesTitle%>\">\n        <%= _('Messages').t() %>\n        <span class=\"<%-css.messageNotification%>\" data-role=\"message-notification\"></span>\n    </div>\n    <a href=\"#\" class=\"<%-css.deleteAllMessages%>\" data-action=\"delete-all\"><%= _('Clear all').t() %></a>\n</div>\n<div class=\"<%-css.messageList%>\" data-role=\"messages-list\">\n    <div class=\"<%-css.noMessages%>\" data-role=\"no-messages\"><%- _(\"You have no messages.\").t() %></div>\n    <div class=\"<%-css.splunkMessagesDivider%>\" data-role=\"messages-list-divider\"></div>\n</div>"

/***/ }),

/***/ 367:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(290), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Messages styles in Lite Side Nav */\n/*  ======================= */\n\n.messagesHeader---modules-nav-enterprise---7-0-0---142Cm {\n    line-height: 40px;\n    height: 40px;\n    padding: 0 10px;\n}\n\n.messageLinks---modules-nav-enterprise---7-0-0---1hD7K {\n    height: 30px;\n    line-height: 30px;\n    border-bottom: 1px dotted #999;\n}\n\n.deleteAllMessages---modules-nav-enterprise---7-0-0---zXsLG {\n    font-size: 10px;\n    color: #999;\n    float: right;\n    margin-right: 8px;\n}\n\n.deleteAllMessages---modules-nav-enterprise---7-0-0---zXsLG:hover {\n    color: #999;\n}\n\n.deleteAllMessages---modules-nav-enterprise---7-0-0---zXsLG:focus {\n    background: none;\n}\n\n.noMessages---modules-nav-enterprise---7-0-0---2eP-m {\n    background: none;\n    color: #999;\n    text-align: left;\n    line-height: 40px;\n    padding: 0 10px;\n}\n\n.messageList---modules-nav-enterprise---7-0-0---37rME {\n    width: auto;\n    max-height: 150px;\n    overflow-y: auto;\n    border-top: 1px dotted #999;\n    border-bottom: 1px dotted #999;\n}\n\n.messageList---modules-nav-enterprise---7-0-0---37rME .message-content---modules-nav-enterprise---7-0-0---2RVM2 {\n    color: #fff;\n}\n\n.messageList---modules-nav-enterprise---7-0-0---37rME a.delete-message---modules-nav-enterprise---7-0-0---1Zbjz {\n    border: none !important;\n}\n\n.messageList---modules-nav-enterprise---7-0-0---37rME a.delete-message---modules-nav-enterprise---7-0-0---1Zbjz.delete-message---modules-nav-enterprise---7-0-0---1Zbjz:hover,\n        .messageList---modules-nav-enterprise---7-0-0---37rME a.delete-message---modules-nav-enterprise---7-0-0---1Zbjz.delete-message---modules-nav-enterprise---7-0-0---1Zbjz:focus,\n        .messageList---modules-nav-enterprise---7-0-0---37rME a.delete-message---modules-nav-enterprise---7-0-0---1Zbjz.delete-message---modules-nav-enterprise---7-0-0---1Zbjz:active {\n    color: #999;\n}\n\n.messageNotification---modules-nav-enterprise---7-0-0---23uUw {\n    background: #d6563c;\n    border-radius: 10px;\n    color: #FFF;\n    display: inline-block;\n    line-height: 8px;\n    padding: 3px 4px;\n    font-size: 9px;\n    font-style: normal;\n    display: none;\n}\n\n.messagesTitle---modules-nav-enterprise---7-0-0---1UlFb {\n    float: left;\n}\n\n.splunkMessagesDivider---modules-nav-enterprise---7-0-0---1UkZz {\n    border-top: 1px solid #555;\n    height: 0px;\n    margin: 0 10px;\n}", ""]);

	// exports
	exports.locals = {
		"messagesHeader": "messagesHeader---modules-nav-enterprise---7-0-0---142Cm",
		"messageLinks": "messageLinks---modules-nav-enterprise---7-0-0---1hD7K",
		"deleteAllMessages": "deleteAllMessages---modules-nav-enterprise---7-0-0---zXsLG",
		"noMessages": "noMessages---modules-nav-enterprise---7-0-0---2eP-m",
		"messageList": "messageList---modules-nav-enterprise---7-0-0---37rME " + __webpack_require__(290).locals["messageList"] + "",
		"message-content": "message-content---modules-nav-enterprise---7-0-0---2RVM2",
		"delete-message": "delete-message---modules-nav-enterprise---7-0-0---1Zbjz",
		"messageNotification": "messageNotification---modules-nav-enterprise---7-0-0---23uUw",
		"messagesTitle": "messagesTitle---modules-nav-enterprise---7-0-0---1UlFb",
		"splunkMessagesDivider": "splunkMessagesDivider---modules-nav-enterprise---7-0-0---1UkZz"
	};

/***/ }),

/***/ 368:
/***/ (function(module, exports) {

	module.exports = "<div class=\"<%-css.sideNavBody%>\" data-role=\"sidenav-body\">\n    <div class=\"<%-css.messages%>\" data-role=\"messages\"></div>\n    <div data-role=\"sidenav-menu\"></div>\n</div>"

/***/ }),

/***/ 369:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Lite Side Nav */\n/*  ======================= */\n\n.view---modules-nav-enterprise---7-0-0---1tzVc {\n    width: 300px;\n    height: 100%;\n    background: #333;\n    color: #fff;\n    box-sizing: border-box;\n    position: fixed;\n    top: 0;\n    left: -300px;\n    z-index: 1034;\n    transition: .5s left;\n}\n\n.view---modules-nav-enterprise---7-0-0---1tzVc a {\n    color: #fff;\n}\n\n.sidenavHead---modules-nav-enterprise---7-0-0---ILROO {\n    padding: 0 20px;\n    height: 40px;\n    line-height: 40px;\n    font-size: 14px;\n}\n\n.sideNavBody---modules-nav-enterprise---7-0-0---crR3F {\n    padding-bottom: 10px;\n    position: absolute;\n    right: 0;\n    left: 0;\n    bottom: 0;\n    top: 0;\n    overflow: auto;\n    overflow-x: hidden;\n}\n\n/*  Body movement */\n\nbody {\n    transition: .5s margin;\n}\n\n[data-sidenav-state=open] {\n    margin-left: 300px;\n    margin-right: -300px;\n}", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---1tzVc",
		"sidenavHead": "sidenavHead---modules-nav-enterprise---7-0-0---ILROO",
		"sideNavBody": "sideNavBody---modules-nav-enterprise---7-0-0---crR3F"
	};

/***/ }),

/***/ 370:
/***/ (function(module, exports) {

	module.exports = "<ul class=\"<%-css.appsList%>\" data-role=\"apps-list\">\n    <% _.each(apps, function(app) { %>\n            <li data-app=\"<%-app.name%>\">\n                <a href=\"<%-app.href%>\">\n                    <span class=\"<%-css.currentAppCheck%>\">\n                        <% if (app.name == currentApp) { %>\n                            <span data-role=\"current-app-check\"></span>\n                        <% } %>\n                    </span>\n                    <% if (app.name == 'search') { %>\n                        <span data-role=\"logo\"></span>\n                        <span class=\"<%-css.gt%>\" data-role=\"gt\"></span>\n                        <span class=\"<%-css.subBrand%>\" data-role=\"lite-logo\"></span>\n                    <% } else { %>\n                        <span class=\"<%-css.label%>\"><%- app.label %></span>\n                        <span class=\"<%-css.dropdownIcon%>\" data-role=\"icon\"><%= appIcon(app.name, appModel) %></span>\n                    <% } %>\n                </a>\n            </li>\n    <% }); %>\n</ul>\n"

/***/ }),

/***/ 371:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(372), undefined);
	exports.i(__webpack_require__(373), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n.view---modules-nav-enterprise---7-0-0---IeO7v {\n    min-width: 260px;\n}\n\n.appsList---modules-nav-enterprise---7-0-0---3R5tF {\n    max-height: calc(100vh - 120px);\n}\n\n.menu---modules-nav-enterprise---7-0-0---3R7_1 {\n}\n\n.gt---modules-nav-enterprise---7-0-0---2B5_F {\n}\n\n.subBrand---modules-nav-enterprise---7-0-0---2WsyR {\n}\n\n.label---modules-nav-enterprise---7-0-0---3KUlf {\n    font-size: 12px;\n}\n\n.currentAppCheck---modules-nav-enterprise---7-0-0---KMAzj {\n    position: absolute;\n    left: 10px;\n    top: 0px;\n}\n\n.dropdownIcon---modules-nav-enterprise---7-0-0---1y0I0 {\n    width: 20px;\n    position: absolute;\n    top: 0;\n    right: 16px;\n    text-align: center;\n    color: #F58220;\n    font-size: 30px;\n}\n\n.dropdownIcon---modules-nav-enterprise---7-0-0---1y0I0 > img {\n    max-width: 100%;\n    vertical-align: middle;\n    border: 0;\n}\n\n.dropdownIcon---modules-nav-enterprise---7-0-0---1y0I0 > i {\n    display: block;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---IeO7v " + __webpack_require__(372).locals["body"] + "",
		"appsList": "appsList---modules-nav-enterprise---7-0-0---3R5tF " + __webpack_require__(372).locals["menu"] + "",
		"menu": "menu---modules-nav-enterprise---7-0-0---3R7_1 " + __webpack_require__(372).locals["menu"] + "",
		"gt": "gt---modules-nav-enterprise---7-0-0---2B5_F " + __webpack_require__(373).locals["gt"] + "",
		"subBrand": "subBrand---modules-nav-enterprise---7-0-0---2WsyR " + __webpack_require__(373).locals["subBrand"] + "",
		"label": "label---modules-nav-enterprise---7-0-0---3KUlf",
		"currentAppCheck": "currentAppCheck---modules-nav-enterprise---7-0-0---KMAzj",
		"dropdownIcon": "dropdownIcon---modules-nav-enterprise---7-0-0---1y0I0"
	};

/***/ }),

/***/ 372:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(268), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n.view---modules-nav-enterprise---7-0-0---X73lr {\n}\n\n.dialogPadded---modules-nav-enterprise---7-0-0---1EIdm {\n}\n\n.arrow---modules-nav-enterprise---7-0-0---2qONU {\n    display: none;\n}\n\n\n.body---modules-nav-enterprise---7-0-0---3uMZl {\n}\n\n.footer---modules-nav-enterprise---7-0-0---1pdnh {\n}\n\n\n/*  Splunk: Dropdown arrow/caret */\n/*  =========================== */\n\n\n.dropup---modules-nav-enterprise---7-0-0---1MJZh,\n.dropdown---modules-nav-enterprise---7-0-0---7tYRV {\n  position: relative;\n}\n\n.dropdown-toggle---modules-nav-enterprise---7-0-0---18-nO:active,\n.open---modules-nav-enterprise---7-0-0---1VoEb .dropdown-toggle---modules-nav-enterprise---7-0-0---18-nO {\n  outline: 0;\n}\n\n/*  Dropdowns */\n/*  --------- */\n\n.menu---modules-nav-enterprise---7-0-0---2VWxP  {\n}\n\n.menu---modules-nav-enterprise---7-0-0---2VWxP li {\n    position: relative;\n}\n\n.menu---modules-nav-enterprise---7-0-0---2VWxP li > a {\n    display: block;\n    line-height: 40px;\n    padding: 0 50px 0 30px;\n    font-size: 17px;\n    white-space: nowrap;\n    color: #333;\n}\n\n.menu---modules-nav-enterprise---7-0-0---2VWxP li > a:hover:not(.disabled---modules-nav-enterprise---7-0-0---1KzCo),\n            .menu---modules-nav-enterprise---7-0-0---2VWxP li > a:focus:not(.disabled---modules-nav-enterprise---7-0-0---1KzCo) {\n    color: #333;\n    background: rgba(0, 0, 0, 0.05);\n}\n\n.menu---modules-nav-enterprise---7-0-0---2VWxP li + li > a {\n    border-top: 1px solid #ccc;\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---X73lr " + __webpack_require__(268).locals["view"] + "",
		"dialogPadded": "dialogPadded---modules-nav-enterprise---7-0-0---1EIdm " + __webpack_require__(268).locals["dialogPadded"] + "",
		"arrow": "arrow---modules-nav-enterprise---7-0-0---2qONU",
		"body": "body---modules-nav-enterprise---7-0-0---3uMZl " + __webpack_require__(268).locals["body"] + "",
		"footer": "footer---modules-nav-enterprise---7-0-0---1pdnh " + __webpack_require__(268).locals["footer"] + "",
		"dropup": "dropup---modules-nav-enterprise---7-0-0---1MJZh",
		"dropdown": "dropdown---modules-nav-enterprise---7-0-0---7tYRV",
		"dropdown-toggle": "dropdown-toggle---modules-nav-enterprise---7-0-0---18-nO",
		"open": "open---modules-nav-enterprise---7-0-0---1VoEb",
		"menu": "menu---modules-nav-enterprise---7-0-0---2VWxP " + __webpack_require__(268).locals["menu"] + "",
		"disabled": "disabled---modules-nav-enterprise---7-0-0---1KzCo"
	};

/***/ }),

/***/ 373:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n/*  Lite Bar */\n/*  ======================= */\n\n.view---modules-nav-enterprise---7-0-0---1xRRb {\n    animation: none 0s ease 0s 1 normal none running;\n    -webkit-backface-visibility: visible;\n            backface-visibility: visible;\n    background: transparent none repeat 0 0 / auto auto padding-box border-box scroll;\n    border: medium none currentColor;\n    border-collapse: separate;\n    border-image: none;\n    border-radius: 0;\n    border-spacing: 0;\n    bottom: auto;\n    box-shadow: none;\n    box-sizing: content-box;\n    caption-side: top;\n    clear: none;\n    clip: auto;\n    color: #000;\n    columns: auto;\n    column-count: auto;\n    column-fill: balance;\n    column-gap: normal;\n    column-rule: medium none currentColor;\n    column-span: 1;\n    column-width: auto;\n    content: normal;\n    counter-increment: none;\n    counter-reset: none;\n    cursor: auto;\n    direction: ltr;\n    display: inline;\n    empty-cells: show;\n    float: none;\n    font-family: serif;\n    font-size: medium;\n    font-style: normal;\n    font-variant: normal;\n    font-weight: normal;\n    font-stretch: normal;\n    line-height: normal;\n    height: auto;\n    -webkit-hyphens: none;\n        -ms-hyphens: none;\n            hyphens: none;\n    left: auto;\n    letter-spacing: normal;\n    list-style: disc outside none;\n    margin: 0;\n    max-height: none;\n    max-width: none;\n    min-height: 0;\n    min-width: 0;\n    opacity: 1;\n    orphans: 2;\n    outline: medium none invert;\n    overflow: visible;\n    overflow-x: visible;\n    overflow-y: visible;\n    padding: 0;\n    page-break-after: auto;\n    page-break-before: auto;\n    page-break-inside: auto;\n    perspective: none;\n    perspective-origin: 50% 50%;\n    position: static;\n    right: auto;\n    -moz-tab-size: 8;\n         tab-size: 8;\n    table-layout: auto;\n    text-align: left;\n    text-align-last: auto;\n    text-decoration: none;\n    text-indent: 0;\n    text-shadow: none;\n    text-transform: none;\n    top: auto;\n    transform: none;\n    transform-origin: 50% 50% 0;\n    transform-style: flat;\n    transition: none 0s ease 0s;\n    unicode-bidi: normal;\n    vertical-align: baseline;\n    visibility: visible;\n    white-space: normal;\n    widows: 2;\n    width: auto;\n    word-spacing: normal;\n    z-index: auto;\n    all: initial;\n    background: #333 !important;\n    color: #fff;\n    min-height: 40px;\n    padding-right: 10px;\n    font-size: 12px;\n    font-family: \"Roboto\", \"Droid\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    display: block;\n}\n\n.view---modules-nav-enterprise---7-0-0---1xRRb a {\n    color: #fff;\n    text-decoration: none;\n}\n.hamburger---modules-nav-enterprise---7-0-0---2DeL0 {\n    line-height: 40px;\n    height: 40px;\n    cursor: pointer;\n    position: relative;\n    z-index: 1033;\n    padding: 0 20px;\n    display: block;\n    text-align: center;\n    font-size: 24px;\n    float: left;\n}\n.hamburger---modules-nav-enterprise---7-0-0---2DeL0:hover  {\n    background: rgba(255, 255, 255, 0.1);\n}\n.brand---modules-nav-enterprise---7-0-0---2to42 {\n    font-size: 17px;\n    float: left;\n    text-decoration: none;\n    line-height: 40px;\n    height: 40px;\n    border: none;\n}\n.brand---modules-nav-enterprise---7-0-0---2to42:hover {\n    background: none;\n    border: none;\n    text-decoration: none;\n}\n.gt---modules-nav-enterprise---7-0-0---2GriC {\n    color: #97999B;\n    font-weight: normal;\n}\n.subBrand---modules-nav-enterprise---7-0-0---1gNOJ {\n    color: #F58220;\n    -webkit-font-smoothing: antialiased;\n}\n.logo---modules-nav-enterprise---7-0-0---2KapC {\n    float: left;\n}\n.nav---modules-nav-enterprise---7-0-0---BLPps {\n    margin-bottom: 0;\n    height: 40px;\n    line-height: 40px;\n    float: left;\n}\n.navbarGlobal---modules-nav-enterprise---7-0-0---2t0Qk {\n    list-style: none;\n    margin: 0;\n    display: -ms-flexbox;\n    display: flex;\n    float: right;\n}\n.messageNotification---modules-nav-enterprise---7-0-0---2Uxe0 {\n    background: #d6563c;\n    border-radius: 10px;\n    color: #fff;\n    display: inline-block;\n    line-height: 8px;\n    padding: 3px 4px;\n    font-size: 9px;\n    font-style: normal;\n    display: none;\n    position: absolute;\n    top: 5px;\n    right: 12px;\n}\n.sidenavScreen---modules-nav-enterprise---7-0-0---2Yeao {\n    position: fixed;\n    background: rgba(0, 0, 0, 0.6);\n    z-index: 1032;\n    width: 100%;\n    height: 100%;\n    display: none;\n}\n\n@media only screen and (min-width: 1100px) {\n  .nav---modules-nav-enterprise---7-0-0---BLPps .product-menu-label---modules-nav-enterprise---7-0-0---219Ki,\n  .nav---modules-nav-enterprise---7-0-0---BLPps .help-menu-label---modules-nav-enterprise---7-0-0---2s0FW {\n    display: inline;\n  }\n}\n\n@media only screen and (min-width: 1300px) {\n  .nav---modules-nav-enterprise---7-0-0---BLPps .realname---modules-nav-enterprise---7-0-0---2NLms {\n      max-width: 250px;\n  }\n}\n\n@media only screen and (min-width: 1500px) {\n  .nav---modules-nav-enterprise---7-0-0---BLPps .realname---modules-nav-enterprise---7-0-0---2NLms {\n      max-width: 350px;\n  }\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---1xRRb",
		"hamburger": "hamburger---modules-nav-enterprise---7-0-0---2DeL0",
		"brand": "brand---modules-nav-enterprise---7-0-0---2to42",
		"gt": "gt---modules-nav-enterprise---7-0-0---2GriC",
		"subBrand": "subBrand---modules-nav-enterprise---7-0-0---1gNOJ",
		"logo": "logo---modules-nav-enterprise---7-0-0---2KapC",
		"nav": "nav---modules-nav-enterprise---7-0-0---BLPps",
		"navbarGlobal": "navbarGlobal---modules-nav-enterprise---7-0-0---2t0Qk",
		"messageNotification": "messageNotification---modules-nav-enterprise---7-0-0---2Uxe0",
		"sidenavScreen": "sidenavScreen---modules-nav-enterprise---7-0-0---2Yeao",
		"product-menu-label": "product-menu-label---modules-nav-enterprise---7-0-0---219Ki",
		"help-menu-label": "help-menu-label---modules-nav-enterprise---7-0-0---2s0FW",
		"realname": "realname---modules-nav-enterprise---7-0-0---2NLms"
	};

/***/ }),

/***/ 374:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports
	exports.i(__webpack_require__(271), undefined);
	exports.i(__webpack_require__(373), undefined);

	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n/* toggle */\n\n.view---modules-nav-enterprise---7-0-0---3ivPV {\n    height: 40px;\n    float: left;\n    border-left: 1px solid #555;\n    border-right: 1px solid #555;\n}\n\n.toggle---modules-nav-enterprise---7-0-0---1ATMt {\n}\n\n.appName---modules-nav-enterprise---7-0-0---3iQBv {\n    display: inline-block;\n    vertical-align: middle;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    max-width: calc((100vw - 800px) / 2);\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---3ivPV " + __webpack_require__(271).locals["view"] + "",
		"toggle": "toggle---modules-nav-enterprise---7-0-0---1ATMt " + __webpack_require__(373).locals["toggle"] + "",
		"appName": "appName---modules-nav-enterprise---7-0-0---3iQBv"
	};

/***/ }),

/***/ 375:
/***/ (function(module, exports) {

	module.exports = "<a href=\"#\" class=\"<%-css.hamburger%>\" data-role=\"sidenav-toggle\">\n    <span class=\"<%-css.messageNotification%>\" data-role=\"message-notification\"></span>\n</a>\n<div class=\"<%-css.logo%>\" data-role=\"logo\"></div>\n<div class=\"<%-css.nav%>\" data-role=\"app-nav\"></div>\n<div class=\"<%-css.navbarGlobal%>\" data-role=\"right-nav\">\n    <span data-role=\"user-menu\"></span>\n    <span data-role=\"product-menu\"></span>\n    <span data-role=\"help-menu\"></span>\n</div>\n"

/***/ }),

/***/ 376:
/***/ (function(module, exports) {

	module.exports = "<div class=\"<%-css.nav%>\">\n    <a href=\"#\" id=\"about\" data-action=\"about-splunk\"><%= _('About').t() %></a>\n    <a href=\"http://www.splunk.com/r/support\" target=\"_blank\" data-action=\"support\"><%= _('Support').t() %></a>\n    <a href=\"http://www.splunk.com/r/bugs\" target=\"_blank\" data-action=\"file-a-bug\"><%= _('File a Bug').t() %></a>\n    <a href=\"<%- docLink %>\" target=\"_blank\" data-action=\"docs\"><%- _(\"Documentation\").t() %></a>\n    <a href=\"http://www.splunk.com/r/privacy\" target=\"_blank\" data-action=\"privacy-policy\"><%= _('Privacy Policy').t() %></a>\n</div>\n<div class=\"<%-css.copyright%>\" data-role=\"copyright\">&copy; 2005-<%=new Date().getFullYear()%> <%= _('Splunk Inc. All rights reserved.').t() %></div>\n"

/***/ }),

/***/ "models/SplunkDBase":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("models/SplunkDWhiteList"),
	        __webpack_require__("models/services/ACL"),
	        __webpack_require__("models/ACLReadOnly"),
	        __webpack_require__("util/splunkd_utils"),
	        __webpack_require__("util/console"),
	        __webpack_require__("util/general_utils"),
	        __webpack_require__("util/time"),
	        __webpack_require__("stubs/i18n")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, Backbone, BaseModel, SplunkDWhiteList, ACLModel, ACLReadOnlyModel, splunkd_utils, console, generalUtil,
	             time_utils, i18n) {
	        //private sync CRUD methods
	        var syncCreate = function(model, options){
	            var bbXHR, splunkDWhiteListXHR, url,
		            deferredResponse = $.Deferred(),
		            defaults = {data: {output_mode: 'json'}};

	            url = _.isFunction(model.url) ? model.url() : model.url;
	            splunkDWhiteListXHR = this.splunkDWhiteList.fetch({
	                url: splunkd_utils.fullpath(url, {}) + '/_new',
	                success: function(splunkDWhiteListModel, response) {
	                    var app_and_owner = {};
	                    if (options.data){
	                        app_and_owner = $.extend(app_and_owner, { //JQuery purges undefined
	                            app: options.data.app || undefined,
	                            owner: options.data.owner || undefined,
	                            sharing: options.data.sharing || undefined
	                        });
	                    }
	                    defaults.url = splunkd_utils.fullpath(url, app_and_owner);
	                    
	                    defaults.processData = true;
	                    $.extend(true, defaults.data, model.whiteListAttributes());
	                    $.extend(true, defaults, options);
	                    
	                    delete defaults.data.app;
	                    delete defaults.data.owner;
	                    delete defaults.data.sharing;
	                    
	                    defaults.data = splunkd_utils.normalizeValuesForPOST(defaults.data);

	                    bbXHR = Backbone.sync.call(null, "create", model, defaults);
	                    bbXHR.done(function() {
	                        deferredResponse.resolve.apply(deferredResponse, arguments);
	                    });
	                    bbXHR.fail(function() {
	                        deferredResponse.reject.apply(deferredResponse, arguments);
	                    });
	                }
	            });
	            splunkDWhiteListXHR.fail(function(response, err, errMsg) {
	                deferredResponse.reject.apply(deferredResponse, arguments);
	                model.trigger('error', model, response);
	            });
	            return deferredResponse.promise();
	        },
	        syncRead = function(model, options){
	            var bbXHR, url,
		            deferredResponse = $.Deferred(),
		            defaults = {data: {output_mode: 'json'}};

	            if ((window.$C['SPLUNKD_FREE_LICENSE'] || options.isFreeLicense) && model.FREE_PAYLOAD) {
	                if(options.success) {
	                    options.success(model.FREE_PAYLOAD);
	                }
	                return deferredResponse.resolve.apply(deferredResponse, [model.FREE_PAYLOAD]);
	            }

	            if (model.isNew()){
	                url = _.isFunction(model.url) ? model.url() : model.url;
	                url += '/_new';
	            } else if (model.urlRoot) {
	                url = model.urlRoot +'/'+ model.id;
	            } else {
	                url = model.id;
	            }
	            
	            var app_and_owner = {};
	            if (options.data){
	                app_and_owner = $.extend(app_and_owner, { //JQuery purges undefined
	                    app: options.data.app || undefined,
	                    owner: options.data.owner || undefined,
	                    sharing: options.data.sharing || undefined
	                });
	            }
	            defaults.url = splunkd_utils.fullpath(url, app_and_owner);
	            
	            $.extend(true, defaults, options);
	            delete defaults.data.app;
	            delete defaults.data.owner;
	            delete defaults.data.sharing;

	            bbXHR = Backbone.sync.call(this, "read", model, defaults);
	            bbXHR.done(function() {
	                deferredResponse.resolve.apply(deferredResponse, arguments);
	            });
	            bbXHR.fail(function() {
	                deferredResponse.reject.apply(deferredResponse, arguments);
	            });
	            return deferredResponse.promise();
	        },
	        syncUpdate = function(model, options){
	            var bbXHR, splunkDWhiteListXHR, url,
		            deferredResponse = $.Deferred(),
		            defaults = {data: {output_mode: 'json'}},
		            id = model.id;

	            url = splunkd_utils.fullpath(id, {});
	            var mergedOptions = $.extend(true, {}, options,
	                {url: url,
	                success: function(splunkDWhiteListModel) {
	                    var fetchOptions = $.extend(true, {}, options);
	                    $.extend(true, defaults.data, model.whiteListAttributes(fetchOptions));
	                    $.extend(true, defaults, options);
	                    defaults.processData = true;
	                    defaults.type = 'POST';
	                    defaults.url = url;

	                    defaults.data = splunkd_utils.normalizeValuesForPOST(defaults.data);

	                    bbXHR = Backbone.sync.call(null, "update", model, defaults);
	                    bbXHR.done(function() {
	                        deferredResponse.resolve.apply(deferredResponse, arguments);
	                    });
	                    bbXHR.fail(function() {
	                        deferredResponse.reject.apply(deferredResponse, arguments);
	                    });
	                }
	                });
	            this.splunkDWhiteList.clear();
	            splunkDWhiteListXHR = this.splunkDWhiteList.fetch(mergedOptions);
	            splunkDWhiteListXHR.fail(function() {
	                deferredResponse.reject.apply(deferredResponse, arguments);
	            });
	            return deferredResponse.promise();
	        },
	        syncPatch = function(model, options){
	            var bbXHR, splunkDWhiteListXHR, url,
	                deferredResponse = $.Deferred(),
	                defaults = {data: {output_mode: 'json'}},
	                id = model.id;

	            /*
	            * Use caution with Patch:
	            * Unlike Update which sends complete representation of model to server,
	            * Patch only sends attributes passed in attrs argument in Model.save(attrs, options).
	            * Backbone Model.save behavior is to set passed-in attrs on the model itself.
	            * These model attrs should be ignored or unset since SplunkDBase Model's persistable
	            * attributes are stored in model.entry.content.
	            */

	            url = splunkd_utils.fullpath(id, {});
	            this.splunkDWhiteList.clear();
	            splunkDWhiteListXHR = this.splunkDWhiteList.fetch({
	                url: url,
	                success: function(splunkDWhiteListModel) {
	                    $.extend(true, defaults.data, (options.attrs && model.whiteListPassedInAttributes(options.attrs)) || {});
	                    delete options.attrs;
	                    $.extend(true, defaults, options);
	                    defaults.processData = true;
	                    defaults.type = 'POST';
	                    defaults.url = url;
	                    
	                    defaults.data = splunkd_utils.normalizeValuesForPOST(defaults.data);

	                    // beyond this point, patch is equivalent to update
	                    bbXHR = Backbone.sync.call(null, "update", model, defaults);
	                    bbXHR.done(function() {
	                        deferredResponse.resolve.apply(deferredResponse, arguments);
	                    });
	                    bbXHR.fail(function() {
	                        deferredResponse.reject.apply(deferredResponse, arguments);
	                    });
	                }
	            });
	            splunkDWhiteListXHR.fail(function() {
	                deferredResponse.reject.apply(deferredResponse, arguments);
	            });
	            return deferredResponse.promise();
	        },
	        syncDelete = function(model, options){
	            var bbXHR,
		            deferredResponse = $.Deferred(),
		            defaults = {data: {output_mode: 'json'}};

	            if(options.data && options.data.output_mode){
	                //add layering of url if specified by user
	                defaults.url = splunkd_utils.fullpath(model.id, {}) + '?output_mode=' + encodeURIComponent(options.data.output_mode);
	                delete options.data.output_mode;
	            } else {
	                //add layering of url if specified by user
	                defaults.url = splunkd_utils.fullpath(model.id, {}) + '?output_mode=' + encodeURIComponent(defaults.data.output_mode);
	                delete defaults.data.output_mode;
	            }
	            $.extend(true, defaults, options);
	            defaults.processData = true;

	            bbXHR = Backbone.sync.call(this, "delete", model, defaults);
	            bbXHR.done(function() {
	                deferredResponse.resolve.apply(deferredResponse, arguments);
	            });
	            bbXHR.fail(function() {
	                deferredResponse.reject.apply(deferredResponse, arguments);
	            });
	            return deferredResponse.promise();
	        },
	        /**
	         * Default 'move' action.
	         * @param model - model to move
	         * @param options - moving options
	         */
	        syncMove = function(model, options) {
	            if (!model.entry.links.get('move') && !options.url) {
	                throw new Error('Move URL not provided or entity can not be moved.');
	            }
	            var bbXHR,
	                deferredResponse = $.Deferred(),
	                defaults = {
	                    processData: true,
	                    type: 'POST',
	                    url: splunkd_utils.fullpath(model.entry.links.get('move')),
	                    data: {
	                        app: model.entry.acl.get('app'),
	                        user: model.entry.acl.get('owner'),
	                        output_mode: 'json'
	                    }
	                };

	            options = options || {};

	            $.extend(true, defaults, options);
	            defaults.data = splunkd_utils.normalizeValuesForPOST(defaults.data);
	            bbXHR = Backbone.sync.call(null, "update", model, defaults);

	            bbXHR.done(function() {
	                deferredResponse.resolve.apply(deferredResponse, arguments);
	            });
	            bbXHR.fail(function(response, err, errMsg) {
	                model.trigger('error', model, response);
	                deferredResponse.reject.apply(deferredResponse, arguments);
	            });
	            return deferredResponse.promise();
	        };
	        /**
	         * @constructor
	         * @memberOf models
	         * @name SplunkDBase
	         * @extends {models.Base}
	         */
	        var Model = BaseModel.extend(/** @lends models.SplunkDBase.prototype */{
	            initialize: function(attributes, options) {
	                BaseModel.prototype.initialize.apply(this, arguments);
	                this.splunkDWhiteList = options && options.splunkDWhiteList ?
	                        options.splunkDWhiteList : new SplunkDWhiteList();
	                
	                this.initializeAssociated();
	                
	                this.on("change:id", function() {
	                    var alt = this.id;
	                    if (alt) {
	                        alt = alt + "/acl";
	                    }
	                    this.acl.set(this.acl.idAttribute, alt);
	                }, this);
	                
	                if (options && options.splunkDPayload){
	                    this.setFromSplunkD(options.splunkDPayload, {silent: true});
	                }
	            },
	            parseSplunkDMessages: function(response) {
	                var messages = BaseModel.prototype.parseSplunkDMessages.call(this, response);
	                if(response && response.entry && response.entry.length > 0) {
	                    messages = _.union(messages, splunkd_utils.parseMessagesObject(response.entry[0].messages));
	                }
	                return messages;
	            },
	            /**
	             * Formats the updated time from ISO time string to absolute time. 
	             * Returns "Unknown" when the updated time is 0 in epoch. Returns empty string when the
	             * updated field is not present in the model.
	             * @returns {String}
	             */
	            getFormattedUpdatedTime: function() {
	                if (this.entry.get('updated')) {
	                    var jsDate = time_utils.isoToDateObject(this.entry.get('updated'));
	                    if (jsDate.getTime() === 0) {
	                        return _("Unknown").t();
	                    }
	                    return i18n.format_datetime(
	                        time_utils.jsDateToSplunkDateTimeWithMicroseconds(jsDate)
	                    );
	                }
	                return '';
	            },
	            initializeAssociated: function() {
	                // do a dynamic lookup of the current constructor so that this method is inheritance-friendly
	                var RootClass = this.constructor;
	                this.associated = this.associated || {};

	                //instance level models
	                this.links = this.links || new RootClass.Links();
	                this.associated.links = this.links;
	                
	                this.generator = this.generator || new RootClass.Generator();
	                this.associated.generator = this.generator;
	                
	                this.paging = this.paging || new RootClass.Paging();
	                this.associated.paging = this.paging;

	                //nested instance level on entry
	                if (!this.entry){
	                    this.entry = new RootClass.Entry();
	                    $.extend(this.entry, {
	                        links: new RootClass.Entry.Links(),
	                        acl: new RootClass.Entry.ACL(),
	                        content: new RootClass.Entry.Content(),
	                        fields: new RootClass.Entry.Fields()
	                    });
	                    this.entry.associated.links = this.entry.links;
	                    this.entry.associated.acl = this.entry.acl;
	                    this.entry.associated.content = this.entry.content;
	                    this.entry.associated.fields = this.entry.fields;
	                }
	                this.associated.entry = this.entry;
	                
	                //associated EAI models
	                this.acl = this.acl || new ACLModel();
	                this.associated.acl = this.acl;
	            },
	            url: '',
	            sync: function(method, model, options) {
	                switch(method){
	                    case 'create':
	                        return syncCreate.call(this, model, options);
	                    case 'read':
	                        return syncRead.call(this, model, options);
	                    case 'update':
	                        return syncUpdate.call(this, model, options);
	                    case 'patch':
	                        return syncPatch.call(this, model, options);
	                    case 'delete':
	                        return syncDelete.call(this, model, options);
	                    case 'move':
	                        return syncMove.call(this, model, options);
	                    default:
	                        throw new Error('invalid method: ' + method);
	                }
	            },
	            move: function(data, options) {
	                var defaults = {
	                    wait: true,
	                    move: true
	                };
	                options = options || {};
	                $.extend(true, defaults, options);
	                return this.save(data, defaults);
	            },
	            parse: function(response, options) {
	                options = options || {};
	                // make a defensive copy of response since we are going to modify it (only if we want to)
	                if (!options.skipClone) {
	                    response = $.extend(true, {}, response);
	                }
	                
	                //when called from the collection fetch we will need to ensure that our
	                //associated models are initialized because parse is called before
	                //initialize
	                this.initializeAssociated();

	                if (!response || !response.entry || response.entry.length === 0) {
	                    console.log('Response has no content to parse');
	                    return;
	                }
	                var response_entry = response.entry[0];

	                //id
	                //this needs to be the first thing so that people can get !isNew()
	                if (splunkd_utils.isExistingEntity(response)) {
	                    this.set(this.idAttribute, response_entry.links.alternate);
	                    response.id = response_entry.links.alternate;
	                    this.acl.set(this.acl.idAttribute, this.id + '/acl');
	                }

	                //top-level
	                this.links.set(response.links);
	                delete response.links;
	                this.generator.set(response.generator);
	                delete response.generator;
	                this.paging.set(response.paging);
	                delete response.paging;

	                //sub-entry
	                this.entry.links.set(response_entry.links);
	                delete response_entry.links;
	                this.entry.acl.set(response_entry.acl);
	                delete response_entry.acl;
	                this.entry.content.set(response_entry.content);
	                delete response_entry.content;
	                
	                if (response_entry.fields && response_entry.fields.wildcard) {
	                    response_entry.fields.wildcard = splunkd_utils.addAnchorsToWildcardArray(response_entry.fields.wildcard);
	                }
	                this.entry.fields.set(response_entry.fields);
	                delete response_entry.fields;
	                this.entry.set(response_entry);
	                delete response.entry;
	                return response;
	            },
	            whiteListAttributes: function(fetchOptions) {
	                var whiteListOptAndReq = this.splunkDWhiteList.concatOptionalRequired(),
	                    whiteListWild = this.splunkDWhiteList.get('wildcard') || [],
	                    contentAttrs = this.entry.content.filterByKeys(whiteListOptAndReq,
	                                                                   {allowEmpty: true},
	                                                                   fetchOptions);

	                return _.extend(contentAttrs, this.entry.content.filterByWildcards(whiteListWild, {allowEmpty: true}, fetchOptions));
	            },
	            whiteListPassedInAttributes: function(attrs) {
	                if (!_.isObject(attrs) || _.isEmpty(attrs)) { return {}; }
	                var whiteListOptAndReq = this.splunkDWhiteList.concatOptionalRequired(),
	                    whiteListWild = this.splunkDWhiteList.get('wildcard') || [],
	                    filterModel = new BaseModel(attrs),    // cast object into BaseModel
	                    filteredAttrs = filterModel.filterByKeys(whiteListOptAndReq, {allowEmpty: true});

	                return _.extend(filteredAttrs, filterModel.filterByWildcards(whiteListWild, {allowEmpty: true}));
	            },

	            /**
	             * Override the native save to enable passing a payload to a SplunkDBase model and have it apply
	             * the save transactionally onto the model's entry.content associative model.
	             * Set nativeSave : true in order to call backbones native save function
	             * This method signature is the same as the signature for Backbone's native save function
	             * @param {string} key
	             * @param {Any} value
	             * @param {Object} options
	             * @memberof models.SplunkDBase
	             */
	            save: function(key, val, options) {
	                var attributes = {},
	                    originalModel = this;
	                //Check format of inputs
	                //Handle both "key", value and {key: value} -style arguments.
	                if (key == null || _.isObject(key)) {
	                    attributes = key;
	                    options = val;
	                } else {
	                    attributes[key] = val;
	                }
	                options = options || {};

	                //If native save is called, run Backbone native save
	                if (options.nativeSave || !options.wait) {
	                    return BaseModel.prototype.save.call(originalModel, attributes, options);
	                }
	                var clonedModel = originalModel.clone(),
	                    cloneXHR,
	                    deferredResponse = $.Deferred();

	                //Wire up events that need to be passed to the original model
	                clonedModel.error.on('change: messages', function(model, response, options){
	                    originalModel.error.set({
	                        'messages': model.get('messages')
	                    });
	                });
	                clonedModel.on('error', function (model, response, options) {
	                    originalModel._onerror(originalModel, response, options);
	                });
	                clonedModel.on('sync', function (model, response, options) {
	                    originalModel._onsync(originalModel, response, options);
	                });
	                clonedModel.on('validated', function (model, response, options) {
	                    originalModel._rebroadcastValidation(originalModel, response, options);
	                });
	                clonedModel.on('invalid', function (model, response, options) {
	                    originalModel.trigger('invalid', originalModel, response, options);
	                });
	                clonedModel.on('request', function(model, response, options) {
	                    originalModel.trigger('request', originalModel, response, options);
	                });

	                //Save original success method that is passed in
	                var originalSuccess = options.success;
	                var originalError = options.error;
	                //Append new attributes to options
	                options = _.extend({
	                    validate: true,
	                    wait: false
	                }, options);

	                options.success = function(model, response, opts){
	                    var successOptions = {
	                        skipClone: true
	                    };

	                    originalModel.setFromSplunkD(model.toSplunkD(), successOptions);
	                    //Run user passed in success function
	                    if (originalSuccess){
	                        originalSuccess(originalModel, response, opts);
	                    }
	                };
	                options.error = function(model, response, opts){
	                    if (originalError){
	                        originalError(originalModel, response, opts);
	                    }
	                };

	                // Set attributes on the nestedModel which comes from the clone, so no change events are fired
	                if (options.patch) {
	                    cloneXHR =  BaseModel.prototype.save.call(clonedModel, attributes, options);
	                } else if (options.move) {
	                    cloneXHR = clonedModel.sync('move', clonedModel, attributes);
	                } else {
	                    clonedModel.entry.content.set(attributes, options);
	                    cloneXHR =  BaseModel.prototype.save.call(clonedModel, null, options);

	                }
	                //Grab xhr and resolve for the original model
	                cloneXHR.done(function() {
	                    clonedModel.off();
	                    deferredResponse.resolve.apply(deferredResponse, arguments);
	                });
	                cloneXHR.fail(function() {
	                    clonedModel.off();
	                    deferredResponse.reject.apply(deferredResponse, arguments);
	                });
	                return deferredResponse.promise();
	            },

	            /**
	             * Set the model from a SplunkD payload.
	             * @param {Object} payload, SplunkD payload
	             * @param {Object} options
	             * @memberof models.SplunkDBase
	             */
	            setFromSplunkD: function(payload, options) {
	                this.attributes = {};
	                options = options || {};

	                // make a defensive copy of response since we are going to modify it (only if we want to)
	                if (!options.skipClone) {
	                    payload = $.extend(true, {}, payload);
	                }

	                var oldId = this.id;
	                //object assignment
	                if (payload) {
	                    if (payload.entry && payload.entry[0]) {
	                        var payload_entry = payload.entry[0];

	                        if(payload_entry.links){
	                            //id
	                            //this needs to be the first thing so that people can get !isNew()
	                            if (splunkd_utils.isExistingEntity(payload)) {
	                                this.set({id: payload_entry.links.alternate}, {silent: true});
	                                this.acl.set({id: payload_entry.links.alternate + "/acl"}, options);
	                            }

	                            this.entry.links.set(payload_entry.links, options);
	                            delete payload_entry.links;
	                        }

	                        if(payload_entry.acl){
	                            this.entry.acl.set(payload_entry.acl, options);
	                            delete payload_entry.acl;
	                        }
	                        if(payload_entry.content){
	                            this.entry.content.set(payload_entry.content, options);
	                            delete payload_entry.content;
	                        }
	                        if(payload_entry.fields){
	                            if (payload_entry.fields.wildcard) {
	                                payload_entry.fields.wildcard = splunkd_utils.addAnchorsToWildcardArray(payload_entry.fields.wildcard);
	                            }
	                            
	                            this.entry.fields.set(payload_entry.fields, options);
	                            delete payload_entry.fields;
	                        }

	                        this.entry.set(payload_entry, options);
	                        delete payload.entry;
	                    }

	                    if(payload.links) {
	                        this.links.set(payload.links, options);
	                        delete payload.links;
	                    }
	                    if(payload.generator) {
	                        this.generator.set(payload.generator, options);
	                        delete payload.generator;
	                    }
	                    if(payload.paging) {
	                        this.paging.set(payload.paging, options);
	                        delete payload.paging;
	                    }

	                    //reset the internal root model due to pre-init routine
	                    this.set(payload, options);
	                    if(this.id !== oldId) {
	                        this.trigger('change:' + this.idAttribute);
	                    }
	                }
	            },
	            toSplunkD: function(options) {
	                var payload = {};
	                options = options || {};

	                payload = $.extend(true, {}, this.toJSON());

	                payload.links = $.extend(true, {}, this.links.toJSON());
	                payload.generator = $.extend(true, {}, this.generator.toJSON());
	                payload.paging = $.extend(true, {}, this.paging.toJSON());
	                payload.entry = [$.extend(true, {}, this.entry.toJSON())];

	                payload.entry[0].links = $.extend(true, {}, this.entry.links.toJSON());
	                if (options.withoutId) {
	                    delete payload.entry[0].links.alternate;
	                }
	                payload.entry[0].acl = $.extend(true, {}, this.entry.acl.toJSON());
	                payload.entry[0].content = $.extend(true, {}, this.entry.content.toJSON());
	                payload.entry[0].fields = $.extend(true, {}, this.entry.fields.toJSON());

	                //cleanup
	                delete payload.id;
	                return payload;
	            },
	            /*
	             * Given a simple object, filter it such that the only remaining keys are those that could be saved to splunkd.
	             * This is accomplished by introspecting the `entry.fields` associated model that is populated by
	             * the parent model's REST endpoint.
	             *
	             * This method does not have side effects on the model itself.
	             */
	            filterInputToSaveableFields: function(obj) {
	                var fieldSchemaModel = this.entry.fields,
	                    nonWildcardFields = (fieldSchemaModel.get('optional') || []).concat(fieldSchemaModel.get('required') || []),
	                    wildcardFields = fieldSchemaModel.get('wildcard') || [],
	                    filteredObject = _(obj).pick(nonWildcardFields);

	                _(wildcardFields).each(function(wildcardPattern) {
	                    // The wildcards are strings from the REST API, so use a try-catch in case they are not
	                    // valid javascript regex syntax.
	                    try {
	                        _.extend(filteredObject, generalUtil.filterObjectByRegexes(obj, wildcardPattern));
	                    }
	                    catch(e) {
	                        console.warn('Exception thrown trying to evaluate wildcard: ' + wildcardPattern);
	                        console.warn(e);
	                    }
	                });
	                return filteredObject;
	            },
	            /**
	             * Determine if the user can POST changes to this model after the model has been fetched
	             * @memberof models.SplunkDBase
	             */
	            canWrite: function() {
	                return this.entry.acl.get('can_write') ? true : false;
	            },
	            /**
	             * Determine if the user can delete this model after the model has been fetched
	             * @memberof models.SplunkDBase
	             */
	            canDelete: function() {
	                return this.entry.links.get("remove") ? true : false;
	            },
	            /**
	            * Determine if the user can clone this model after the model has been fetched.
	            * By default you should be able to clone any entity you can read, but savedsearches override this because of
	            * the scheduler.
	            * @memberof models.SplunkDBase
	            */
	            canClone: function() {
	                return !this.isNew();
	            },
	            
	            /**
	            * Determine if model is dirty. Useful for save buttons that must be intelligent about the state of the model.
	            * @param {SplunkDBaseObj} otherSplunkDBaseObj the splunkDBase object to compare this object with.
	            * @param {array} whitelist an array of regex strings that will be used to determine which enntry.content attributes define the dirty state.
	            *               ie. [
	            *                    '^dispatch\.earliest_time$',
	            *                    '^dispatch\.latest_time$',
	            *                    '^dispatch\.sample_ratio',
	            *                    '^display\.*$',
	            *                    '^search$'
	            *                ]
	            * @memberof models.SplunkDBase
	            */
	            isDirty: function(otherSplunkDBaseObj, whitelist) {
	                whitelist = whitelist || ['.*'];
	                
	                var thisContent = generalUtil.filterObjectByRegexes(this.entry.content.toJSON(), whitelist),
	                    otherContent = generalUtil.filterObjectByRegexes(otherSplunkDBaseObj.entry.content.toJSON(), whitelist);

	                return !(_.isEqual(
	                    this.filterInputToSaveableFields(thisContent),
	                    this.filterInputToSaveableFields(otherContent)
	                ));
	            }
	        },
	        {
	            Links: BaseModel,
	            Generator: BaseModel,
	            Paging: BaseModel,
	            Entry: BaseModel.extend(
	                {
	                    initialize: function() {
	                        BaseModel.prototype.initialize.apply(this, arguments);
	                    }
	                },
	                {
	                    Links: BaseModel,
	                    ACL: ACLReadOnlyModel,
	                    Content: BaseModel,
	                    Fields: BaseModel
	                }
	            )
	        });

	        return Model;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/user/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    __webpack_require__("shim/jquery"),
	    module,
	    __webpack_require__("views/shared/Menu"),
	    __webpack_require__("views/shared/splunkbar/MenuButton"),
	    __webpack_require__("views/shared/splunkbar/user/MenuContents"),
	    __webpack_require__("uri/route")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    _,
	    $,
	    module,
	    MenuView,
	    MenuButtonView,
	    MenuContentsView,
	    css,
	    route
	){
	    return MenuView.extend({
	        moduleId: module.id,
	        initialize: function(){
	            this.options.mode = 'dialog';
	            this.options.contentView = new MenuContentsView({
	                model: this.model,
	                collection: {
	                    apps: this.collection.apps
	                }
	            });
	            this.options.toggleView = new MenuButtonView({
	                label: _("User").t(),
	                icon: this.model.serverInfo.isCloud() || this.options.showIcon ? 'user' : undefined,
	                truncateLongLabels: true,
	                iconSize: this.options.iconSize || '1.667',
	                model: this.model
	            });
	            this.toggle = this.options.toggleView;

	            this.model.user.on('change', this.render, this);
	            if (this.model.user.entry.get('name')) {
	                this.updateName();
	            }
	            MenuView.prototype.initialize.apply(this, arguments);
	        },

	        _getName: function() {
	            var realName = this.model.user.entry.content.get('realname'),
	                name = realName && realName.length ? realName : this.model.user.entry.get('name');

	            return name;
	        },

	        updateName: function() {
	            this.toggle.set({label: this._getName()});
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/user/MenuContents":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__(286),
	    __webpack_require__("views/shared/splunkbar/user/MenuContents.pcssm"),
	    __webpack_require__("uri/route"),
	    __webpack_require__("shim/splunk.util")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    _,
	    module,
	    BaseView,
	    template,
	    css,
	    route,
	    splunk_util
	){
	    return BaseView.extend({
	        moduleId: module.id,
	        template: template,
	        tagName: 'ul',
	        css: css,
	        initialize: function() {
	            BaseView.prototype.initialize.apply(this, arguments);
	            this.model.user.on('change', this.render, this);
	            this.model.webConf.on('change reset', this.render, this);
	            if (this.model.user.entry.get('name')) {
	                this.render();
	            }
	        },
	        render: function() {
	            var rootUrl = this.model.application.get('root'),
	                locale = this.model.application.get('locale'),
	                isLite = this.model.serverInfo.isLite(),
	                userName =  this.model.user.entry.get('name'),
	                accountLink = route.manager(
	                    rootUrl,
	                    locale,
	                    this.model.application.get('app'),
	                    [
	                        'authentication',
	                        'changepassword',
	                        userName
	                    ],
	                    {
	                        data: { action: 'edit' }
	                    }
	                ),
	                accountLinkLite = route.manager(
	                    rootUrl,
	                    locale,
	                    this.model.application.get('app'),
	                    [
	                        'authentication',
	                        'users'
	                    ]
	                ),
	                logoutLink = this.model.config.get('SSO_CREATED_SESSION') ? null : route.logout(rootUrl, locale),
	                showUserMenuProfile = this.model.serverInfo.isCloud() &&
	                    splunk_util.normalizeBoolean(this.model.webConf.entry.content.get('showUserMenuProfile')),
	                html = this.compiledTemplate({
	                    userName: userName,
	                    accountLink: (isLite) ? accountLinkLite : accountLink,
	                    logoutLink: logoutLink,
	                    showUserMenuProfile: showUserMenuProfile,
	                    productMenuUriPrefix: this.model.webConf.entry.content.get('productMenuUriPrefix') || '',
	                    isCloud: this.model.serverInfo.isCloud(),
	                    isLite: isLite,
	                    css: css
	                });

	            this.$el.html(html);
	            return this;
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/ACLReadOnly":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	         __webpack_require__("shim/jquery"),
	         __webpack_require__("require/underscore"),
	         __webpack_require__("require/backbone"),
	         __webpack_require__("models/Base"),
	         __webpack_require__("util/splunkd_utils")
	     ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, Backbone, BaseModel, splunkd_utils) {
	        return BaseModel.extend({
	            initialize: function(attributes, options) {
	                BaseModel.prototype.initialize.apply(this, arguments);
	            },
	            permsToObj: function() {
	                var perms = $.extend(true, {}, this.get('perms'));
	                perms.read = perms.read || [];
	                perms.write = perms.write || [];
	                return perms;
	            },
	            toDataPayload: function() {
	                var perms = this.permsToObj(),
	                    data = {
	                        sharing: this.get('sharing'),
	                        owner: this.get('owner')
	                    };

	                if (data.sharing !== splunkd_utils.USER && perms.read.length !== 0) {
	                    if (_.indexOf(perms.read, '*') != -1) {
	                        data['perms.read'] = '*';
	                    } else {
	                        data['perms.read'] = perms.read.join(',');
	                    }
	                }

	                if (data.sharing !== splunkd_utils.USER && perms.write.length !== 0) {
	                    if (_.indexOf(perms.write, '*') != -1) {
	                        data['perms.write'] = '*';
	                    } else {
	                        data['perms.write'] = perms.write.join(',');
	                    }
	                }

	                return data;
	            },
	            canWrite: function() {
	                return this.get('can_write');
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/user/MenuContents.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(287);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuContents.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuContents.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "models/Base":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__("require/backbone"),
	    __webpack_require__("mixins/modelcollection"),
	    __webpack_require__("util/general_utils"),
	    __webpack_require__("util/splunkd_utils"),
	    __webpack_require__("validation/ValidationMixin")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    Backbone,
	    modelcollectionMixin,
	    generalUtils,
	    splunkDUtils,
	    ValidationMixin
	){
	   /**
	    * @namespace models
	    */
	   /**
	    * @consturctor
	    * @memberOf models
	    * @class
	    * @name Base
	    * @description Base Model class for all our models.
	    * Events:
	    *
	    *      attributeValidate:attributeName - triggered when validation has been performed on the attributeName
	    *          isValid - true if the attribute has passed validation
	    *          attributeName - name of the attribute being validated
	    *          errorMessage - if isValid is false, then this holds the error message. Otherwise, it is empty
	    *
	    *      serverValidated - triggered when we get messages from the server
	    *          isValid - true if the model has no server errors
	    *          model - a reference to the model itself
	    *          messages - a list of message objects, each containing the message content and type
	    *
	    * @extends {Backbone.Model}
	    * @mixes validation
	    */
	   var BaseModel = Backbone.Model.extend(/** @lends models.Base.prototype */{
	       /**
	        * @param {Object} attributes
	        * @param {Object} options
	        */
	        initialize: function(attributes, options) {
	            Backbone.Model.prototype.initialize.apply(this, arguments);

	            this.error = new Backbone.Model();
	            this.fetchData = (options && options.fetchData) ? options.fetchData : new Backbone.Model();
	            this.associated = this.associated || {};
	            this.associated.error = this.error;

	            this.fetchData.on('change', _.debounce(function() { this.safeFetch(); }, 0), this);
	            this.on('sync', this._onsync, this);
	            this.on('error', this._onerror, this);
	            this.on('validated', this._rebroadcastValidation, this);
	        },
	        /**
	        * @param {Object} options
	        * Merges options into the model
	        */
	        fetch: function(options) {
	            // merge the contents of the fetchData model into options.data
	            var mergedOptions = $.extend(true, {}, {data: this.fetchData.toJSON()}, options);
	            this.fetchXhr = Backbone.Model.prototype.fetch.call(this, mergedOptions);
	            // on successful fetch, handle any calls to safeFetch that came in while we were in-flight
	            var that = this;
	            this.fetchXhr.done(function() {
	                if (that.touched) {
	                    that.safeFetch.apply(that, that.touched);
	                }
	            });
	            return this.fetchXhr;
	        },
	        /**
	         * Helper function to allow the caller to use both the deferred returned by the fetch and to pass in success
	         * and error handlers. In addition, the returned Deferred only resolves, it doesn't reject. Instead, it passes
	         * a boolean attribute to the Deferred's resolve handler indicating whether the request succeeded (true) or
	         * failed (false).
	         *
	         * @param {object} options The options passed to the fetch, including success and error handlers
	         * @returns {Deferred} A Deferred that normalizes the response from the fetch.
	        */
	        binaryPromiseFetch: function(options) {
	            options || (options={});
	            var deferred = $.Deferred(),
	                success = options.success,
	                error = options.error;
	            options.success = function() {
	                deferred.resolve(true);
	                if (success) {
	                    success.apply(this, arguments);
	                }
	            };
	            options.error = function() {
	                deferred.resolve(false);
	                if (error) {
	                    error.apply(this, arguments);
	                }
	            };
	            this.fetch(options);
	            return deferred;
	        },
	        /**
	        * @param {Object} options
	        */
	        clear: function(options) {
	            options = options || {};
	            
	            _.each(this.associated, function(value){
	                if (value instanceof Backbone.Model){
	                    value.clear(options);
	                } else if (value instanceof Backbone.Collection) {
	                    value.reset(null, options);
	                }
	            });
	            
	            this.error.clear(options);
	            Backbone.Model.prototype.clear.call(this, options);
	            
	            if (options.setDefaults) {
	                var defaults = _.result(this, 'defaults');
	                if (defaults) {
	                    this.set(defaults, options);
	                }
	            }
	            
	            return this;
	        },
	        clone: function(){
	            var clonedModel = Backbone.Model.prototype.clone.call(this);
	            _.each(this.associated, function(value, key) {
	                if (value instanceof Backbone.Model) {
	                    var clonedAsscModel = value.clone();
	                    clonedModel[key] = clonedAsscModel;
	                    clonedModel.associated[key] = clonedAsscModel;
	                } else if (value instanceof Backbone.Collection) {
	                    var clonedAsscCollection = new value.constructor(
	                        value.map(function(model) {
	                            return model.clone();
	                        })
	                    );
	                    clonedModel[key] = clonedAsscCollection;
	                    clonedModel.associated[key] = clonedAsscCollection;
	                }
	            });
	            return clonedModel;
	        },
	        associatedOff: function(events, callback, context) {
	            _(this.associated).each(function(associated) {
	                associated.off(events, callback, context);
	                if (_.isFunction(associated.associatedOff)) {
	                    associated.associatedOff(events, callback, context);
	                }
	            }, this);
	            // fetchData is not part of the associated container, but should still be unbound
	            this.fetchData.off(events, callback, context);
	        },
	        /**
	         * Use this to announce to any listeners that the model is in a valid state. This is useful in cases where the
	         * model is attached to a ControlGroup and you want that ControlGroup to no longer be in the error state.
	         * Note that the next time you attempt to validate the model, it will still run through its validation rules.
	         */
	        clearErrors: function() {
	            this.trigger('serverValidated', true, this, []);
	            this.trigger('validated', true, this, []);
	        },

	       /**
	        * Returns true if the message contains an error
	        * @param message
	        * @returns {boolean}
	        */
	        messageHasError: function(message) {
	            return (message.type === splunkDUtils.ERROR || message.type === splunkDUtils.FATAL);
	        },

	       /**
	        * Returns true if the response contains an error. As an optimization, we take an array of messages parsed
	        * from the response so that we don't have to parse the response twice.
	        * @param response - parsed response object from the model sync
	        * @param messages - array of message objects
	        * @returns {*}
	        */
	        responseHasErrors: function(response, messages) {
	            return _(messages).any(function (message) {
	                return this.messageHasError(message);
	            }, this);
	        },

	        _rebroadcastValidation: function(validated, model, error_payload) {
	            // doing this union will handle the case where a previously-undefined attribute is being set with an invalid value
	            var allKeys = _.union(_.keys(this.attributes), _.keys(error_payload));
	            _(allKeys).each(function(k){
	                this.trigger('attributeValidated:' + k, !_.has(error_payload, k), k, error_payload[k]);
	            },this);
	        },
	        _onerror: function(model, response, options) {
	            model.error.clear();
	            var messages = splunkDUtils.xhrErrorResponseParser(response, this.id);
	            this.trigger('serverValidated', false, this, messages);
	            model.error.set("messages", messages);
	        },
	        _onsync: function(model, response, options) {
	            model.error.clear();
	            var messages = this.parseSplunkDMessages(response);
	            var hasErrors = this.responseHasErrors(response, messages);

	            this.trigger('serverValidated', !hasErrors, this, messages);
	            
	            if (hasErrors) {
	                model.error.set("messages", messages);
	            }
	        },
	        parseSplunkDMessages: function(response) {
	            if(!response) {
	                return [];
	            }
	            return splunkDUtils.parseMessagesObject(response.messages);
	        },
	        filterByKeys: function(keys, options, fetchOptions /* optional */) {
	            options = options || {};

	            var attrs = {},
	                strip = _.isString(options.strip) ? options.strip : '',
	                allowEmpty = !!options.allowEmpty;

	            _.each(this.toJSON(fetchOptions), function(value, key) {
	                if(_.indexOf(keys, key) != -1) {
	                    if (!_.isUndefined(value)){
	                        if (!(value === "") || allowEmpty){
	                            attrs[key.replace(strip, '')] = value;
	                        }
	                    }
	                }
	            }, this);
	            return attrs;
	        },
	        filterByWildcards: function(wildcards, options, fetchOptions /* optional */) {
	            return generalUtils.filterObjectByRegexes(this.toJSON(fetchOptions), wildcards, options);
	        },
	        filterChangedByWildcards: function(wildcards, options) {
	            return generalUtils.filterObjectByRegexes(this.changedAttributes() || {}, wildcards, options);
	        },
	        toObject: function(attr) {
	            var value = this.get(attr);
	            try {
	                value = JSON.parse(value);
	            } catch (e) {}
	            return value;
	        },
	        replace: function(attributes, options) {
	            this.clear({silent: true});
	            this.set(attributes, options);
	        },
	        /**
	         * Restore the model to its default attributes.
	         * CAVEAT EMPTOR: often fires two change events, both globally and per-attribute
	         * CAVEAT EMPTOR: this has not been well tested yet
	         * @param {Object} options
	         */
	        restoreDefaults: function(options) {
	            var defaults = _.isFunction(this.defaults) ? this.defaults() : this.defaults;
	            this.clear(options);
	            this.set(defaults, options);
	        }

	    });
	    _.extend(BaseModel.prototype, ValidationMixin);
	    _.extend(BaseModel.prototype, modelcollectionMixin);
	   
	   return BaseModel;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/messages/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        module,
	        __webpack_require__("views/shared/Menu"),
	        __webpack_require__("views/shared/splunkbar/messages/MenuContents"),
	        __webpack_require__("views/shared/splunkbar/MenuButton"),
	        __webpack_require__("util/general_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, module, MenuView, MenuContentsView, MenuButtonView, general_utils) {
	        return MenuView.extend({
	            moduleId: module.id,
	            initialize: function() {
	                this.options.mode = 'dialog';
	                this.options.contentView = new MenuContentsView({
	                    collection: {
	                        messages: this.collection.messages,
	                        legacyMessages: this.collection.legacyMessages
	                    },
	                    model: {
	                        serverInfo: this.model.serverInfo,
	                        application: this.model.application,
	                        user: this.model.user,
	                        updateChecker: this.model.updateChecker,
	                        userPref: this.model.userPref,
	                        webConf: this.model.webConf
	                    }
	                });
	                this.options.toggleView = new MenuButtonView({label: _("Messages").t()});

	                MenuView.prototype.initialize.apply(this, arguments);

	                this.collection.messages.on('change reset remove', this.updateNotification, this);
	                this.model.userPref.on('change', this.updateNotification, this);

	                if (this.collection.legacyMessages) {
	                    this.collection.legacyMessages.on('reset remove', this.updateNotification, this);
	                }
	            },
	            updateNotification: function() {
	                var messagesCount = (this.collection.messages.length || 0) + (this.collection.numLegacyMessages || 0),
	                    splunkMessageCount = this.options.contentView.numSplunkMessages || 0;

	                messagesCount = messagesCount + splunkMessageCount;
	                if(this.$('[data-popdown-role=dialog]').is(':visible')) {
	                    this.children.popdown.adjustPosition();
	                }
	                this.children.toggle.set({badgeLabel: messagesCount || false });
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/messages/MenuContents":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        module,
	        __webpack_require__("views/Base"),
	        __webpack_require__("models/SplunkDBase"),
	        __webpack_require__("models/shared/UpdateChecker"),
	        __webpack_require__("views/shared/delegates/Popdown"),
	        __webpack_require__("views/shared/delegates/StopScrollPropagation"),
	        __webpack_require__("views/shared/splunkbar/messages/Message"),
	        __webpack_require__("views/shared/splunkbar/messages/LegacyMessage"),
	        __webpack_require__("views/shared/Button"),
	        __webpack_require__(289),
	        __webpack_require__("views/shared/splunkbar/messages/MenuContents.pcssm"),
	        __webpack_require__("util/general_utils"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, module, BaseView, SplunkDBaseModel, UpdateCheckerModel, Popdown, StopScrollPropagation, MessageView, LegacyMessageView, ButtonView, template, css, general_utils, splunkUtil) {
	        return BaseView.extend({
	            moduleId: module.id,
	            template: template,
	            css: css,
	            MessageView: MessageView, // Aliasing so Lite can use Subclass
	            initialize: function() {
	                BaseView.prototype.initialize.apply(this, arguments);

	                this.model = this.model || {};
	                this.model.application = this.model.application || {};
	                this.model.serverInfo = this.model.serverInfo || {};
	                this.model.updateChecker = this.model.updateChecker || new UpdateCheckerModel();

	                if (this.collection.messages) {
	                    this.collection.messages.on('change reset remove', this.renderMessages, this);
	                }
	                if (this.collection.legacyMessages) {
	                    this.collection.legacyMessages.on('reset remove', this.renderMessages, this);
	                }
	                this.isLocalMouseSelection = false;
	                this.children.deleteAll = new ButtonView({label: _("Delete All").t(), action: 'delete-all' });
	                this.numSplunkMessages = 0;
	                this.numLegacyMessages = 0;
	                this.splunkMessagesDfd = $.Deferred();
	                this.updateCheckerDfd = $.Deferred();
	            },

	            events: {
	                'click [data-action=delete]': 'deleteMessage',
	                'click [data-action=delete-all]': 'deleteAllMessages',
	                'click [data-action=delete-splunk-message]': 'deleteSplunkMessage',
	                'mouseup .message-list': function() {
	                    // this is to stop message refresh only when selection is LOCAL to .message-list
	                    this.isLocalMouseSelection = true;
	                }
	            },

	            render: function() {
	                var html = this.compiledTemplate({
	                        collection: {
	                            messages: this.collection.messages,
	                            legacyMessages: this.collection.legacyMessages
	                        },
	                        css: this.css
	                    });
	                
	                this.$el.html(html);
	                this.children.popdown = new Popdown({el:this.el, mode: 'dialog'});
	                this.children.stopScrollPropagation = new StopScrollPropagation({el:this.$('#global-messages-menu ul'), mode: 'dialog'});
	                this.children.deleteAll.render().appendTo(this.$('[data-role=footer]'));

	                // Check for new Splunk messages
	                if (this.model.user && this.model.user.isAdminLike()) {
	                    this.getSplunkMessages();
	                }

	                return this;
	            },

	            renderMessages: function(forceUpdate) {
	                if (forceUpdate !== true &&
	                    this.isLocalMouseSelection &&
	                    general_utils.getMouseSelection() && general_utils.getMouseSelection().length>0) {
	                    return;
	                }
	                this.isLocalMouseSelection = false;

	                // Remove existing message children
	                _.each(this.children, function(view, key) {
	                    if (key.substr(0, 7) == 'message') {
	                        this.children[key].remove();
	                        delete this.children[key];
	                    }
	                }, this);

	                // Iterate through collection
	                this.collection.messages.each(function(model, key) {
	                    // Create view
	                    var messageView = new this.MessageView({
	                            model: {
	                                application: this.model.application,
	                                serverInfo: this.model.serverInfo,
	                                message: model
	                            }
	                        });
	                    this.children['message' + model.get("id")] = messageView;
	                    this.$('[data-role=messages-list-divider]').before(messageView.render().$el);
	                }, this);

	                if (this.collection.legacyMessages) {
	                    this.numLegacyMessages = this.collection.legacyMessages.length;
	                    this.collection.legacyMessages.each(function(model) {
	                        var messageView = new LegacyMessageView({
	                            model: {
	                                application: this.model.application,
	                                serverInfo: this.model.serverInfo,
	                                message: model
	                            }
	                        });
	                        this.children['messageLegacy' + model.get("id")] = messageView;
	                        this.$('[data-role=messages-list-divider]').before(messageView.render().$el);
	                    }, this);
	                }

	                this.numMessages = this.collection.messages.length;
	                if (this.collection.legacyMessages) {
	                    this.numMessages = this.numMessages + this.numLegacyMessages;
	                }
	                this.showHideMessages();
	            },

	            showHideMessages: function() {
	                var totalSystemMessages = this.collection.messages.length + this.numLegacyMessages,
	                    totalMessages = totalSystemMessages + this.numSplunkMessages;

	                if (totalMessages > 0) {
	                    this.$("[data-role=footer]").show();
	                    this.$("[data-role=no-messages]").hide();
	                } else {
	                    this.$("[data-role=footer]").hide();
	                    this.$("[data-role=no-messages]").show();
	                }

	                if (totalSystemMessages == 0 || this.numSplunkMessages == 0) {
	                    this.$('[data-role=messages-list-divider]').hide();
	                } else {
	                    this.$('[data-role=messages-list-divider]').show();
	                }
	            },

	            deleteMessage: function(evt) {
	                evt.preventDefault();
	                var $li = $(evt.currentTarget).parent(),
	                    id = $li.data('id'),
	                    isLegacy = $li.data('islegacy'),
	                    toRemove;

	                if (this.collection.legacyMessages && isLegacy) {
	                    toRemove = this.collection.legacyMessages.get(id);
	                    if (toRemove) {
	                        this.collection.legacyMessages.remove(toRemove);
	                    }
	                } else {
	                    toRemove = this.collection.messages.get(id);
	                    if (toRemove) {
	                        toRemove.destroy();
	                    }
	                }

	                if (this.collection.messages.length === 0 && (!this.collection.legacyMessages || this.collection.legacyMessages === 0)) {
	                    this.children.popdown.hide();
	                }

	                this.renderMessages(true);
	            },

	            deleteSplunkMessage: function(e) {
	                e.preventDefault();
	                var $msg = $(e.currentTarget).parent(),
	                    msgId = $msg.attr('data-id').replace(/\-/g, '_');

	                $msg.remove();
	                this.numSplunkMessages--;
	                this.showHideMessages();
	                this.model.userPref.entry.content.set(msgId, '');
	                this.model.userPref.save({});
	            },

	            deleteAllMessages: function(evt) {
	                evt.preventDefault();
	                this.collection.messages.destroyAll();
	                if (this.collection.legacyMessages) {
	                    this.collection.legacyMessages.reset();
	                }
	                if (this.numSplunkMessages > 0) {
	                    this.$('[data-action=delete-splunk-message]').click();
	                }
	                this.children.popdown.hide();
	            },

	            getSplunkMessages: function() {
	                var canRenderSplunkMessages = splunkUtil.normalizeBoolean(this.model.userPref.entry.content.get('render_version_messages'));
	                if (canRenderSplunkMessages) {
	                    // Check if we need to use Quickdraw or User Prefs
	                    if (this.model.updateChecker.get('useQuickdraw')) {
	                        this.model.updateChecker.on('sync', function() {
	                            this._getSplunkMessagesFromQuickdraw();
	                        }, this);
	                    } else {
	                        this._getSplunkMessagesFromUserPref();
	                    }
	                    this.showHideMessages();
	                }
	            },

	            _getSplunkMessagesFromQuickdraw: function() {
	                var update = this.model.updateChecker,
	                    userPref = this.model.userPref.entry.content;

	                if (update) {
	                    // Checking for new major version
	                    var hasNewVersion = update.get('hasNewVersion');
	                    if (hasNewVersion) {
	                        var newVersion = update.get('newVersionLabel'),
	                            savedNewVersion = general_utils.normalizeBoolean(userPref.get('new_version')) || true,
	                            newVersionChecked = userPref.get('checked_new_version'),
	                            showNewVersion = (newVersion !== newVersionChecked) ||
	                                                ((newVersion === newVersionChecked) && savedNewVersion);

	                        if (showNewVersion) {
	                            this.renderSplunkMessage('new_version', 'greater');
	                            this.saveSplunkMessage('new_version', newVersion);
	                        }
	                    }

	                    // Checking for new maintenance version
	                    var hasNewMaintenanceVersion = update.get('hasNewMaintenanceVersion');
	                    if (hasNewMaintenanceVersion) {
	                        var newMaintenanceVersion = update.get('latestMaintenanceVersionLabel'),
	                            savedNewMaintenanceVersion = general_utils.normalizeBoolean(userPref.get('new_maintenance_version')) || true,
	                            newMaintenanceVersionChecked = userPref.get('checked_new_maintenance_version'),
	                            showNewMaintenanceVersion = (newMaintenanceVersion !== newMaintenanceVersionChecked) ||
	                                                        ((newMaintenanceVersion === newMaintenanceVersionChecked) && savedNewMaintenanceVersion);

	                        if (showNewMaintenanceVersion) {
	                            this.renderSplunkMessage('new_maintenance_version', 'greater');
	                            this.saveSplunkMessage('new_maintenance_version', newMaintenanceVersion);
	                        }
	                    }
	                }
	            },

	            _getSplunkMessagesFromUserPref: function() {
	                var newVersion = this.model.userPref.entry.content.get('new_version');
	                if (newVersion) {
	                    this.renderSplunkMessage('new_version', 'greater');
	                }

	                var newMaintenanceVersion = this.model.userPref.entry.content.get('new_maintenance_version');
	                if (newMaintenanceVersion) {
	                    this.renderSplunkMessage('new_maintenance_version', 'greater');
	                }
	            },

	            renderSplunkMessage: function(messageId, icon, options) {
	                var messageModel = new SplunkDBaseModel();

	                if (options) {
	                    messageModel.entry.content.set(options);
	                }

	                messageModel.entry.content.set('type', 'splunk');
	                messageModel.entry.content.set('severity', icon);
	                messageModel.entry.content.set('id', messageId);
	                messageModel.entry.set('name', messageId);

	                var messageView = new this.MessageView({
	                     model: {
	                        application: this.model.application,
	                        serverInfo: this.model.serverInfo,
	                        message: messageModel
	                    }
	                });

	                this.children['splunk-message' + messageModel.cid] = messageView;
	                this.$('[data-role=messages-list-divider]').after(messageView.render().$el);

	                this.numSplunkMessages++;
	                this.showHideMessages();
	            },

	            saveSplunkMessage: function(messageId, version) {
	                this.model.userPref.entry.content.set(messageId, true);
	                this.model.userPref.entry.content.set('checked_' + messageId, version);
	                this.model.userPref.save({});
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/messages/Message":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// splunk bar
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__("require/backbone"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/Icon"),
	    __webpack_require__("views/shared/splunkbar/messages/Message.pcssm"),
	    __webpack_require__("shim/splunk.util"),
	    __webpack_require__("uri/route"),
	    __webpack_require__("util/time")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    Backbone,
	    module,
	    BaseView,
	    IconView,
	    css,
	    splunk_util,
	    route,
	    time_utils
	){
	    /**
	     * View Hierarchy:
	     *
	     * Messages
	     */
	    return BaseView.extend({
	        moduleId: module.id,
	        css: css,
	        messageMap: {
	            'restart_required': _('Splunk must be restarted for changes to take effect. [[/manager/search/control|Click here to restart from Server controls]].').t(),
	            'orphaned_scheduled_searches': _('Click to view the [[/app/search/orphaned_scheduled_searches?form.scheduled_only=is_scheduled%3D1|orphaned scheduled searches]].  Reassign them to a valid user to re-enable or alternatively disable the searches.').t()
	        },
	        contactStr: '[http://www.splunk.com/r/getlicense Contact Splunk] (sales@splunk.com or +1.866.GET.SPLUNK) for details on how to renew.',

	        initialize: function() {
	            BaseView.prototype.initialize.apply(this, arguments);

	            var icons = {
	                info: 'infoCircle',
	                debug: 'infoCircle',
	                warn: 'warning',
	                error: 'error',
	                important: 'error',
	                greater: 'greater',
	                critical: 'error'
	            };

	            this.children.icon = new IconView({icon: icons[this.model.message.entry.content.get('severity')]});
	            this.children.deleteIcon = new IconView({icon: 'x'});

	            this.$el.attr('data-id', (this.model.message.entry.content.get("message") || ""));

	            // Passing empty local b/c of how the wiki transforms urls. Also removing leading '/'.
	            var appsLocalLink = route.appsLocal('', '', this.model.application.get('app')).slice(1);
	            var newVersionMaps = {
	                'new_version': splunk_util.sprintf('%s [!http://www.splunk.com/downloads %s]', _('New version available.').t(), _('Click here for details.').t()),
	                'new_maintenance_version': splunk_util.sprintf('%s [!http://www.splunk.com/downloads %s]', _('New maintenance version available.').t(), _('Click here for details.').t()),
	                'new_app_version': splunk_util.sprintf('%s [[%s|%s]]', _('A new version of ~#APPNAME#~ is available.').t(), appsLocalLink, _('Upgrade here.').t())
	            };
	            this.messageMap = $.extend(true, this.messageMap, newVersionMaps);
	        },

	        setAppIcon: function(appId) {
	            var iconSrc = route.appIcon(
	                    this.model.application.get('root'),
	                    this.model.application.get('locale'),
	                    this.model.application.get('owner'),
	                    appId);
	            this.$('[data-role=icon]').append('<img src="' + iconSrc + '" />');
	        },

	        render: function() {
	            var msgFullId = (this.model.message.entry.content.get('id')) ? this.model.message.entry.content.get('id').replace(/\_/g, '-') : this.model.message.id,
	                msgId = (this.model.message.entry.get('name') || ''),
	                msgLevel = this.model.message.entry.content.get('severity') || 'warn',
	                contactToken = '$CONTACT_SPLUNK_SALES_TEXT$',
	                messageMap = this.messageMap,
	                msg, msgHelp;

	            if (msgId.indexOf('app_version') > -1) {
	                msgId = 'new_app_version';
	            }

	            if (msgId && messageMap[msgId]) {
	                if (msgId === "orphaned_scheduled_searches") {
	                    msg = this.model.message.entry.content.get("message") || '';
	                    msg += messageMap[msgId];
	                } else if (msgId === 'new_app_version') {
	                    msg = messageMap[msgId];
	                    var appName = this.model.message.entry.content.get('appName') || '';
	                    msg = msg.replace('~#APPNAME#~', appName);
	                }
	                else {
	                    msg = messageMap[msgId];
	                }
	            } else {
	                msg = this.model.message.entry.content.get("message") || '';
	                if (this.model.message.entry.content.get('help') && this.model.application) {
	                    msgHelp = route.docHelp(
	                        this.model.application.get('root'),
	                        this.model.application.get('locale'),
	                        this.model.message.entry.content.get('help'));
	                }
	            }

	            if (msg.indexOf(contactToken) != -1) {
	                msg = msg.replace(contactToken, this.contactStr);
	            }

	            var msgTime = this.model.message.entry.content.get("timeCreated_iso");
	            if(msgTime){
	                var dateObj = time_utils.isoToDateObject(msgTime);
	                msgTime = dateObj.toLocaleString();
	            }

	            var formattedMsg = splunk_util.getWikiTransform(msg),
	                isSplunkMessage = this.model.message.entry.content.get("type") || false;

	            var html = this.compiledTemplate({
	                msg: formattedMsg,
	                msgLevel: msgLevel,
	                msgTime: msgTime || '',
	                type: isSplunkMessage,
	                msgHelp: msgHelp,
	                css: this.css
	            });

	            this.$el.html(html);
	            this.$el.attr('data-id', msgFullId);

	            if (msgId == 'new_app_version') {
	                this.setAppIcon(this.model.message.entry.content.get('appId'));
	            } else {
	                this.children.icon.render().appendTo(this.$('[data-role=icon]'));
	            }
	            if (isSplunkMessage) {
	                this.children.deleteIcon.render().appendTo(this.$('[data-action=delete-splunk-message]'));
	            } else {
	                this.children.deleteIcon.render().appendTo(this.$('[data-action=delete]'));
	            }

	            return this;
	        },

	        template: '\
	                <span class="<%- css[msgLevel] %>" data-role="icon"></span>\
	                <span class="<%- css.content %>" data-role="content"><%= msg %>\
	                <% if (msgHelp) { %>\
	                    <a href="<%= msgHelp %>" class="message-help external" target="_blank"><%- _("Learn more.").t() %></a>\
	                <% } %>\
	                </span>\
	                <span class="<%- css.time %>" data-role="time"><%- msgTime %></span>\
	                <% if (type == "splunk") { %>\
	                    <a href="#" class="<%-css.delete%>" data-action="delete-splunk-message"></a>\
	                <% } else { %>\
	                    <a href="#" class="<%-css.delete%>" data-action="delete"></a>\
	                <% } %>\
	        '
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/messages/Message.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(288);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Message.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Message.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "mixins/modelcollection":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("require/underscore"), __webpack_require__("util/Ticker"), __webpack_require__("helpers/Session")], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, Ticker, Session) {
	    /**
	     * @mixin modelcollection
	     */
	    return {
	        safeFetch: function() {
	            if (this.isFetching()) {
	                this.touched = arguments;
	                return;
	            }
	            delete this.touched;
	            this.fetch.apply(this, arguments);
	        },
	        isFetching: function() {
	            return this.fetchXhr && this.fetchXhr.state && this.fetchXhr.state()==='pending';
	        },
	        fetchAbort: function() {
	            if (this.isFetching()) {
	                delete this.touched;//fetch data will leak memory
	                if(_.isFunction(this.fetchXhr.abort)) {
	                    this.fetchXhr.abort();
	                }
	            }
	        },
	        deepOff: function() {
	            this.fetchAbort();
	            _(this.associated).each(function(associated) {
	                if (_.isFunction(associated.deepOff)) {
	                    associated.deepOff();
	                }
	            }, this);
	            if (_.isFunction(this.fetchData.deepOff)) {
	                this.fetchData.deepOff();
	            } else {
	                this.fetchData.off();
	            }
	            this.off();
	        },

	        DEFAULT_POLLING_DELAY: 1000,
	        ticker: null,
	        /**
	         * Start polling the model/collection.
	         * @param {Object} options
	         *     @param {Number} options.delay time to wait after each fetch before fetching again, in milliseconds, default is 1000
	         *     @param {Object} options.data the data that will be sent with each fetch
	         *     @param {Boolean} options.stopOnError stop polling if an error occurs on the model/collection, defaults to true
	         *     @param {Boolean} options.uiInactivity stop polling if a session timeout event occurs, defaults to false
	         *     @param {Function} options.condition callback to test if polling should continue
	         *                           will be passed the model/collection and should return boolean indicating whether polling should continue
	         *                           default behavior is to continue polling until cancelled for other reasons
	         * @memberOf modelcollection
	         */
	        startPolling: function(options) {
	            options = options || {};
	            if(this.ticker) {
	                throw new Error('startPolling cannot be called while already polling');
	            }

	            this.ticker = new Ticker({interval: options.delay || this.DEFAULT_POLLING_DELAY});
	            this.ticker.on('tick', function() {
	                if(options.condition && !options.condition(this)) {
	                    this.stopPolling();
	                }
	                else {
	                    this.safeFetch({ data: options.data });
	                }
	            }, this);

	            if(options.stopOnError !== false) {
	                this.on('error', this.stopPolling, this);
	            }

	            if(options.uiInactivity) {
	                Session.on('timeout', this.stopPolling, this);
	            }

	            this.ticker.start(true);
	        },
	        stopPolling: function() {
	            if(this.ticker) {
	                this.ticker.stop();
	                this.ticker.off();
	            }
	            this.off('error', this.stopPolling, this);
	            Session.off('timeout', this.stopPolling, this);
	            this.ticker = null;
	        }
	    };
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/shared/UpdateChecker":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("uri/route"),
	        __webpack_require__("models/Base")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, Backbone, route, BaseModel){
	        var Model = BaseModel.extend(
	            {
	                windowVariableName: 'spotParams',
	                windowCallbackName: 'displaySpot',
	                url: '',
	                initialize: function() {
	                    BaseModel.prototype.initialize.apply(this, arguments);
	                    if (!window[this.windowCallbackName]) {
	                        window[this.windowCallbackName] = function(){};
	                    }
	                },
	                sync: function(method, model, options) {
	                    if (method!=='read') {
	                        throw new Error('invalid method: ' + method);
	                    }
	                    options = options || {};
	                    var defaults = {
	                            data: {},
	                            dataType: 'script'
	                        },
	                        url = _.result(model, 'url') || model.id;
	                    defaults.url = url;
	                    $.extend(true, defaults, options);
	                    return Backbone.sync.call(this, method, model, defaults);
	                },
	                parse: function(response, options) {
	                    response = window[this.windowVariableName] || {};
	                    return response;
	                },
	                fetchHelper: function(serverInfoModel, webConfModel, applicationModel, userModel, checkerLocation, uid, options) {
	                    options = options || {};

	                    var licenseLabels,
	                        licenseDesc = 'pro',
	                        roles = (userModel.entry.content.get('roles')) ? userModel.entry.content.get('roles').join(',') : 'unknown',
	                        licenseGroup = serverInfoModel.entry.content.get('activeLicenseGroup') || 'unknown',
	                        userCapabilities = userModel.entry.content.get('capabilities') || '',
	                        roleAdminEquivalent = (userCapabilities.indexOf('admin_all_objects') > -1),
	                        licenseGuids = (serverInfoModel.entry.content.get('licenseKeys')) ? serverInfoModel.entry.content.get('licenseKeys').join(',') : 'unknown',
	                        guid = serverInfoModel.entry.content.get('guid'),
	                        masterGuid = serverInfoModel.entry.content.get('master_guid'),
	                        isFree = serverInfoModel.isFreeLicense(),
	                        isTrial = serverInfoModel.isTrial(),

	                        defaults = {
	                            url: route.updateChecker(
	                                webConfModel.entry.content.get('updateCheckerBaseURL'), 
	                                isFree,
	                                serverInfoModel.getVersion(),
	                                checkerLocation,
	                                isTrial,
	                                guid,
	                                masterGuid
	                            ),
	                            data: {
	                                locale: applicationModel.get('locale'),
	                                cpu_arch: serverInfoModel.entry.content.get('cpu_arch'),
	                                os_name: serverInfoModel.entry.content.get('os_name'),
	                                guid: serverInfoModel.entry.content.get('guid'),
	                                product: serverInfoModel.entry.content.get('product_type'),
	                                uid: uid,
	                                instance_type: serverInfoModel.entry.content.get('instance_type') || 'download',
	                                roles: roles,
	                                license_group: licenseGroup,
	                                role_admin_equivalent: roleAdminEquivalent,
	                                license_guids: licenseGuids,
	                                splunk_version: serverInfoModel.entry.content.get('version'),
	                                license_subgroup: serverInfoModel.entry.content.get('activeLicenseSubgroup')
	                            }
	                        };

	                    if (isFree) {
	                        licenseDesc = 'free';
	                    } else if (guid === masterGuid) {
	                        licenseLabels = _.uniq(serverInfoModel.entry.content.get('license_labels') || []).slice(0,3);
	                        if (licenseLabels.length) {
	                            licenseDesc = licenseLabels.join(',');
	                        }
	                    }
	                    defaults.data.license_desc = licenseDesc;
	                    return this.fetch($.extend(true, defaults, options));
	                }
	            }
	        );
	        return Model;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/messages/LegacyMessage":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// splunk bar
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        module,
	        __webpack_require__("views/Base"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        Backbone,
	        module,
	        BaseView,
	        splunk_util
	        ){
	        /**
	         * View Hierarchy:
	         *
	         * Messages
	         */
	        return BaseView.extend({
	            moduleId: module.id,
	            className: 'view-navbar-global navbar navbar-fixed-top',
	            messageMap: {
	                'restart_required': _('Splunk must be restarted for changes to take effect. [[/manager/search/control|Click here to restart from Server controls]].').t()
	            },
	            initialize: function() {
	                BaseView.prototype.initialize.apply(this, arguments);
	            },
	            render: function() {

	                var msgId = (this.model.get('id')||'').toLowerCase(),
	                    msg,
	                    msgLevel = this.model.get('severity') || 'warn';
	                if (msgId && this.messageMap[msgId]) {
	                    msg = this.messageMap[msgId];
	                } else {
	                    msg = this.model.get("content") || "";
	                }
	                var html = this.compiledTemplate({
	                    msgId: msgId,
	                    msg: splunk_util.getWikiTransform(msg),
	                    msgLevel: msgLevel
	                });
	                this.$el = $(html);
	                return this;
	            },
	            template: '<li class="<%- msgLevel %>" data-islegacy="1" data-id="<%- msgId %>">\
	                <span class="message-content"><%= msg %></span>\
	                <a href="#" class="delete-message"><i class="icon-x-circle"></i></a>\
	            </li>'
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "util/Ticker":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("require/underscore"), __webpack_require__("require/backbone")], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, Backbone) {
	    var Ticker = function(options) {
	        options || (options = {});
	        this.interval = options.interval || 1000;
	        this.cid = _.uniqueId('ticker');
	        if (options.params) {
	            this.params = options.params;
	        }
	        if (options.tick) {
	            this.tick();
	        }
	        if (options.start) {
	            this.start();
	        }
	    };
	    _.extend(Ticker.prototype, Backbone.Events, {
	        start: function(tick) {
	            if (this._intervalId) {
	                return false;
	            }
	            if (tick) {
	                this.tick();
	            }
	            this._intervalId = setInterval(
	                _.bind(this.tick, this),
	                this.interval
	            );
	            return true;
	        },
	        stop: function(tick) {
	            if (this._intervalId) {
	                if (tick) {
	                    this.tick();
	                }
	                clearInterval(this._intervalId);
	                delete this._intervalId;
	                return true;
	            }
	            return false;
	        },
	        restart: function(options) {
	            options || (options = {});
	            this.stop();
	            if (options.interval) {
	                this.interval = options.interval;
	            }
	            if (options.params) {
	                this.params = options.params;
	            }
	            this.start(options.tick);
	        },
	        tick: function(params) {
	            params || (params=this.params);
	            var args = _.isArray(params) ? params : [params];
	            this.trigger.apply(this, ['tick'].concat(args));
	        }
	    });
	    return Ticker;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/splunkbar/messages/MenuContents.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(290);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuContents.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuContents.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "helpers/Session":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/splunk.session"),
	        __webpack_require__("util/console"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, Backbone, _, SplunkSession, console, splunkUtil){
	    
	    var Session = function() {
	        this._session = SplunkSession.getInstance();
	        this.cid = _.uniqueId();
	        this.timeout = 'SessionTimeout.' + this.cid;
	        this.start = 'SessionStart.' + this.cid;
	        this.restart = 'HaltOnRestart.' + this.cid; //Stop all the pollers when restart is initiated from the UI

	        $(document).on(this.timeout, function() {
	            console.log("ui_inactivity_timeout occurred, current limit is: " + splunkUtil.getConfigValue("UI_INACTIVITY_TIMEOUT", this._session.UI_INACTIVITY_TIMEOUT) + ' minute(s)');
	            this.trigger('timeout');
	        }.bind(this));
	        $(document).on(this.start, function() {
	            this.trigger('start');
	        }.bind(this));
	        $(document).on(this.restart, function() {
	            this.trigger('restart');
	        }.bind(this));
	    };

	    _.extend(Session.prototype, Backbone.Events, {
	        dispose: function() {
	            $(document).off(this.timeout);
	            $(document).off(this.start);
	            $(document).off(this.restart);
	        }
	    });
	    
	    return new Session;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/activity/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    __webpack_require__("shim/jquery"),
	    module,
	    __webpack_require__("views/shared/Menu"),
	    __webpack_require__("views/shared/splunkbar/MenuButton"),
	    __webpack_require__("views/shared/splunkbar/activity/MenuContents"),
	    __webpack_require__("shim/splunk.util"),
	    __webpack_require__("uri/route")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    _,
	    $,
	    module,
	    MenuView,
	    MenuButtonView,
	    MenuContentsView,
	    splunk_util,
	    route
	){
	    return MenuView.extend({
	        moduleId: module.id,
	        initialize: function(){
	            this.options.toggleView = new MenuButtonView({ label: _('Activity').t() });
	            this.options.contentView = new MenuContentsView({
	                model: {
	                    user: this.model.user,
	                    application: this.model.application
	                }
	            });

	            MenuView.prototype.initialize.apply(this, arguments);
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/activity/MenuContents":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    __webpack_require__("shim/jquery"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/Icon"),
	    __webpack_require__(291),
	    __webpack_require__("views/shared/splunkbar/activity/MenuContents.pcssm"),
	    __webpack_require__("shim/splunk.util"),
	    __webpack_require__("uri/route")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    _,
	    $,
	    module,
	    BaseView,
	    IconView,
	    activityMenuTemplate,
	    css,
	    splunk_util,
	    route
	){
	    return BaseView.extend({
	        moduleId: module.id,
	        template: activityMenuTemplate,
	        tagName: 'ul',
	        className: css.view,
	        initialize: function(){
	            BaseView.prototype.initialize.apply(this, arguments);
	            this.model.application.on('change', this.render);
	            this.model.user.on('change', this.render);
	            this.app = (this.model.application.get('app') == 'system') ? 'search' : this.model.application.get('app');
	            this.statusLink = null;

	            this.children.icon1 = new IconView({icon: 'external' });
	            this.children.icon2 = new IconView({icon: 'external' });

	        },
	        render: function(){
	            // can't render unless we have app and roles info
	            if (typeof this.app === "undefined" ||
	                typeof this.model.user.entry.content.get('roles') === "undefined") {
	            } else {
	                var isAdmin = (this.model.user.entry.content.get('roles').indexOf('admin') > -1),
	                    jobLink = route.page(
	                        this.model.application.get('root'),
	                        this.model.application.get('locale'),
	                        this.app,
	                        'job_manager'
	                    ),
	                    alertsLink = null;

	                if (this.model.user.canUseAlerts()) {
	                    alertsLink = route.triggeredAlerts(this.model.application.get('root'), this.model.application.get('locale'), this.app);
	                }

	                var html = this.compiledTemplate({
	                        jobLink:jobLink,
	                        alertsLink:alertsLink,
	                        statusLink:this.statusLink,
	                        css: css
	                    });
	                this.$el.html(html);

	                this.children.icon1.render().appendTo(this.$('[data-role=jobs-link-external]'));
	                this.children.icon2.render().appendTo(this.$('[data-role=alerts-link-external]'));
	            }
	            return this;
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "shim/splunk.session":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("shim/splunk"),
	       __webpack_require__("shim/jquery"),
	       __webpack_require__("shim/lowpro"),
	       __webpack_require__("shim/splunk.logger"),
	       __webpack_require__("shim/splunk.util"),
	       __webpack_require__(265)], __WEBPACK_AMD_DEFINE_RESULT__ = function(Splunk) {
	    return Splunk.Session;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/splunkbar/activity/MenuContents.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(292);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuContents.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuContents.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "shim/lowpro":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("shim/jquery"), __webpack_require__(264)], __WEBPACK_AMD_DEFINE_RESULT__ = function($) {
	    return $.klass;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/splunkbar/help/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    __webpack_require__("shim/jquery"),
	    module,
	    __webpack_require__("views/shared/Menu"),
	    __webpack_require__("views/shared/splunkbar/MenuButton"),
	    __webpack_require__("views/shared/splunkbar/help/MenuContents"),
	    __webpack_require__("uri/route")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    _,
	    $,
	    module,
	    MenuView,
	    MenuButtonView,
	    MenuContentsView,
	    css,
	    route
	){
	    return MenuView.extend({
	        moduleId: module.id,
	        initialize: function(){
	            var isCloud = this.model.serverInfo.isCloud(),
	                defaults = {
	                    mode: 'dialog',
	                    hideLabelsAtSmallScreenSizes: isCloud,
	                    showIcon: isCloud
	                };
	            _.defaults(this.options, defaults);

	            this.options.contentView = new MenuContentsView({
	                model: this.model,
	                collection: {
	                    apps: this.collection.apps
	                },
	                hasTours: this.options.hasTours
	            });

	            this.options.toggleView = new MenuButtonView({
	                    label: isCloud ? _("Support & Services").t() : _("Help").t(),
	                    icon: this.options.showIcon ? 'questionCircle' : undefined,
	                    hideLabelsAtSmallScreenSizes: this.options.hideLabelsAtSmallScreenSizes,
	                    iconSize: this.options.iconSize || '1.667',
	                    model: this.model
	                });
	            MenuView.prototype.initialize.apply(this, arguments);
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/help/MenuContents":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    __webpack_require__("shim/jquery"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/Icon"),
	    __webpack_require__("views/shared/delegates/Popdown"),
	    __webpack_require__("views/shared/aboutmodal/Master"),
	    __webpack_require__("views/shared/controls/TextControl"),
	    __webpack_require__(298),
	    __webpack_require__("views/shared/splunkbar/help/MenuContents.pcssm"),
	    __webpack_require__("uri/route")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    _,
	    $,
	    module,
	    BaseView,
	    IconView,
	    Popdown,
	    AboutDialogView,
	    TextControl,
	    template,
	    css,
	    route
	){
	    return BaseView.extend({
	        moduleId: module.id,
	        template: template,
	        css: css,
	        initialize: function(){
	            BaseView.prototype.initialize.apply(this, arguments);
	            this.children.searchInput = new TextControl({
	                placeholder: _('Search Documentation').t(),
	                style: 'search',
	                useLocalClassNames: true
	            });
	            this.model.appLocal.on('change reset', this.debouncedRender, this);
	            this.debouncedRender();

	        },
	        events: {
	            'keypress input': "onDocsSearch",
	            'click li > a': function(e) {
	                this.closePopdown();
	            },
	            'click [data-action=about-splunk]': function(e) {
	                this.children.aboutDialog = new AboutDialogView({
	                    collection: this.collection.apps,
	                    model: {
	                        application: this.model.application,
	                        appLocal: this.model.appLocal,
	                        serverInfo: this.model.serverInfo
	                    },
	                    onHiddenRemove: true
	                });

	                //for compatibility with the module system, this needs to be wrapped in an extra div.

	                this.children.aboutDialog.show();
	                this.closePopdown();
	                e.preventDefault();
	            }
	        },
	        render: function(){
	            var isCloud = this.model.serverInfo.isCloud(),
	                isLite = this.model.serverInfo.isLite(),
	                html = this.compiledTemplate({
	                    docLink: this.makeDocLinkForPage(),
	                    makeDocLink: this.makeDocLink.bind(this),
	                    isLite: isLite,
	                    isCloud: isCloud,
	                    hasTours: this.options.hasTours,
	                    css: css
	                });
	            this.$el.html(html);

	            var $externalLinks = this.$('[data-link-external]');
	            for (var i = 0; i < $externalLinks.length; i++) {
	                this.children['icon' + i] || (this.children['icon' + i] = new IconView({icon: 'external' }));
	                this.children['icon' + i].render().appendTo($externalLinks.eq(i));
	            }

	            this.$('[data-role=form]').append(this.children.searchInput.render().el);
	            this.children.popdown = new Popdown({el:this.el, mode: 'dialog'});
	            return this;
	        },
	        onDocsSearch: function(evt){
	            if (evt.keyCode === 13){ //ENTER
	                var s = $(evt.target).val();
	                evt.preventDefault();
	                evt.stopPropagation();
	                $.when(this.serverInfoDfd).then(function(){
	                    var url = route.docSearch(this.model.application.get('locale'), this.model.serverInfo.getVersion(), this.model.serverInfo.isFreeLicense(), this.model.serverInfo.isTrial(), s);
	                    window.open(url);
	                }.bind(this));
	                $(evt.target).val('');
	                this.closePopdown();
	                evt.preventDefault();
	            }
	        },
	        makeDocLink: function(location) {
	            var app = this.model.application.get("app");
	            return route.docHelpInAppContext(
	                this.model.application.get("root"),
	                this.model.application.get("locale"),
	                location,
	                app,
	                this.model.appLocal.entry.content.get('version'),
	                app === 'system' ? true : this.model.appLocal.isCoreApp(),
	                this.model.appLocal.entry.content.get('docs_section_override')
	            );
	        },
	        makeDocLinkForPage: function() {
	            //this is the generic doc link based on the current location
	            var link = '/help',
	                location;

	            if(this.model.application.get('page') === '_admin'){
	                // making help link for manager page
	                location = 'manager';
	                if(window && window.location && typeof window.location.pathname === 'string'){
	                    //get the location from the browser
	                    var pathname = window.location.pathname;
	                    //remove '/manager/' and all characters before
	                    pathname = pathname.substring(pathname.indexOf('/manager/')+9);
	                    //next we should have app namespace to remove
	                    pathname = pathname.substring(pathname.indexOf('/')+1);
	                    //change slashes to dots
	                    pathname = pathname.replace(new RegExp('/', 'g'), '.');
	                    location += '.'+pathname;
	                }

	                link = route.docHelp(
	                    this.model.application.get("root"),
	                    this.model.application.get("locale"),
	                    location
	                );

	            } else {
	                // making help link for app page
	                // location is in form: app.<app_name>.<page_name>
	                location = [
	                    'app',
	                    this.model.application.get('app'),
	                    this.model.application.get('page')
	                ].join(".");

	                link = this.makeDocLink(location);

	            }
	            return link;
	        },
	        closePopdown: function(){
	            this.trigger('close');
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/aboutmodal/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("views/shared/ModalLocalClassNames"),
	    __webpack_require__("views/shared/aboutmodal/Title"),
	    __webpack_require__("views/shared/aboutmodal/Contents")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    module,
	    ModalView,
	    TitleView,
	    ContentsView
	){
	    return ModalView.extend({
	        moduleId: module.id,
	        initialize: function() {
	            this.options.titleView = new TitleView({
	                model: {
	                    serverInfo: this.options.model.serverInfo
	                }
	            });
	            this.options.bodyView = new ContentsView({
	                collection: this.options.collection,
	                model: {
	                    application: this.options.model.application,
	                    appLocal: this.options.model.appLocal,
	                    serverInfo: this.options.model.serverInfo
	                }
	            });

	            ModalView.prototype.initialize.apply(this, arguments);
	        },
	        render: function() {
	            ModalView.prototype.render.apply(this, arguments);
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/aboutmodal/Title":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/Icon"),
	    __webpack_require__("views/shared/aboutmodal/Title.pcssm")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    module,
	    BaseView,
	    IconView,
	    css
	){
	    return BaseView.extend({
	        moduleId: module.id,
	        css: css,
	        initialize: function() {
	            BaseView.prototype.initialize.apply(this, arguments);
	            this.model.serverInfo.on('change reset', function() {
	                this.render();
	            }, this);

	            this.children.splunk = new IconView({icon: 'splunk'});
	            this.children.prompt = new IconView({icon: 'greaterRegistered'});
	            this.children.product = new IconView({icon: this.model.serverInfo.getProductIconName()});
	        },

	        render: function() {
	            var html = this.compiledTemplate({
	                css: css,
	                isLite : this.model.serverInfo.isLite()
	            });

	            this.$el.html(html);

	            this.children.splunk.render().appendTo(this.$('[data-title-role=splunk]'));
	            this.children.prompt.render().appendTo(this.$('[data-title-role=prompt]'));
	            this.children.product.set({icon: this.model.serverInfo.getProductIconName()}).render().appendTo(this.$('[data-title-role=product]'));

	            return this;
	        },
	        template: '<span class="<%=css.splunk%>" data-title-role="splunk"></span>' +
	            '<span class="<%=isLite?css.promptLite:css.prompt%>" data-title-role="prompt"></span>' +
	            '<span class="<%=isLite?css.productLite:css.product%>" data-title-role="product"></span>'
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/aboutmodal/Title.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(293);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Title.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Title.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "contrib/jquery-2.1.0":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
	 * jQuery JavaScript Library v2.1.0
	 * http://jquery.com/
	 *
	 * Includes Sizzle.js
	 * http://sizzlejs.com/
	 *
	 * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
	 * Released under the MIT license
	 * http://jquery.org/license
	 *
	 * Date: 2014-01-23T21:10Z
	 */

	(function( global, factory ) {

		if ( typeof module === "object" && typeof module.exports === "object" ) {
			// For CommonJS and CommonJS-like environments where a proper window is present,
			// execute the factory and get jQuery
			// For environments that do not inherently posses a window with a document
			// (such as Node.js), expose a jQuery-making factory as module.exports
			// This accentuates the need for the creation of a real window
			// e.g. var jQuery = require("jquery")(window);
			// See ticket #14549 for more info
			module.exports = global.document ?
				factory( global, true ) :
				function( w ) {
					if ( !w.document ) {
						throw new Error( "jQuery requires a window with a document" );
					}
					return factory( w );
				};
		} else {
			factory( global );
		}

	// Pass this if window is not defined yet
	}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {

	// Can't do this because several apps including ASP.NET trace
	// the stack via arguments.caller.callee and Firefox dies if
	// you try to trace through "use strict" call chains. (#13335)
	// Support: Firefox 18+
	//

	var arr = [];

	var slice = arr.slice;

	var concat = arr.concat;

	var push = arr.push;

	var indexOf = arr.indexOf;

	var class2type = {};

	var toString = class2type.toString;

	var hasOwn = class2type.hasOwnProperty;

	var trim = "".trim;

	var support = {};



	var
		// Use the correct document accordingly with window argument (sandbox)
		document = window.document,

		version = "2.1.0",

		// Define a local copy of jQuery
		jQuery = function( selector, context ) {
			// The jQuery object is actually just the init constructor 'enhanced'
			// Need init if jQuery is called (just allow error to be thrown if not included)
			return new jQuery.fn.init( selector, context );
		},

		// Matches dashed string for camelizing
		rmsPrefix = /^-ms-/,
		rdashAlpha = /-([\da-z])/gi,

		// Used by jQuery.camelCase as callback to replace()
		fcamelCase = function( all, letter ) {
			return letter.toUpperCase();
		};

	jQuery.fn = jQuery.prototype = {
		// The current version of jQuery being used
		jquery: version,

		constructor: jQuery,

		// Start with an empty selector
		selector: "",

		// The default length of a jQuery object is 0
		length: 0,

		toArray: function() {
			return slice.call( this );
		},

		// Get the Nth element in the matched element set OR
		// Get the whole matched element set as a clean array
		get: function( num ) {
			return num != null ?

				// Return a 'clean' array
				( num < 0 ? this[ num + this.length ] : this[ num ] ) :

				// Return just the object
				slice.call( this );
		},

		// Take an array of elements and push it onto the stack
		// (returning the new matched element set)
		pushStack: function( elems ) {

			// Build a new jQuery matched element set
			var ret = jQuery.merge( this.constructor(), elems );

			// Add the old object onto the stack (as a reference)
			ret.prevObject = this;
			ret.context = this.context;

			// Return the newly-formed element set
			return ret;
		},

		// Execute a callback for every element in the matched set.
		// (You can seed the arguments with an array of args, but this is
		// only used internally.)
		each: function( callback, args ) {
			return jQuery.each( this, callback, args );
		},

		map: function( callback ) {
			return this.pushStack( jQuery.map(this, function( elem, i ) {
				return callback.call( elem, i, elem );
			}));
		},

		slice: function() {
			return this.pushStack( slice.apply( this, arguments ) );
		},

		first: function() {
			return this.eq( 0 );
		},

		last: function() {
			return this.eq( -1 );
		},

		eq: function( i ) {
			var len = this.length,
				j = +i + ( i < 0 ? len : 0 );
			return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
		},

		end: function() {
			return this.prevObject || this.constructor(null);
		},

		// For internal use only.
		// Behaves like an Array's method, not like a jQuery method.
		push: push,
		sort: arr.sort,
		splice: arr.splice
	};

	jQuery.extend = jQuery.fn.extend = function() {
		var options, name, src, copy, copyIsArray, clone,
			target = arguments[0] || {},
			i = 1,
			length = arguments.length,
			deep = false;

		// Handle a deep copy situation
		if ( typeof target === "boolean" ) {
			deep = target;

			// skip the boolean and the target
			target = arguments[ i ] || {};
			i++;
		}

		// Handle case when target is a string or something (possible in deep copy)
		if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
			target = {};
		}

		// extend jQuery itself if only one argument is passed
		if ( i === length ) {
			target = this;
			i--;
		}

		for ( ; i < length; i++ ) {
			// Only deal with non-null/undefined values
			if ( (options = arguments[ i ]) != null ) {
				// Extend the base object
				for ( name in options ) {
					src = target[ name ];
					copy = options[ name ];

					// Prevent never-ending loop
					if ( target === copy ) {
						continue;
					}

					// Recurse if we're merging plain objects or arrays
					if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
						if ( copyIsArray ) {
							copyIsArray = false;
							clone = src && jQuery.isArray(src) ? src : [];

						} else {
							clone = src && jQuery.isPlainObject(src) ? src : {};
						}

						// Never move original objects, clone them
						target[ name ] = jQuery.extend( deep, clone, copy );

					// Don't bring in undefined values
					} else if ( copy !== undefined ) {
						target[ name ] = copy;
					}
				}
			}
		}

		// Return the modified object
		return target;
	};

	jQuery.extend({
		// Unique for each copy of jQuery on the page
		expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),

		// Assume jQuery is ready without the ready module
		isReady: true,

		error: function( msg ) {
			throw new Error( msg );
		},

		noop: function() {},

		// See test/unit/core.js for details concerning isFunction.
		// Since version 1.3, DOM methods and functions like alert
		// aren't supported. They return false on IE (#2968).
		isFunction: function( obj ) {
			return jQuery.type(obj) === "function";
		},

		isArray: Array.isArray,

		isWindow: function( obj ) {
			return obj != null && obj === obj.window;
		},

		isNumeric: function( obj ) {
			// parseFloat NaNs numeric-cast false positives (null|true|false|"")
			// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
			// subtraction forces infinities to NaN
			return obj - parseFloat( obj ) >= 0;
		},

		isPlainObject: function( obj ) {
			// Not plain objects:
			// - Any object or value whose internal [[Class]] property is not "[object Object]"
			// - DOM nodes
			// - window
			if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
				return false;
			}

			// Support: Firefox <20
			// The try/catch suppresses exceptions thrown when attempting to access
			// the "constructor" property of certain host objects, ie. |window.location|
			// https://bugzilla.mozilla.org/show_bug.cgi?id=814622
			try {
				if ( obj.constructor &&
						!hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
					return false;
				}
			} catch ( e ) {
				return false;
			}

			// If the function hasn't returned already, we're confident that
			// |obj| is a plain object, created by {} or constructed with new Object
			return true;
		},

		isEmptyObject: function( obj ) {
			var name;
			for ( name in obj ) {
				return false;
			}
			return true;
		},

		type: function( obj ) {
			if ( obj == null ) {
				return obj + "";
			}
			// Support: Android < 4.0, iOS < 6 (functionish RegExp)
			return typeof obj === "object" || typeof obj === "function" ?
				class2type[ toString.call(obj) ] || "object" :
				typeof obj;
		},

		// Evaluates a script in a global context
		globalEval: function( code ) {
			var script,
				indirect = eval;

			code = jQuery.trim( code );

			if ( code ) {
				// If the code includes a valid, prologue position
				// strict mode pragma, execute code by injecting a
				// script tag into the document.
				if ( code.indexOf("use strict") === 1 ) {
					script = document.createElement("script");
					script.text = code;
					document.head.appendChild( script ).parentNode.removeChild( script );
				} else {
				// Otherwise, avoid the DOM node creation, insertion
				// and removal by using an indirect global eval
					indirect( code );
				}
			}
		},

		// Convert dashed to camelCase; used by the css and data modules
		// Microsoft forgot to hump their vendor prefix (#9572)
		camelCase: function( string ) {
			return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
		},

		nodeName: function( elem, name ) {
			return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
		},

		// args is for internal usage only
		each: function( obj, callback, args ) {
			var value,
				i = 0,
				length = obj.length,
				isArray = isArraylike( obj );

			if ( args ) {
				if ( isArray ) {
					for ( ; i < length; i++ ) {
						value = callback.apply( obj[ i ], args );

						if ( value === false ) {
							break;
						}
					}
				} else {
					for ( i in obj ) {
						value = callback.apply( obj[ i ], args );

						if ( value === false ) {
							break;
						}
					}
				}

			// A special, fast, case for the most common use of each
			} else {
				if ( isArray ) {
					for ( ; i < length; i++ ) {
						value = callback.call( obj[ i ], i, obj[ i ] );

						if ( value === false ) {
							break;
						}
					}
				} else {
					for ( i in obj ) {
						value = callback.call( obj[ i ], i, obj[ i ] );

						if ( value === false ) {
							break;
						}
					}
				}
			}

			return obj;
		},

		trim: function( text ) {
			return text == null ? "" : trim.call( text );
		},

		// results is for internal usage only
		makeArray: function( arr, results ) {
			var ret = results || [];

			if ( arr != null ) {
				if ( isArraylike( Object(arr) ) ) {
					jQuery.merge( ret,
						typeof arr === "string" ?
						[ arr ] : arr
					);
				} else {
					push.call( ret, arr );
				}
			}

			return ret;
		},

		inArray: function( elem, arr, i ) {
			return arr == null ? -1 : indexOf.call( arr, elem, i );
		},

		merge: function( first, second ) {
			var len = +second.length,
				j = 0,
				i = first.length;

			for ( ; j < len; j++ ) {
				first[ i++ ] = second[ j ];
			}

			first.length = i;

			return first;
		},

		grep: function( elems, callback, invert ) {
			var callbackInverse,
				matches = [],
				i = 0,
				length = elems.length,
				callbackExpect = !invert;

			// Go through the array, only saving the items
			// that pass the validator function
			for ( ; i < length; i++ ) {
				callbackInverse = !callback( elems[ i ], i );
				if ( callbackInverse !== callbackExpect ) {
					matches.push( elems[ i ] );
				}
			}

			return matches;
		},

		// arg is for internal usage only
		map: function( elems, callback, arg ) {
			var value,
				i = 0,
				length = elems.length,
				isArray = isArraylike( elems ),
				ret = [];

			// Go through the array, translating each of the items to their new values
			if ( isArray ) {
				for ( ; i < length; i++ ) {
					value = callback( elems[ i ], i, arg );

					if ( value != null ) {
						ret.push( value );
					}
				}

			// Go through every key on the object,
			} else {
				for ( i in elems ) {
					value = callback( elems[ i ], i, arg );

					if ( value != null ) {
						ret.push( value );
					}
				}
			}

			// Flatten any nested arrays
			return concat.apply( [], ret );
		},

		// A global GUID counter for objects
		guid: 1,

		// Bind a function to a context, optionally partially applying any
		// arguments.
		proxy: function( fn, context ) {
			var tmp, args, proxy;

			if ( typeof context === "string" ) {
				tmp = fn[ context ];
				context = fn;
				fn = tmp;
			}

			// Quick check to determine if target is callable, in the spec
			// this throws a TypeError, but we will just return undefined.
			if ( !jQuery.isFunction( fn ) ) {
				return undefined;
			}

			// Simulated bind
			args = slice.call( arguments, 2 );
			proxy = function() {
				return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
			};

			// Set the guid of unique handler to the same of original handler, so it can be removed
			proxy.guid = fn.guid = fn.guid || jQuery.guid++;

			return proxy;
		},

		now: Date.now,

		// jQuery.support is not used in Core but other projects attach their
		// properties to it so it needs to exist.
		support: support
	});

	// Populate the class2type map
	jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
		class2type[ "[object " + name + "]" ] = name.toLowerCase();
	});

	function isArraylike( obj ) {
		var length = obj.length,
			type = jQuery.type( obj );

		if ( type === "function" || jQuery.isWindow( obj ) ) {
			return false;
		}

		if ( obj.nodeType === 1 && length ) {
			return true;
		}

		return type === "array" || length === 0 ||
			typeof length === "number" && length > 0 && ( length - 1 ) in obj;
	}
	var Sizzle =
	/*!
	 * Sizzle CSS Selector Engine v1.10.16
	 * http://sizzlejs.com/
	 *
	 * Copyright 2013 jQuery Foundation, Inc. and other contributors
	 * Released under the MIT license
	 * http://jquery.org/license
	 *
	 * Date: 2014-01-13
	 */
	(function( window ) {

	var i,
		support,
		Expr,
		getText,
		isXML,
		compile,
		outermostContext,
		sortInput,
		hasDuplicate,

		// Local document vars
		setDocument,
		document,
		docElem,
		documentIsHTML,
		rbuggyQSA,
		rbuggyMatches,
		matches,
		contains,

		// Instance-specific data
		expando = "sizzle" + -(new Date()),
		preferredDoc = window.document,
		dirruns = 0,
		done = 0,
		classCache = createCache(),
		tokenCache = createCache(),
		compilerCache = createCache(),
		sortOrder = function( a, b ) {
			if ( a === b ) {
				hasDuplicate = true;
			}
			return 0;
		},

		// General-purpose constants
		strundefined = typeof undefined,
		MAX_NEGATIVE = 1 << 31,

		// Instance methods
		hasOwn = ({}).hasOwnProperty,
		arr = [],
		pop = arr.pop,
		push_native = arr.push,
		push = arr.push,
		slice = arr.slice,
		// Use a stripped-down indexOf if we can't use a native one
		indexOf = arr.indexOf || function( elem ) {
			var i = 0,
				len = this.length;
			for ( ; i < len; i++ ) {
				if ( this[i] === elem ) {
					return i;
				}
			}
			return -1;
		},

		booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",

		// Regular expressions

		// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
		whitespace = "[\\x20\\t\\r\\n\\f]",
		// http://www.w3.org/TR/css3-syntax/#characters
		characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",

		// Loosely modeled on CSS identifier characters
		// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
		// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
		identifier = characterEncoding.replace( "w", "w#" ),

		// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
		attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
			"*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",

		// Prefer arguments quoted,
		//   then not containing pseudos/brackets,
		//   then attribute selectors/non-parenthetical expressions,
		//   then anything else
		// These preferences are here to reduce the number of selectors
		//   needing tokenize in the PSEUDO preFilter
		pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",

		// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
		rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),

		rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
		rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),

		rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),

		rpseudo = new RegExp( pseudos ),
		ridentifier = new RegExp( "^" + identifier + "$" ),

		matchExpr = {
			"ID": new RegExp( "^#(" + characterEncoding + ")" ),
			"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
			"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
			"ATTR": new RegExp( "^" + attributes ),
			"PSEUDO": new RegExp( "^" + pseudos ),
			"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
				"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
				"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
			"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
			// For use in libraries implementing .is()
			// We use this for POS matching in `select`
			"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
				whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
		},

		rinputs = /^(?:input|select|textarea|button)$/i,
		rheader = /^h\d$/i,

		rnative = /^[^{]+\{\s*\[native \w/,

		// Easily-parseable/retrievable ID or TAG or CLASS selectors
		rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,

		rsibling = /[+~]/,
		rescape = /'|\\/g,

		// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
		runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
		funescape = function( _, escaped, escapedWhitespace ) {
			var high = "0x" + escaped - 0x10000;
			// NaN means non-codepoint
			// Support: Firefox
			// Workaround erroneous numeric interpretation of +"0x"
			return high !== high || escapedWhitespace ?
				escaped :
				high < 0 ?
					// BMP codepoint
					String.fromCharCode( high + 0x10000 ) :
					// Supplemental Plane codepoint (surrogate pair)
					String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
		};

	// Optimize for push.apply( _, NodeList )
	try {
		push.apply(
			(arr = slice.call( preferredDoc.childNodes )),
			preferredDoc.childNodes
		);
		// Support: Android<4.0
		// Detect silently failing push.apply
		arr[ preferredDoc.childNodes.length ].nodeType;
	} catch ( e ) {
		push = { apply: arr.length ?

			// Leverage slice if possible
			function( target, els ) {
				push_native.apply( target, slice.call(els) );
			} :

			// Support: IE<9
			// Otherwise append directly
			function( target, els ) {
				var j = target.length,
					i = 0;
				// Can't trust NodeList.length
				while ( (target[j++] = els[i++]) ) {}
				target.length = j - 1;
			}
		};
	}

	function Sizzle( selector, context, results, seed ) {
		var match, elem, m, nodeType,
			// QSA vars
			i, groups, old, nid, newContext, newSelector;

		if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
			setDocument( context );
		}

		context = context || document;
		results = results || [];

		if ( !selector || typeof selector !== "string" ) {
			return results;
		}

		if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
			return [];
		}

		if ( documentIsHTML && !seed ) {

			// Shortcuts
			if ( (match = rquickExpr.exec( selector )) ) {
				// Speed-up: Sizzle("#ID")
				if ( (m = match[1]) ) {
					if ( nodeType === 9 ) {
						elem = context.getElementById( m );
						// Check parentNode to catch when Blackberry 4.6 returns
						// nodes that are no longer in the document (jQuery #6963)
						if ( elem && elem.parentNode ) {
							// Handle the case where IE, Opera, and Webkit return items
							// by name instead of ID
							if ( elem.id === m ) {
								results.push( elem );
								return results;
							}
						} else {
							return results;
						}
					} else {
						// Context is not a document
						if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
							contains( context, elem ) && elem.id === m ) {
							results.push( elem );
							return results;
						}
					}

				// Speed-up: Sizzle("TAG")
				} else if ( match[2] ) {
					push.apply( results, context.getElementsByTagName( selector ) );
					return results;

				// Speed-up: Sizzle(".CLASS")
				} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
					push.apply( results, context.getElementsByClassName( m ) );
					return results;
				}
			}

			// QSA path
			if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
				nid = old = expando;
				newContext = context;
				newSelector = nodeType === 9 && selector;

				// qSA works strangely on Element-rooted queries
				// We can work around this by specifying an extra ID on the root
				// and working up from there (Thanks to Andrew Dupont for the technique)
				// IE 8 doesn't work on object elements
				if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
					groups = tokenize( selector );

					if ( (old = context.getAttribute("id")) ) {
						nid = old.replace( rescape, "\\$&" );
					} else {
						context.setAttribute( "id", nid );
					}
					nid = "[id='" + nid + "'] ";

					i = groups.length;
					while ( i-- ) {
						groups[i] = nid + toSelector( groups[i] );
					}
					newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
					newSelector = groups.join(",");
				}

				if ( newSelector ) {
					try {
						push.apply( results,
							newContext.querySelectorAll( newSelector )
						);
						return results;
					} catch(qsaError) {
					} finally {
						if ( !old ) {
							context.removeAttribute("id");
						}
					}
				}
			}
		}

		// All others
		return select( selector.replace( rtrim, "$1" ), context, results, seed );
	}

	/**
	 * Create key-value caches of limited size
	 * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
	 *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
	 *	deleting the oldest entry
	 */
	function createCache() {
		var keys = [];

		function cache( key, value ) {
			// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
			if ( keys.push( key + " " ) > Expr.cacheLength ) {
				// Only keep the most recent entries
				delete cache[ keys.shift() ];
			}
			return (cache[ key + " " ] = value);
		}
		return cache;
	}

	/**
	 * Mark a function for special use by Sizzle
	 * @param {Function} fn The function to mark
	 */
	function markFunction( fn ) {
		fn[ expando ] = true;
		return fn;
	}

	/**
	 * Support testing using an element
	 * @param {Function} fn Passed the created div and expects a boolean result
	 */
	function assert( fn ) {
		var div = document.createElement("div");

		try {
			return !!fn( div );
		} catch (e) {
			return false;
		} finally {
			// Remove from its parent by default
			if ( div.parentNode ) {
				div.parentNode.removeChild( div );
			}
			// release memory in IE
			div = null;
		}
	}

	/**
	 * Adds the same handler for all of the specified attrs
	 * @param {String} attrs Pipe-separated list of attributes
	 * @param {Function} handler The method that will be applied
	 */
	function addHandle( attrs, handler ) {
		var arr = attrs.split("|"),
			i = attrs.length;

		while ( i-- ) {
			Expr.attrHandle[ arr[i] ] = handler;
		}
	}

	/**
	 * Checks document order of two siblings
	 * @param {Element} a
	 * @param {Element} b
	 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
	 */
	function siblingCheck( a, b ) {
		var cur = b && a,
			diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
				( ~b.sourceIndex || MAX_NEGATIVE ) -
				( ~a.sourceIndex || MAX_NEGATIVE );

		// Use IE sourceIndex if available on both nodes
		if ( diff ) {
			return diff;
		}

		// Check if b follows a
		if ( cur ) {
			while ( (cur = cur.nextSibling) ) {
				if ( cur === b ) {
					return -1;
				}
			}
		}

		return a ? 1 : -1;
	}

	/**
	 * Returns a function to use in pseudos for input types
	 * @param {String} type
	 */
	function createInputPseudo( type ) {
		return function( elem ) {
			var name = elem.nodeName.toLowerCase();
			return name === "input" && elem.type === type;
		};
	}

	/**
	 * Returns a function to use in pseudos for buttons
	 * @param {String} type
	 */
	function createButtonPseudo( type ) {
		return function( elem ) {
			var name = elem.nodeName.toLowerCase();
			return (name === "input" || name === "button") && elem.type === type;
		};
	}

	/**
	 * Returns a function to use in pseudos for positionals
	 * @param {Function} fn
	 */
	function createPositionalPseudo( fn ) {
		return markFunction(function( argument ) {
			argument = +argument;
			return markFunction(function( seed, matches ) {
				var j,
					matchIndexes = fn( [], seed.length, argument ),
					i = matchIndexes.length;

				// Match elements found at the specified indexes
				while ( i-- ) {
					if ( seed[ (j = matchIndexes[i]) ] ) {
						seed[j] = !(matches[j] = seed[j]);
					}
				}
			});
		});
	}

	/**
	 * Checks a node for validity as a Sizzle context
	 * @param {Element|Object=} context
	 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
	 */
	function testContext( context ) {
		return context && typeof context.getElementsByTagName !== strundefined && context;
	}

	// Expose support vars for convenience
	support = Sizzle.support = {};

	/**
	 * Detects XML nodes
	 * @param {Element|Object} elem An element or a document
	 * @returns {Boolean} True iff elem is a non-HTML XML node
	 */
	isXML = Sizzle.isXML = function( elem ) {
		// documentElement is verified for cases where it doesn't yet exist
		// (such as loading iframes in IE - #4833)
		var documentElement = elem && (elem.ownerDocument || elem).documentElement;
		return documentElement ? documentElement.nodeName !== "HTML" : false;
	};

	/**
	 * Sets document-related variables once based on the current document
	 * @param {Element|Object} [doc] An element or document object to use to set the document
	 * @returns {Object} Returns the current document
	 */
	setDocument = Sizzle.setDocument = function( node ) {
		var hasCompare,
			doc = node ? node.ownerDocument || node : preferredDoc,
			parent = doc.defaultView;

		// If no document and documentElement is available, return
		if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
			return document;
		}

		// Set our document
		document = doc;
		docElem = doc.documentElement;

		// Support tests
		documentIsHTML = !isXML( doc );

		// Support: IE>8
		// If iframe document is assigned to "document" variable and if iframe has been reloaded,
		// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
		// IE6-8 do not support the defaultView property so parent will be undefined
		if ( parent && parent !== parent.top ) {
			// IE11 does not have attachEvent, so all must suffer
			if ( parent.addEventListener ) {
				parent.addEventListener( "unload", function() {
					setDocument();
				}, false );
			} else if ( parent.attachEvent ) {
				parent.attachEvent( "onunload", function() {
					setDocument();
				});
			}
		}

		/* Attributes
		---------------------------------------------------------------------- */

		// Support: IE<8
		// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
		support.attributes = assert(function( div ) {
			div.className = "i";
			return !div.getAttribute("className");
		});

		/* getElement(s)By*
		---------------------------------------------------------------------- */

		// Check if getElementsByTagName("*") returns only elements
		support.getElementsByTagName = assert(function( div ) {
			div.appendChild( doc.createComment("") );
			return !div.getElementsByTagName("*").length;
		});

		// Check if getElementsByClassName can be trusted
		support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {
			div.innerHTML = "<div class='a'></div><div class='a i'></div>";

			// Support: Safari<4
			// Catch class over-caching
			div.firstChild.className = "i";
			// Support: Opera<10
			// Catch gEBCN failure to find non-leading classes
			return div.getElementsByClassName("i").length === 2;
		});

		// Support: IE<10
		// Check if getElementById returns elements by name
		// The broken getElementById methods don't pick up programatically-set names,
		// so use a roundabout getElementsByName test
		support.getById = assert(function( div ) {
			docElem.appendChild( div ).id = expando;
			return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
		});

		// ID find and filter
		if ( support.getById ) {
			Expr.find["ID"] = function( id, context ) {
				if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
					var m = context.getElementById( id );
					// Check parentNode to catch when Blackberry 4.6 returns
					// nodes that are no longer in the document #6963
					return m && m.parentNode ? [m] : [];
				}
			};
			Expr.filter["ID"] = function( id ) {
				var attrId = id.replace( runescape, funescape );
				return function( elem ) {
					return elem.getAttribute("id") === attrId;
				};
			};
		} else {
			// Support: IE6/7
			// getElementById is not reliable as a find shortcut
			delete Expr.find["ID"];

			Expr.filter["ID"] =  function( id ) {
				var attrId = id.replace( runescape, funescape );
				return function( elem ) {
					var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
					return node && node.value === attrId;
				};
			};
		}

		// Tag
		Expr.find["TAG"] = support.getElementsByTagName ?
			function( tag, context ) {
				if ( typeof context.getElementsByTagName !== strundefined ) {
					return context.getElementsByTagName( tag );
				}
			} :
			function( tag, context ) {
				var elem,
					tmp = [],
					i = 0,
					results = context.getElementsByTagName( tag );

				// Filter out possible comments
				if ( tag === "*" ) {
					while ( (elem = results[i++]) ) {
						if ( elem.nodeType === 1 ) {
							tmp.push( elem );
						}
					}

					return tmp;
				}
				return results;
			};

		// Class
		Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
			if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
				return context.getElementsByClassName( className );
			}
		};

		/* QSA/matchesSelector
		---------------------------------------------------------------------- */

		// QSA and matchesSelector support

		// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
		rbuggyMatches = [];

		// qSa(:focus) reports false when true (Chrome 21)
		// We allow this because of a bug in IE8/9 that throws an error
		// whenever `document.activeElement` is accessed on an iframe
		// So, we allow :focus to pass through QSA all the time to avoid the IE error
		// See http://bugs.jquery.com/ticket/13378
		rbuggyQSA = [];

		if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
			// Build QSA regex
			// Regex strategy adopted from Diego Perini
			assert(function( div ) {
				// Select is set to empty string on purpose
				// This is to test IE's treatment of not explicitly
				// setting a boolean content attribute,
				// since its presence should be enough
				// http://bugs.jquery.com/ticket/12359
				div.innerHTML = "<select t=''><option selected=''></option></select>";

				// Support: IE8, Opera 10-12
				// Nothing should be selected when empty strings follow ^= or $= or *=
				if ( div.querySelectorAll("[t^='']").length ) {
					rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
				}

				// Support: IE8
				// Boolean attributes and "value" are not treated correctly
				if ( !div.querySelectorAll("[selected]").length ) {
					rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
				}

				// Webkit/Opera - :checked should return selected option elements
				// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
				// IE8 throws error here and will not see later tests
				if ( !div.querySelectorAll(":checked").length ) {
					rbuggyQSA.push(":checked");
				}
			});

			assert(function( div ) {
				// Support: Windows 8 Native Apps
				// The type and name attributes are restricted during .innerHTML assignment
				var input = doc.createElement("input");
				input.setAttribute( "type", "hidden" );
				div.appendChild( input ).setAttribute( "name", "D" );

				// Support: IE8
				// Enforce case-sensitivity of name attribute
				if ( div.querySelectorAll("[name=d]").length ) {
					rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
				}

				// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
				// IE8 throws error here and will not see later tests
				if ( !div.querySelectorAll(":enabled").length ) {
					rbuggyQSA.push( ":enabled", ":disabled" );
				}

				// Opera 10-11 does not throw on post-comma invalid pseudos
				div.querySelectorAll("*,:x");
				rbuggyQSA.push(",.*:");
			});
		}

		if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||
			docElem.mozMatchesSelector ||
			docElem.oMatchesSelector ||
			docElem.msMatchesSelector) )) ) {

			assert(function( div ) {
				// Check to see if it's possible to do matchesSelector
				// on a disconnected node (IE 9)
				support.disconnectedMatch = matches.call( div, "div" );

				// This should fail with an exception
				// Gecko does not error, returns false instead
				matches.call( div, "[s!='']:x" );
				rbuggyMatches.push( "!=", pseudos );
			});
		}

		rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
		rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );

		/* Contains
		---------------------------------------------------------------------- */
		hasCompare = rnative.test( docElem.compareDocumentPosition );

		// Element contains another
		// Purposefully does not implement inclusive descendent
		// As in, an element does not contain itself
		contains = hasCompare || rnative.test( docElem.contains ) ?
			function( a, b ) {
				var adown = a.nodeType === 9 ? a.documentElement : a,
					bup = b && b.parentNode;
				return a === bup || !!( bup && bup.nodeType === 1 && (
					adown.contains ?
						adown.contains( bup ) :
						a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
				));
			} :
			function( a, b ) {
				if ( b ) {
					while ( (b = b.parentNode) ) {
						if ( b === a ) {
							return true;
						}
					}
				}
				return false;
			};

		/* Sorting
		---------------------------------------------------------------------- */

		// Document order sorting
		sortOrder = hasCompare ?
		function( a, b ) {

			// Flag for duplicate removal
			if ( a === b ) {
				hasDuplicate = true;
				return 0;
			}

			// Sort on method existence if only one input has compareDocumentPosition
			var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
			if ( compare ) {
				return compare;
			}

			// Calculate position if both inputs belong to the same document
			compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
				a.compareDocumentPosition( b ) :

				// Otherwise we know they are disconnected
				1;

			// Disconnected nodes
			if ( compare & 1 ||
				(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {

				// Choose the first element that is related to our preferred document
				if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
					return -1;
				}
				if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
					return 1;
				}

				// Maintain original order
				return sortInput ?
					( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
					0;
			}

			return compare & 4 ? -1 : 1;
		} :
		function( a, b ) {
			// Exit early if the nodes are identical
			if ( a === b ) {
				hasDuplicate = true;
				return 0;
			}

			var cur,
				i = 0,
				aup = a.parentNode,
				bup = b.parentNode,
				ap = [ a ],
				bp = [ b ];

			// Parentless nodes are either documents or disconnected
			if ( !aup || !bup ) {
				return a === doc ? -1 :
					b === doc ? 1 :
					aup ? -1 :
					bup ? 1 :
					sortInput ?
					( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
					0;

			// If the nodes are siblings, we can do a quick check
			} else if ( aup === bup ) {
				return siblingCheck( a, b );
			}

			// Otherwise we need full lists of their ancestors for comparison
			cur = a;
			while ( (cur = cur.parentNode) ) {
				ap.unshift( cur );
			}
			cur = b;
			while ( (cur = cur.parentNode) ) {
				bp.unshift( cur );
			}

			// Walk down the tree looking for a discrepancy
			while ( ap[i] === bp[i] ) {
				i++;
			}

			return i ?
				// Do a sibling check if the nodes have a common ancestor
				siblingCheck( ap[i], bp[i] ) :

				// Otherwise nodes in our document sort first
				ap[i] === preferredDoc ? -1 :
				bp[i] === preferredDoc ? 1 :
				0;
		};

		return doc;
	};

	Sizzle.matches = function( expr, elements ) {
		return Sizzle( expr, null, null, elements );
	};

	Sizzle.matchesSelector = function( elem, expr ) {
		// Set document vars if needed
		if ( ( elem.ownerDocument || elem ) !== document ) {
			setDocument( elem );
		}

		// Make sure that attribute selectors are quoted
		expr = expr.replace( rattributeQuotes, "='$1']" );

		if ( support.matchesSelector && documentIsHTML &&
			( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
			( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {

			try {
				var ret = matches.call( elem, expr );

				// IE 9's matchesSelector returns false on disconnected nodes
				if ( ret || support.disconnectedMatch ||
						// As well, disconnected nodes are said to be in a document
						// fragment in IE 9
						elem.document && elem.document.nodeType !== 11 ) {
					return ret;
				}
			} catch(e) {}
		}

		return Sizzle( expr, document, null, [elem] ).length > 0;
	};

	Sizzle.contains = function( context, elem ) {
		// Set document vars if needed
		if ( ( context.ownerDocument || context ) !== document ) {
			setDocument( context );
		}
		return contains( context, elem );
	};

	Sizzle.attr = function( elem, name ) {
		// Set document vars if needed
		if ( ( elem.ownerDocument || elem ) !== document ) {
			setDocument( elem );
		}

		var fn = Expr.attrHandle[ name.toLowerCase() ],
			// Don't get fooled by Object.prototype properties (jQuery #13807)
			val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
				fn( elem, name, !documentIsHTML ) :
				undefined;

		return val !== undefined ?
			val :
			support.attributes || !documentIsHTML ?
				elem.getAttribute( name ) :
				(val = elem.getAttributeNode(name)) && val.specified ?
					val.value :
					null;
	};

	Sizzle.error = function( msg ) {
		throw new Error( "Syntax error, unrecognized expression: " + msg );
	};

	/**
	 * Document sorting and removing duplicates
	 * @param {ArrayLike} results
	 */
	Sizzle.uniqueSort = function( results ) {
		var elem,
			duplicates = [],
			j = 0,
			i = 0;

		// Unless we *know* we can detect duplicates, assume their presence
		hasDuplicate = !support.detectDuplicates;
		sortInput = !support.sortStable && results.slice( 0 );
		results.sort( sortOrder );

		if ( hasDuplicate ) {
			while ( (elem = results[i++]) ) {
				if ( elem === results[ i ] ) {
					j = duplicates.push( i );
				}
			}
			while ( j-- ) {
				results.splice( duplicates[ j ], 1 );
			}
		}

		// Clear input after sorting to release objects
		// See https://github.com/jquery/sizzle/pull/225
		sortInput = null;

		return results;
	};

	/**
	 * Utility function for retrieving the text value of an array of DOM nodes
	 * @param {Array|Element} elem
	 */
	getText = Sizzle.getText = function( elem ) {
		var node,
			ret = "",
			i = 0,
			nodeType = elem.nodeType;

		if ( !nodeType ) {
			// If no nodeType, this is expected to be an array
			while ( (node = elem[i++]) ) {
				// Do not traverse comment nodes
				ret += getText( node );
			}
		} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
			// Use textContent for elements
			// innerText usage removed for consistency of new lines (jQuery #11153)
			if ( typeof elem.textContent === "string" ) {
				return elem.textContent;
			} else {
				// Traverse its children
				for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
					ret += getText( elem );
				}
			}
		} else if ( nodeType === 3 || nodeType === 4 ) {
			return elem.nodeValue;
		}
		// Do not include comment or processing instruction nodes

		return ret;
	};

	Expr = Sizzle.selectors = {

		// Can be adjusted by the user
		cacheLength: 50,

		createPseudo: markFunction,

		match: matchExpr,

		attrHandle: {},

		find: {},

		relative: {
			">": { dir: "parentNode", first: true },
			" ": { dir: "parentNode" },
			"+": { dir: "previousSibling", first: true },
			"~": { dir: "previousSibling" }
		},

		preFilter: {
			"ATTR": function( match ) {
				match[1] = match[1].replace( runescape, funescape );

				// Move the given value to match[3] whether quoted or unquoted
				match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );

				if ( match[2] === "~=" ) {
					match[3] = " " + match[3] + " ";
				}

				return match.slice( 0, 4 );
			},

			"CHILD": function( match ) {
				/* matches from matchExpr["CHILD"]
					1 type (only|nth|...)
					2 what (child|of-type)
					3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
					4 xn-component of xn+y argument ([+-]?\d*n|)
					5 sign of xn-component
					6 x of xn-component
					7 sign of y-component
					8 y of y-component
				*/
				match[1] = match[1].toLowerCase();

				if ( match[1].slice( 0, 3 ) === "nth" ) {
					// nth-* requires argument
					if ( !match[3] ) {
						Sizzle.error( match[0] );
					}

					// numeric x and y parameters for Expr.filter.CHILD
					// remember that false/true cast respectively to 0/1
					match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
					match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );

				// other types prohibit arguments
				} else if ( match[3] ) {
					Sizzle.error( match[0] );
				}

				return match;
			},

			"PSEUDO": function( match ) {
				var excess,
					unquoted = !match[5] && match[2];

				if ( matchExpr["CHILD"].test( match[0] ) ) {
					return null;
				}

				// Accept quoted arguments as-is
				if ( match[3] && match[4] !== undefined ) {
					match[2] = match[4];

				// Strip excess characters from unquoted arguments
				} else if ( unquoted && rpseudo.test( unquoted ) &&
					// Get excess from tokenize (recursively)
					(excess = tokenize( unquoted, true )) &&
					// advance to the next closing parenthesis
					(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {

					// excess is a negative index
					match[0] = match[0].slice( 0, excess );
					match[2] = unquoted.slice( 0, excess );
				}

				// Return only captures needed by the pseudo filter method (type and argument)
				return match.slice( 0, 3 );
			}
		},

		filter: {

			"TAG": function( nodeNameSelector ) {
				var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
				return nodeNameSelector === "*" ?
					function() { return true; } :
					function( elem ) {
						return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
					};
			},

			"CLASS": function( className ) {
				var pattern = classCache[ className + " " ];

				return pattern ||
					(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
					classCache( className, function( elem ) {
						return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
					});
			},

			"ATTR": function( name, operator, check ) {
				return function( elem ) {
					var result = Sizzle.attr( elem, name );

					if ( result == null ) {
						return operator === "!=";
					}
					if ( !operator ) {
						return true;
					}

					result += "";

					return operator === "=" ? result === check :
						operator === "!=" ? result !== check :
						operator === "^=" ? check && result.indexOf( check ) === 0 :
						operator === "*=" ? check && result.indexOf( check ) > -1 :
						operator === "$=" ? check && result.slice( -check.length ) === check :
						operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
						operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
						false;
				};
			},

			"CHILD": function( type, what, argument, first, last ) {
				var simple = type.slice( 0, 3 ) !== "nth",
					forward = type.slice( -4 ) !== "last",
					ofType = what === "of-type";

				return first === 1 && last === 0 ?

					// Shortcut for :nth-*(n)
					function( elem ) {
						return !!elem.parentNode;
					} :

					function( elem, context, xml ) {
						var cache, outerCache, node, diff, nodeIndex, start,
							dir = simple !== forward ? "nextSibling" : "previousSibling",
							parent = elem.parentNode,
							name = ofType && elem.nodeName.toLowerCase(),
							useCache = !xml && !ofType;

						if ( parent ) {

							// :(first|last|only)-(child|of-type)
							if ( simple ) {
								while ( dir ) {
									node = elem;
									while ( (node = node[ dir ]) ) {
										if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
											return false;
										}
									}
									// Reverse direction for :only-* (if we haven't yet done so)
									start = dir = type === "only" && !start && "nextSibling";
								}
								return true;
							}

							start = [ forward ? parent.firstChild : parent.lastChild ];

							// non-xml :nth-child(...) stores cache data on `parent`
							if ( forward && useCache ) {
								// Seek `elem` from a previously-cached index
								outerCache = parent[ expando ] || (parent[ expando ] = {});
								cache = outerCache[ type ] || [];
								nodeIndex = cache[0] === dirruns && cache[1];
								diff = cache[0] === dirruns && cache[2];
								node = nodeIndex && parent.childNodes[ nodeIndex ];

								while ( (node = ++nodeIndex && node && node[ dir ] ||

									// Fallback to seeking `elem` from the start
									(diff = nodeIndex = 0) || start.pop()) ) {

									// When found, cache indexes on `parent` and break
									if ( node.nodeType === 1 && ++diff && node === elem ) {
										outerCache[ type ] = [ dirruns, nodeIndex, diff ];
										break;
									}
								}

							// Use previously-cached element index if available
							} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
								diff = cache[1];

							// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
							} else {
								// Use the same loop as above to seek `elem` from the start
								while ( (node = ++nodeIndex && node && node[ dir ] ||
									(diff = nodeIndex = 0) || start.pop()) ) {

									if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
										// Cache the index of each encountered element
										if ( useCache ) {
											(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
										}

										if ( node === elem ) {
											break;
										}
									}
								}
							}

							// Incorporate the offset, then check against cycle size
							diff -= last;
							return diff === first || ( diff % first === 0 && diff / first >= 0 );
						}
					};
			},

			"PSEUDO": function( pseudo, argument ) {
				// pseudo-class names are case-insensitive
				// http://www.w3.org/TR/selectors/#pseudo-classes
				// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
				// Remember that setFilters inherits from pseudos
				var args,
					fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
						Sizzle.error( "unsupported pseudo: " + pseudo );

				// The user may use createPseudo to indicate that
				// arguments are needed to create the filter function
				// just as Sizzle does
				if ( fn[ expando ] ) {
					return fn( argument );
				}

				// But maintain support for old signatures
				if ( fn.length > 1 ) {
					args = [ pseudo, pseudo, "", argument ];
					return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
						markFunction(function( seed, matches ) {
							var idx,
								matched = fn( seed, argument ),
								i = matched.length;
							while ( i-- ) {
								idx = indexOf.call( seed, matched[i] );
								seed[ idx ] = !( matches[ idx ] = matched[i] );
							}
						}) :
						function( elem ) {
							return fn( elem, 0, args );
						};
				}

				return fn;
			}
		},

		pseudos: {
			// Potentially complex pseudos
			"not": markFunction(function( selector ) {
				// Trim the selector passed to compile
				// to avoid treating leading and trailing
				// spaces as combinators
				var input = [],
					results = [],
					matcher = compile( selector.replace( rtrim, "$1" ) );

				return matcher[ expando ] ?
					markFunction(function( seed, matches, context, xml ) {
						var elem,
							unmatched = matcher( seed, null, xml, [] ),
							i = seed.length;

						// Match elements unmatched by `matcher`
						while ( i-- ) {
							if ( (elem = unmatched[i]) ) {
								seed[i] = !(matches[i] = elem);
							}
						}
					}) :
					function( elem, context, xml ) {
						input[0] = elem;
						matcher( input, null, xml, results );
						return !results.pop();
					};
			}),

			"has": markFunction(function( selector ) {
				return function( elem ) {
					return Sizzle( selector, elem ).length > 0;
				};
			}),

			"contains": markFunction(function( text ) {
				return function( elem ) {
					return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
				};
			}),

			// "Whether an element is represented by a :lang() selector
			// is based solely on the element's language value
			// being equal to the identifier C,
			// or beginning with the identifier C immediately followed by "-".
			// The matching of C against the element's language value is performed case-insensitively.
			// The identifier C does not have to be a valid language name."
			// http://www.w3.org/TR/selectors/#lang-pseudo
			"lang": markFunction( function( lang ) {
				// lang value must be a valid identifier
				if ( !ridentifier.test(lang || "") ) {
					Sizzle.error( "unsupported lang: " + lang );
				}
				lang = lang.replace( runescape, funescape ).toLowerCase();
				return function( elem ) {
					var elemLang;
					do {
						if ( (elemLang = documentIsHTML ?
							elem.lang :
							elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {

							elemLang = elemLang.toLowerCase();
							return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
						}
					} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
					return false;
				};
			}),

			// Miscellaneous
			"target": function( elem ) {
				var hash = window.location && window.location.hash;
				return hash && hash.slice( 1 ) === elem.id;
			},

			"root": function( elem ) {
				return elem === docElem;
			},

			"focus": function( elem ) {
				return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
			},

			// Boolean properties
			"enabled": function( elem ) {
				return elem.disabled === false;
			},

			"disabled": function( elem ) {
				return elem.disabled === true;
			},

			"checked": function( elem ) {
				// In CSS3, :checked should return both checked and selected elements
				// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
				var nodeName = elem.nodeName.toLowerCase();
				return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
			},

			"selected": function( elem ) {
				// Accessing this property makes selected-by-default
				// options in Safari work properly
				if ( elem.parentNode ) {
					elem.parentNode.selectedIndex;
				}

				return elem.selected === true;
			},

			// Contents
			"empty": function( elem ) {
				// http://www.w3.org/TR/selectors/#empty-pseudo
				// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
				//   but not by others (comment: 8; processing instruction: 7; etc.)
				// nodeType < 6 works because attributes (2) do not appear as children
				for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
					if ( elem.nodeType < 6 ) {
						return false;
					}
				}
				return true;
			},

			"parent": function( elem ) {
				return !Expr.pseudos["empty"]( elem );
			},

			// Element/input types
			"header": function( elem ) {
				return rheader.test( elem.nodeName );
			},

			"input": function( elem ) {
				return rinputs.test( elem.nodeName );
			},

			"button": function( elem ) {
				var name = elem.nodeName.toLowerCase();
				return name === "input" && elem.type === "button" || name === "button";
			},

			"text": function( elem ) {
				var attr;
				return elem.nodeName.toLowerCase() === "input" &&
					elem.type === "text" &&

					// Support: IE<8
					// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
					( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
			},

			// Position-in-collection
			"first": createPositionalPseudo(function() {
				return [ 0 ];
			}),

			"last": createPositionalPseudo(function( matchIndexes, length ) {
				return [ length - 1 ];
			}),

			"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
				return [ argument < 0 ? argument + length : argument ];
			}),

			"even": createPositionalPseudo(function( matchIndexes, length ) {
				var i = 0;
				for ( ; i < length; i += 2 ) {
					matchIndexes.push( i );
				}
				return matchIndexes;
			}),

			"odd": createPositionalPseudo(function( matchIndexes, length ) {
				var i = 1;
				for ( ; i < length; i += 2 ) {
					matchIndexes.push( i );
				}
				return matchIndexes;
			}),

			"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
				var i = argument < 0 ? argument + length : argument;
				for ( ; --i >= 0; ) {
					matchIndexes.push( i );
				}
				return matchIndexes;
			}),

			"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
				var i = argument < 0 ? argument + length : argument;
				for ( ; ++i < length; ) {
					matchIndexes.push( i );
				}
				return matchIndexes;
			})
		}
	};

	Expr.pseudos["nth"] = Expr.pseudos["eq"];

	// Add button/input type pseudos
	for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
		Expr.pseudos[ i ] = createInputPseudo( i );
	}
	for ( i in { submit: true, reset: true } ) {
		Expr.pseudos[ i ] = createButtonPseudo( i );
	}

	// Easy API for creating new setFilters
	function setFilters() {}
	setFilters.prototype = Expr.filters = Expr.pseudos;
	Expr.setFilters = new setFilters();

	function tokenize( selector, parseOnly ) {
		var matched, match, tokens, type,
			soFar, groups, preFilters,
			cached = tokenCache[ selector + " " ];

		if ( cached ) {
			return parseOnly ? 0 : cached.slice( 0 );
		}

		soFar = selector;
		groups = [];
		preFilters = Expr.preFilter;

		while ( soFar ) {

			// Comma and first run
			if ( !matched || (match = rcomma.exec( soFar )) ) {
				if ( match ) {
					// Don't consume trailing commas as valid
					soFar = soFar.slice( match[0].length ) || soFar;
				}
				groups.push( (tokens = []) );
			}

			matched = false;

			// Combinators
			if ( (match = rcombinators.exec( soFar )) ) {
				matched = match.shift();
				tokens.push({
					value: matched,
					// Cast descendant combinators to space
					type: match[0].replace( rtrim, " " )
				});
				soFar = soFar.slice( matched.length );
			}

			// Filters
			for ( type in Expr.filter ) {
				if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
					(match = preFilters[ type ]( match ))) ) {
					matched = match.shift();
					tokens.push({
						value: matched,
						type: type,
						matches: match
					});
					soFar = soFar.slice( matched.length );
				}
			}

			if ( !matched ) {
				break;
			}
		}

		// Return the length of the invalid excess
		// if we're just parsing
		// Otherwise, throw an error or return tokens
		return parseOnly ?
			soFar.length :
			soFar ?
				Sizzle.error( selector ) :
				// Cache the tokens
				tokenCache( selector, groups ).slice( 0 );
	}

	function toSelector( tokens ) {
		var i = 0,
			len = tokens.length,
			selector = "";
		for ( ; i < len; i++ ) {
			selector += tokens[i].value;
		}
		return selector;
	}

	function addCombinator( matcher, combinator, base ) {
		var dir = combinator.dir,
			checkNonElements = base && dir === "parentNode",
			doneName = done++;

		return combinator.first ?
			// Check against closest ancestor/preceding element
			function( elem, context, xml ) {
				while ( (elem = elem[ dir ]) ) {
					if ( elem.nodeType === 1 || checkNonElements ) {
						return matcher( elem, context, xml );
					}
				}
			} :

			// Check against all ancestor/preceding elements
			function( elem, context, xml ) {
				var oldCache, outerCache,
					newCache = [ dirruns, doneName ];

				// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
				if ( xml ) {
					while ( (elem = elem[ dir ]) ) {
						if ( elem.nodeType === 1 || checkNonElements ) {
							if ( matcher( elem, context, xml ) ) {
								return true;
							}
						}
					}
				} else {
					while ( (elem = elem[ dir ]) ) {
						if ( elem.nodeType === 1 || checkNonElements ) {
							outerCache = elem[ expando ] || (elem[ expando ] = {});
							if ( (oldCache = outerCache[ dir ]) &&
								oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {

								// Assign to newCache so results back-propagate to previous elements
								return (newCache[ 2 ] = oldCache[ 2 ]);
							} else {
								// Reuse newcache so results back-propagate to previous elements
								outerCache[ dir ] = newCache;

								// A match means we're done; a fail means we have to keep checking
								if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
									return true;
								}
							}
						}
					}
				}
			};
	}

	function elementMatcher( matchers ) {
		return matchers.length > 1 ?
			function( elem, context, xml ) {
				var i = matchers.length;
				while ( i-- ) {
					if ( !matchers[i]( elem, context, xml ) ) {
						return false;
					}
				}
				return true;
			} :
			matchers[0];
	}

	function condense( unmatched, map, filter, context, xml ) {
		var elem,
			newUnmatched = [],
			i = 0,
			len = unmatched.length,
			mapped = map != null;

		for ( ; i < len; i++ ) {
			if ( (elem = unmatched[i]) ) {
				if ( !filter || filter( elem, context, xml ) ) {
					newUnmatched.push( elem );
					if ( mapped ) {
						map.push( i );
					}
				}
			}
		}

		return newUnmatched;
	}

	function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
		if ( postFilter && !postFilter[ expando ] ) {
			postFilter = setMatcher( postFilter );
		}
		if ( postFinder && !postFinder[ expando ] ) {
			postFinder = setMatcher( postFinder, postSelector );
		}
		return markFunction(function( seed, results, context, xml ) {
			var temp, i, elem,
				preMap = [],
				postMap = [],
				preexisting = results.length,

				// Get initial elements from seed or context
				elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),

				// Prefilter to get matcher input, preserving a map for seed-results synchronization
				matcherIn = preFilter && ( seed || !selector ) ?
					condense( elems, preMap, preFilter, context, xml ) :
					elems,

				matcherOut = matcher ?
					// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
					postFinder || ( seed ? preFilter : preexisting || postFilter ) ?

						// ...intermediate processing is necessary
						[] :

						// ...otherwise use results directly
						results :
					matcherIn;

			// Find primary matches
			if ( matcher ) {
				matcher( matcherIn, matcherOut, context, xml );
			}

			// Apply postFilter
			if ( postFilter ) {
				temp = condense( matcherOut, postMap );
				postFilter( temp, [], context, xml );

				// Un-match failing elements by moving them back to matcherIn
				i = temp.length;
				while ( i-- ) {
					if ( (elem = temp[i]) ) {
						matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
					}
				}
			}

			if ( seed ) {
				if ( postFinder || preFilter ) {
					if ( postFinder ) {
						// Get the final matcherOut by condensing this intermediate into postFinder contexts
						temp = [];
						i = matcherOut.length;
						while ( i-- ) {
							if ( (elem = matcherOut[i]) ) {
								// Restore matcherIn since elem is not yet a final match
								temp.push( (matcherIn[i] = elem) );
							}
						}
						postFinder( null, (matcherOut = []), temp, xml );
					}

					// Move matched elements from seed to results to keep them synchronized
					i = matcherOut.length;
					while ( i-- ) {
						if ( (elem = matcherOut[i]) &&
							(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {

							seed[temp] = !(results[temp] = elem);
						}
					}
				}

			// Add elements to results, through postFinder if defined
			} else {
				matcherOut = condense(
					matcherOut === results ?
						matcherOut.splice( preexisting, matcherOut.length ) :
						matcherOut
				);
				if ( postFinder ) {
					postFinder( null, results, matcherOut, xml );
				} else {
					push.apply( results, matcherOut );
				}
			}
		});
	}

	function matcherFromTokens( tokens ) {
		var checkContext, matcher, j,
			len = tokens.length,
			leadingRelative = Expr.relative[ tokens[0].type ],
			implicitRelative = leadingRelative || Expr.relative[" "],
			i = leadingRelative ? 1 : 0,

			// The foundational matcher ensures that elements are reachable from top-level context(s)
			matchContext = addCombinator( function( elem ) {
				return elem === checkContext;
			}, implicitRelative, true ),
			matchAnyContext = addCombinator( function( elem ) {
				return indexOf.call( checkContext, elem ) > -1;
			}, implicitRelative, true ),
			matchers = [ function( elem, context, xml ) {
				return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
					(checkContext = context).nodeType ?
						matchContext( elem, context, xml ) :
						matchAnyContext( elem, context, xml ) );
			} ];

		for ( ; i < len; i++ ) {
			if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
				matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
			} else {
				matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );

				// Return special upon seeing a positional matcher
				if ( matcher[ expando ] ) {
					// Find the next relative operator (if any) for proper handling
					j = ++i;
					for ( ; j < len; j++ ) {
						if ( Expr.relative[ tokens[j].type ] ) {
							break;
						}
					}
					return setMatcher(
						i > 1 && elementMatcher( matchers ),
						i > 1 && toSelector(
							// If the preceding token was a descendant combinator, insert an implicit any-element `*`
							tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
						).replace( rtrim, "$1" ),
						matcher,
						i < j && matcherFromTokens( tokens.slice( i, j ) ),
						j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
						j < len && toSelector( tokens )
					);
				}
				matchers.push( matcher );
			}
		}

		return elementMatcher( matchers );
	}

	function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
		var bySet = setMatchers.length > 0,
			byElement = elementMatchers.length > 0,
			superMatcher = function( seed, context, xml, results, outermost ) {
				var elem, j, matcher,
					matchedCount = 0,
					i = "0",
					unmatched = seed && [],
					setMatched = [],
					contextBackup = outermostContext,
					// We must always have either seed elements or outermost context
					elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
					// Use integer dirruns iff this is the outermost matcher
					dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
					len = elems.length;

				if ( outermost ) {
					outermostContext = context !== document && context;
				}

				// Add elements passing elementMatchers directly to results
				// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
				// Support: IE<9, Safari
				// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
				for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
					if ( byElement && elem ) {
						j = 0;
						while ( (matcher = elementMatchers[j++]) ) {
							if ( matcher( elem, context, xml ) ) {
								results.push( elem );
								break;
							}
						}
						if ( outermost ) {
							dirruns = dirrunsUnique;
						}
					}

					// Track unmatched elements for set filters
					if ( bySet ) {
						// They will have gone through all possible matchers
						if ( (elem = !matcher && elem) ) {
							matchedCount--;
						}

						// Lengthen the array for every element, matched or not
						if ( seed ) {
							unmatched.push( elem );
						}
					}
				}

				// Apply set filters to unmatched elements
				matchedCount += i;
				if ( bySet && i !== matchedCount ) {
					j = 0;
					while ( (matcher = setMatchers[j++]) ) {
						matcher( unmatched, setMatched, context, xml );
					}

					if ( seed ) {
						// Reintegrate element matches to eliminate the need for sorting
						if ( matchedCount > 0 ) {
							while ( i-- ) {
								if ( !(unmatched[i] || setMatched[i]) ) {
									setMatched[i] = pop.call( results );
								}
							}
						}

						// Discard index placeholder values to get only actual matches
						setMatched = condense( setMatched );
					}

					// Add matches to results
					push.apply( results, setMatched );

					// Seedless set matches succeeding multiple successful matchers stipulate sorting
					if ( outermost && !seed && setMatched.length > 0 &&
						( matchedCount + setMatchers.length ) > 1 ) {

						Sizzle.uniqueSort( results );
					}
				}

				// Override manipulation of globals by nested matchers
				if ( outermost ) {
					dirruns = dirrunsUnique;
					outermostContext = contextBackup;
				}

				return unmatched;
			};

		return bySet ?
			markFunction( superMatcher ) :
			superMatcher;
	}

	compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
		var i,
			setMatchers = [],
			elementMatchers = [],
			cached = compilerCache[ selector + " " ];

		if ( !cached ) {
			// Generate a function of recursive functions that can be used to check each element
			if ( !group ) {
				group = tokenize( selector );
			}
			i = group.length;
			while ( i-- ) {
				cached = matcherFromTokens( group[i] );
				if ( cached[ expando ] ) {
					setMatchers.push( cached );
				} else {
					elementMatchers.push( cached );
				}
			}

			// Cache the compiled function
			cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
		}
		return cached;
	};

	function multipleContexts( selector, contexts, results ) {
		var i = 0,
			len = contexts.length;
		for ( ; i < len; i++ ) {
			Sizzle( selector, contexts[i], results );
		}
		return results;
	}

	function select( selector, context, results, seed ) {
		var i, tokens, token, type, find,
			match = tokenize( selector );

		if ( !seed ) {
			// Try to minimize operations if there is only one group
			if ( match.length === 1 ) {

				// Take a shortcut and set the context if the root selector is an ID
				tokens = match[0] = match[0].slice( 0 );
				if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
						support.getById && context.nodeType === 9 && documentIsHTML &&
						Expr.relative[ tokens[1].type ] ) {

					context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
					if ( !context ) {
						return results;
					}
					selector = selector.slice( tokens.shift().value.length );
				}

				// Fetch a seed set for right-to-left matching
				i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
				while ( i-- ) {
					token = tokens[i];

					// Abort if we hit a combinator
					if ( Expr.relative[ (type = token.type) ] ) {
						break;
					}
					if ( (find = Expr.find[ type ]) ) {
						// Search, expanding context for leading sibling combinators
						if ( (seed = find(
							token.matches[0].replace( runescape, funescape ),
							rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
						)) ) {

							// If seed is empty or no tokens remain, we can return early
							tokens.splice( i, 1 );
							selector = seed.length && toSelector( tokens );
							if ( !selector ) {
								push.apply( results, seed );
								return results;
							}

							break;
						}
					}
				}
			}
		}

		// Compile and execute a filtering function
		// Provide `match` to avoid retokenization if we modified the selector above
		compile( selector, match )(
			seed,
			context,
			!documentIsHTML,
			results,
			rsibling.test( selector ) && testContext( context.parentNode ) || context
		);
		return results;
	}

	// One-time assignments

	// Sort stability
	support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;

	// Support: Chrome<14
	// Always assume duplicates if they aren't passed to the comparison function
	support.detectDuplicates = !!hasDuplicate;

	// Initialize against the default document
	setDocument();

	// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
	// Detached nodes confoundingly follow *each other*
	support.sortDetached = assert(function( div1 ) {
		// Should return 1, but returns 4 (following)
		return div1.compareDocumentPosition( document.createElement("div") ) & 1;
	});

	// Support: IE<8
	// Prevent attribute/property "interpolation"
	// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
	if ( !assert(function( div ) {
		div.innerHTML = "<a href='#'></a>";
		return div.firstChild.getAttribute("href") === "#" ;
	}) ) {
		addHandle( "type|href|height|width", function( elem, name, isXML ) {
			if ( !isXML ) {
				return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
			}
		});
	}

	// Support: IE<9
	// Use defaultValue in place of getAttribute("value")
	if ( !support.attributes || !assert(function( div ) {
		div.innerHTML = "<input/>";
		div.firstChild.setAttribute( "value", "" );
		return div.firstChild.getAttribute( "value" ) === "";
	}) ) {
		addHandle( "value", function( elem, name, isXML ) {
			if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
				return elem.defaultValue;
			}
		});
	}

	// Support: IE<9
	// Use getAttributeNode to fetch booleans when getAttribute lies
	if ( !assert(function( div ) {
		return div.getAttribute("disabled") == null;
	}) ) {
		addHandle( booleans, function( elem, name, isXML ) {
			var val;
			if ( !isXML ) {
				return elem[ name ] === true ? name.toLowerCase() :
						(val = elem.getAttributeNode( name )) && val.specified ?
						val.value :
					null;
			}
		});
	}

	return Sizzle;

	})( window );



	jQuery.find = Sizzle;
	jQuery.expr = Sizzle.selectors;
	jQuery.expr[":"] = jQuery.expr.pseudos;
	jQuery.unique = Sizzle.uniqueSort;
	jQuery.text = Sizzle.getText;
	jQuery.isXMLDoc = Sizzle.isXML;
	jQuery.contains = Sizzle.contains;



	var rneedsContext = jQuery.expr.match.needsContext;

	var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);



	var risSimple = /^.[^:#\[\.,]*$/;

	// Implement the identical functionality for filter and not
	function winnow( elements, qualifier, not ) {
		if ( jQuery.isFunction( qualifier ) ) {
			return jQuery.grep( elements, function( elem, i ) {
				/* jshint -W018 */
				return !!qualifier.call( elem, i, elem ) !== not;
			});

		}

		if ( qualifier.nodeType ) {
			return jQuery.grep( elements, function( elem ) {
				return ( elem === qualifier ) !== not;
			});

		}

		if ( typeof qualifier === "string" ) {
			if ( risSimple.test( qualifier ) ) {
				return jQuery.filter( qualifier, elements, not );
			}

			qualifier = jQuery.filter( qualifier, elements );
		}

		return jQuery.grep( elements, function( elem ) {
			return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
		});
	}

	jQuery.filter = function( expr, elems, not ) {
		var elem = elems[ 0 ];

		if ( not ) {
			expr = ":not(" + expr + ")";
		}

		return elems.length === 1 && elem.nodeType === 1 ?
			jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
			jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
				return elem.nodeType === 1;
			}));
	};

	jQuery.fn.extend({
		find: function( selector ) {
			var i,
				len = this.length,
				ret = [],
				self = this;

			if ( typeof selector !== "string" ) {
				return this.pushStack( jQuery( selector ).filter(function() {
					for ( i = 0; i < len; i++ ) {
						if ( jQuery.contains( self[ i ], this ) ) {
							return true;
						}
					}
				}) );
			}

			for ( i = 0; i < len; i++ ) {
				jQuery.find( selector, self[ i ], ret );
			}

			// Needed because $( selector, context ) becomes $( context ).find( selector )
			ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
			ret.selector = this.selector ? this.selector + " " + selector : selector;
			return ret;
		},
		filter: function( selector ) {
			return this.pushStack( winnow(this, selector || [], false) );
		},
		not: function( selector ) {
			return this.pushStack( winnow(this, selector || [], true) );
		},
		is: function( selector ) {
			return !!winnow(
				this,

				// If this is a positional/relative selector, check membership in the returned set
				// so $("p:first").is("p:last") won't return true for a doc with two "p".
				typeof selector === "string" && rneedsContext.test( selector ) ?
					jQuery( selector ) :
					selector || [],
				false
			).length;
		}
	});


	// Initialize a jQuery object


	// A central reference to the root jQuery(document)
	var rootjQuery,

		// A simple way to check for HTML strings
		// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
		// Strict HTML recognition (#11290: must start with <)
		rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,

		init = jQuery.fn.init = function( selector, context ) {
			var match, elem;

			// HANDLE: $(""), $(null), $(undefined), $(false)
			if ( !selector ) {
				return this;
			}

			// Handle HTML strings
			if ( typeof selector === "string" ) {
				if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
					// Assume that strings that start and end with <> are HTML and skip the regex check
					match = [ null, selector, null ];

				} else {
					match = rquickExpr.exec( selector );
				}

				// Match html or make sure no context is specified for #id
				if ( match && (match[1] || !context) ) {

					// HANDLE: $(html) -> $(array)
					if ( match[1] ) {
						context = context instanceof jQuery ? context[0] : context;

						// scripts is true for back-compat
						// Intentionally let the error be thrown if parseHTML is not present
						jQuery.merge( this, jQuery.parseHTML(
							match[1],
							context && context.nodeType ? context.ownerDocument || context : document,
							true
						) );

						// HANDLE: $(html, props)
						if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
							for ( match in context ) {
								// Properties of context are called as methods if possible
								if ( jQuery.isFunction( this[ match ] ) ) {
									this[ match ]( context[ match ] );

								// ...and otherwise set as attributes
								} else {
									this.attr( match, context[ match ] );
								}
							}
						}

						return this;

					// HANDLE: $(#id)
					} else {
						elem = document.getElementById( match[2] );

						// Check parentNode to catch when Blackberry 4.6 returns
						// nodes that are no longer in the document #6963
						if ( elem && elem.parentNode ) {
							// Inject the element directly into the jQuery object
							this.length = 1;
							this[0] = elem;
						}

						this.context = document;
						this.selector = selector;
						return this;
					}

				// HANDLE: $(expr, $(...))
				} else if ( !context || context.jquery ) {
					return ( context || rootjQuery ).find( selector );

				// HANDLE: $(expr, context)
				// (which is just equivalent to: $(context).find(expr)
				} else {
					return this.constructor( context ).find( selector );
				}

			// HANDLE: $(DOMElement)
			} else if ( selector.nodeType ) {
				this.context = this[0] = selector;
				this.length = 1;
				return this;

			// HANDLE: $(function)
			// Shortcut for document ready
			} else if ( jQuery.isFunction( selector ) ) {
				return typeof rootjQuery.ready !== "undefined" ?
					rootjQuery.ready( selector ) :
					// Execute immediately if ready is not present
					selector( jQuery );
			}

			if ( selector.selector !== undefined ) {
				this.selector = selector.selector;
				this.context = selector.context;
			}

			return jQuery.makeArray( selector, this );
		};

	// Give the init function the jQuery prototype for later instantiation
	init.prototype = jQuery.fn;

	// Initialize central reference
	rootjQuery = jQuery( document );


	var rparentsprev = /^(?:parents|prev(?:Until|All))/,
		// methods guaranteed to produce a unique set when starting from a unique set
		guaranteedUnique = {
			children: true,
			contents: true,
			next: true,
			prev: true
		};

	jQuery.extend({
		dir: function( elem, dir, until ) {
			var matched = [],
				truncate = until !== undefined;

			while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
				if ( elem.nodeType === 1 ) {
					if ( truncate && jQuery( elem ).is( until ) ) {
						break;
					}
					matched.push( elem );
				}
			}
			return matched;
		},

		sibling: function( n, elem ) {
			var matched = [];

			for ( ; n; n = n.nextSibling ) {
				if ( n.nodeType === 1 && n !== elem ) {
					matched.push( n );
				}
			}

			return matched;
		}
	});

	jQuery.fn.extend({
		has: function( target ) {
			var targets = jQuery( target, this ),
				l = targets.length;

			return this.filter(function() {
				var i = 0;
				for ( ; i < l; i++ ) {
					if ( jQuery.contains( this, targets[i] ) ) {
						return true;
					}
				}
			});
		},

		closest: function( selectors, context ) {
			var cur,
				i = 0,
				l = this.length,
				matched = [],
				pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
					jQuery( selectors, context || this.context ) :
					0;

			for ( ; i < l; i++ ) {
				for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
					// Always skip document fragments
					if ( cur.nodeType < 11 && (pos ?
						pos.index(cur) > -1 :

						// Don't pass non-elements to Sizzle
						cur.nodeType === 1 &&
							jQuery.find.matchesSelector(cur, selectors)) ) {

						matched.push( cur );
						break;
					}
				}
			}

			return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
		},

		// Determine the position of an element within
		// the matched set of elements
		index: function( elem ) {

			// No argument, return index in parent
			if ( !elem ) {
				return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
			}

			// index in selector
			if ( typeof elem === "string" ) {
				return indexOf.call( jQuery( elem ), this[ 0 ] );
			}

			// Locate the position of the desired element
			return indexOf.call( this,

				// If it receives a jQuery object, the first element is used
				elem.jquery ? elem[ 0 ] : elem
			);
		},

		add: function( selector, context ) {
			return this.pushStack(
				jQuery.unique(
					jQuery.merge( this.get(), jQuery( selector, context ) )
				)
			);
		},

		addBack: function( selector ) {
			return this.add( selector == null ?
				this.prevObject : this.prevObject.filter(selector)
			);
		}
	});

	function sibling( cur, dir ) {
		while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
		return cur;
	}

	jQuery.each({
		parent: function( elem ) {
			var parent = elem.parentNode;
			return parent && parent.nodeType !== 11 ? parent : null;
		},
		parents: function( elem ) {
			return jQuery.dir( elem, "parentNode" );
		},
		parentsUntil: function( elem, i, until ) {
			return jQuery.dir( elem, "parentNode", until );
		},
		next: function( elem ) {
			return sibling( elem, "nextSibling" );
		},
		prev: function( elem ) {
			return sibling( elem, "previousSibling" );
		},
		nextAll: function( elem ) {
			return jQuery.dir( elem, "nextSibling" );
		},
		prevAll: function( elem ) {
			return jQuery.dir( elem, "previousSibling" );
		},
		nextUntil: function( elem, i, until ) {
			return jQuery.dir( elem, "nextSibling", until );
		},
		prevUntil: function( elem, i, until ) {
			return jQuery.dir( elem, "previousSibling", until );
		},
		siblings: function( elem ) {
			return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
		},
		children: function( elem ) {
			return jQuery.sibling( elem.firstChild );
		},
		contents: function( elem ) {
			return elem.contentDocument || jQuery.merge( [], elem.childNodes );
		}
	}, function( name, fn ) {
		jQuery.fn[ name ] = function( until, selector ) {
			var matched = jQuery.map( this, fn, until );

			if ( name.slice( -5 ) !== "Until" ) {
				selector = until;
			}

			if ( selector && typeof selector === "string" ) {
				matched = jQuery.filter( selector, matched );
			}

			if ( this.length > 1 ) {
				// Remove duplicates
				if ( !guaranteedUnique[ name ] ) {
					jQuery.unique( matched );
				}

				// Reverse order for parents* and prev-derivatives
				if ( rparentsprev.test( name ) ) {
					matched.reverse();
				}
			}

			return this.pushStack( matched );
		};
	});
	var rnotwhite = (/\S+/g);



	// String to Object options format cache
	var optionsCache = {};

	// Convert String-formatted options into Object-formatted ones and store in cache
	function createOptions( options ) {
		var object = optionsCache[ options ] = {};
		jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
			object[ flag ] = true;
		});
		return object;
	}

	/*
	 * Create a callback list using the following parameters:
	 *
	 *	options: an optional list of space-separated options that will change how
	 *			the callback list behaves or a more traditional option object
	 *
	 * By default a callback list will act like an event callback list and can be
	 * "fired" multiple times.
	 *
	 * Possible options:
	 *
	 *	once:			will ensure the callback list can only be fired once (like a Deferred)
	 *
	 *	memory:			will keep track of previous values and will call any callback added
	 *					after the list has been fired right away with the latest "memorized"
	 *					values (like a Deferred)
	 *
	 *	unique:			will ensure a callback can only be added once (no duplicate in the list)
	 *
	 *	stopOnFalse:	interrupt callings when a callback returns false
	 *
	 */
	jQuery.Callbacks = function( options ) {

		// Convert options from String-formatted to Object-formatted if needed
		// (we check in cache first)
		options = typeof options === "string" ?
			( optionsCache[ options ] || createOptions( options ) ) :
			jQuery.extend( {}, options );

		var // Last fire value (for non-forgettable lists)
			memory,
			// Flag to know if list was already fired
			fired,
			// Flag to know if list is currently firing
			firing,
			// First callback to fire (used internally by add and fireWith)
			firingStart,
			// End of the loop when firing
			firingLength,
			// Index of currently firing callback (modified by remove if needed)
			firingIndex,
			// Actual callback list
			list = [],
			// Stack of fire calls for repeatable lists
			stack = !options.once && [],
			// Fire callbacks
			fire = function( data ) {
				memory = options.memory && data;
				fired = true;
				firingIndex = firingStart || 0;
				firingStart = 0;
				firingLength = list.length;
				firing = true;
				for ( ; list && firingIndex < firingLength; firingIndex++ ) {
					if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
						memory = false; // To prevent further calls using add
						break;
					}
				}
				firing = false;
				if ( list ) {
					if ( stack ) {
						if ( stack.length ) {
							fire( stack.shift() );
						}
					} else if ( memory ) {
						list = [];
					} else {
						self.disable();
					}
				}
			},
			// Actual Callbacks object
			self = {
				// Add a callback or a collection of callbacks to the list
				add: function() {
					if ( list ) {
						// First, we save the current length
						var start = list.length;
						(function add( args ) {
							jQuery.each( args, function( _, arg ) {
								var type = jQuery.type( arg );
								if ( type === "function" ) {
									if ( !options.unique || !self.has( arg ) ) {
										list.push( arg );
									}
								} else if ( arg && arg.length && type !== "string" ) {
									// Inspect recursively
									add( arg );
								}
							});
						})( arguments );
						// Do we need to add the callbacks to the
						// current firing batch?
						if ( firing ) {
							firingLength = list.length;
						// With memory, if we're not firing then
						// we should call right away
						} else if ( memory ) {
							firingStart = start;
							fire( memory );
						}
					}
					return this;
				},
				// Remove a callback from the list
				remove: function() {
					if ( list ) {
						jQuery.each( arguments, function( _, arg ) {
							var index;
							while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
								list.splice( index, 1 );
								// Handle firing indexes
								if ( firing ) {
									if ( index <= firingLength ) {
										firingLength--;
									}
									if ( index <= firingIndex ) {
										firingIndex--;
									}
								}
							}
						});
					}
					return this;
				},
				// Check if a given callback is in the list.
				// If no argument is given, return whether or not list has callbacks attached.
				has: function( fn ) {
					return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
				},
				// Remove all callbacks from the list
				empty: function() {
					list = [];
					firingLength = 0;
					return this;
				},
				// Have the list do nothing anymore
				disable: function() {
					list = stack = memory = undefined;
					return this;
				},
				// Is it disabled?
				disabled: function() {
					return !list;
				},
				// Lock the list in its current state
				lock: function() {
					stack = undefined;
					if ( !memory ) {
						self.disable();
					}
					return this;
				},
				// Is it locked?
				locked: function() {
					return !stack;
				},
				// Call all callbacks with the given context and arguments
				fireWith: function( context, args ) {
					if ( list && ( !fired || stack ) ) {
						args = args || [];
						args = [ context, args.slice ? args.slice() : args ];
						if ( firing ) {
							stack.push( args );
						} else {
							fire( args );
						}
					}
					return this;
				},
				// Call all the callbacks with the given arguments
				fire: function() {
					self.fireWith( this, arguments );
					return this;
				},
				// To know if the callbacks have already been called at least once
				fired: function() {
					return !!fired;
				}
			};

		return self;
	};


	jQuery.extend({

		Deferred: function( func ) {
			var tuples = [
					// action, add listener, listener list, final state
					[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
					[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
					[ "notify", "progress", jQuery.Callbacks("memory") ]
				],
				state = "pending",
				promise = {
					state: function() {
						return state;
					},
					always: function() {
						deferred.done( arguments ).fail( arguments );
						return this;
					},
					then: function( /* fnDone, fnFail, fnProgress */ ) {
						var fns = arguments;
						return jQuery.Deferred(function( newDefer ) {
							jQuery.each( tuples, function( i, tuple ) {
								var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
								// deferred[ done | fail | progress ] for forwarding actions to newDefer
								deferred[ tuple[1] ](function() {
									var returned = fn && fn.apply( this, arguments );
									if ( returned && jQuery.isFunction( returned.promise ) ) {
										returned.promise()
											.done( newDefer.resolve )
											.fail( newDefer.reject )
											.progress( newDefer.notify );
									} else {
										newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
									}
								});
							});
							fns = null;
						}).promise();
					},
					// Get a promise for this deferred
					// If obj is provided, the promise aspect is added to the object
					promise: function( obj ) {
						return obj != null ? jQuery.extend( obj, promise ) : promise;
					}
				},
				deferred = {};

			// Keep pipe for back-compat
			promise.pipe = promise.then;

			// Add list-specific methods
			jQuery.each( tuples, function( i, tuple ) {
				var list = tuple[ 2 ],
					stateString = tuple[ 3 ];

				// promise[ done | fail | progress ] = list.add
				promise[ tuple[1] ] = list.add;

				// Handle state
				if ( stateString ) {
					list.add(function() {
						// state = [ resolved | rejected ]
						state = stateString;

					// [ reject_list | resolve_list ].disable; progress_list.lock
					}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
				}

				// deferred[ resolve | reject | notify ]
				deferred[ tuple[0] ] = function() {
					deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
					return this;
				};
				deferred[ tuple[0] + "With" ] = list.fireWith;
			});

			// Make the deferred a promise
			promise.promise( deferred );

			// Call given func if any
			if ( func ) {
				func.call( deferred, deferred );
			}

			// All done!
			return deferred;
		},

		// Deferred helper
		when: function( subordinate /* , ..., subordinateN */ ) {
			var i = 0,
				resolveValues = slice.call( arguments ),
				length = resolveValues.length,

				// the count of uncompleted subordinates
				remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,

				// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
				deferred = remaining === 1 ? subordinate : jQuery.Deferred(),

				// Update function for both resolve and progress values
				updateFunc = function( i, contexts, values ) {
					return function( value ) {
						contexts[ i ] = this;
						values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
						if ( values === progressValues ) {
							deferred.notifyWith( contexts, values );
						} else if ( !( --remaining ) ) {
							deferred.resolveWith( contexts, values );
						}
					};
				},

				progressValues, progressContexts, resolveContexts;

			// add listeners to Deferred subordinates; treat others as resolved
			if ( length > 1 ) {
				progressValues = new Array( length );
				progressContexts = new Array( length );
				resolveContexts = new Array( length );
				for ( ; i < length; i++ ) {
					if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
						resolveValues[ i ].promise()
							.done( updateFunc( i, resolveContexts, resolveValues ) )
							.fail( deferred.reject )
							.progress( updateFunc( i, progressContexts, progressValues ) );
					} else {
						--remaining;
					}
				}
			}

			// if we're not waiting on anything, resolve the master
			if ( !remaining ) {
				deferred.resolveWith( resolveContexts, resolveValues );
			}

			return deferred.promise();
		}
	});


	// The deferred used on DOM ready
	var readyList;

	jQuery.fn.ready = function( fn ) {
		// Add the callback
		jQuery.ready.promise().done( fn );

		return this;
	};

	jQuery.extend({
		// Is the DOM ready to be used? Set to true once it occurs.
		isReady: false,

		// A counter to track how many items to wait for before
		// the ready event fires. See #6781
		readyWait: 1,

		// Hold (or release) the ready event
		holdReady: function( hold ) {
			if ( hold ) {
				jQuery.readyWait++;
			} else {
				jQuery.ready( true );
			}
		},

		// Handle when the DOM is ready
		ready: function( wait ) {

			// Abort if there are pending holds or we're already ready
			if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
				return;
			}

			// Remember that the DOM is ready
			jQuery.isReady = true;

			// If a normal DOM Ready event fired, decrement, and wait if need be
			if ( wait !== true && --jQuery.readyWait > 0 ) {
				return;
			}

			// If there are functions bound, to execute
			readyList.resolveWith( document, [ jQuery ] );

			// Trigger any bound ready events
			if ( jQuery.fn.trigger ) {
				jQuery( document ).trigger("ready").off("ready");
			}
		}
	});

	/**
	 * The ready event handler and self cleanup method
	 */
	function completed() {
		document.removeEventListener( "DOMContentLoaded", completed, false );
		window.removeEventListener( "load", completed, false );
		jQuery.ready();
	}

	jQuery.ready.promise = function( obj ) {
		if ( !readyList ) {

			readyList = jQuery.Deferred();

			// Catch cases where $(document).ready() is called after the browser event has already occurred.
			// we once tried to use readyState "interactive" here, but it caused issues like the one
			// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
			if ( document.readyState === "complete" ) {
				// Handle it asynchronously to allow scripts the opportunity to delay ready
				setTimeout( jQuery.ready );

			} else {

				// Use the handy event callback
				document.addEventListener( "DOMContentLoaded", completed, false );

				// A fallback to window.onload, that will always work
				window.addEventListener( "load", completed, false );
			}
		}
		return readyList.promise( obj );
	};

	// Kick off the DOM ready check even if the user does not
	jQuery.ready.promise();




	// Multifunctional method to get and set values of a collection
	// The value/s can optionally be executed if it's a function
	var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
		var i = 0,
			len = elems.length,
			bulk = key == null;

		// Sets many values
		if ( jQuery.type( key ) === "object" ) {
			chainable = true;
			for ( i in key ) {
				jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
			}

		// Sets one value
		} else if ( value !== undefined ) {
			chainable = true;

			if ( !jQuery.isFunction( value ) ) {
				raw = true;
			}

			if ( bulk ) {
				// Bulk operations run against the entire set
				if ( raw ) {
					fn.call( elems, value );
					fn = null;

				// ...except when executing function values
				} else {
					bulk = fn;
					fn = function( elem, key, value ) {
						return bulk.call( jQuery( elem ), value );
					};
				}
			}

			if ( fn ) {
				for ( ; i < len; i++ ) {
					fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
				}
			}
		}

		return chainable ?
			elems :

			// Gets
			bulk ?
				fn.call( elems ) :
				len ? fn( elems[0], key ) : emptyGet;
	};


	/**
	 * Determines whether an object can have data
	 */
	jQuery.acceptData = function( owner ) {
		// Accepts only:
		//  - Node
		//    - Node.ELEMENT_NODE
		//    - Node.DOCUMENT_NODE
		//  - Object
		//    - Any
		/* jshint -W018 */
		return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
	};


	function Data() {
		// Support: Android < 4,
		// Old WebKit does not have Object.preventExtensions/freeze method,
		// return new empty object instead with no [[set]] accessor
		Object.defineProperty( this.cache = {}, 0, {
			get: function() {
				return {};
			}
		});

		this.expando = jQuery.expando + Math.random();
	}

	Data.uid = 1;
	Data.accepts = jQuery.acceptData;

	Data.prototype = {
		key: function( owner ) {
			// We can accept data for non-element nodes in modern browsers,
			// but we should not, see #8335.
			// Always return the key for a frozen object.
			if ( !Data.accepts( owner ) ) {
				return 0;
			}

			var descriptor = {},
				// Check if the owner object already has a cache key
				unlock = owner[ this.expando ];

			// If not, create one
			if ( !unlock ) {
				unlock = Data.uid++;

				// Secure it in a non-enumerable, non-writable property
				try {
					descriptor[ this.expando ] = { value: unlock };
					Object.defineProperties( owner, descriptor );

				// Support: Android < 4
				// Fallback to a less secure definition
				} catch ( e ) {
					descriptor[ this.expando ] = unlock;
					jQuery.extend( owner, descriptor );
				}
			}

			// Ensure the cache object
			if ( !this.cache[ unlock ] ) {
				this.cache[ unlock ] = {};
			}

			return unlock;
		},
		set: function( owner, data, value ) {
			var prop,
				// There may be an unlock assigned to this node,
				// if there is no entry for this "owner", create one inline
				// and set the unlock as though an owner entry had always existed
				unlock = this.key( owner ),
				cache = this.cache[ unlock ];

			// Handle: [ owner, key, value ] args
			if ( typeof data === "string" ) {
				cache[ data ] = value;

			// Handle: [ owner, { properties } ] args
			} else {
				// Fresh assignments by object are shallow copied
				if ( jQuery.isEmptyObject( cache ) ) {
					jQuery.extend( this.cache[ unlock ], data );
				// Otherwise, copy the properties one-by-one to the cache object
				} else {
					for ( prop in data ) {
						cache[ prop ] = data[ prop ];
					}
				}
			}
			return cache;
		},
		get: function( owner, key ) {
			// Either a valid cache is found, or will be created.
			// New caches will be created and the unlock returned,
			// allowing direct access to the newly created
			// empty data object. A valid owner object must be provided.
			var cache = this.cache[ this.key( owner ) ];

			return key === undefined ?
				cache : cache[ key ];
		},
		access: function( owner, key, value ) {
			var stored;
			// In cases where either:
			//
			//   1. No key was specified
			//   2. A string key was specified, but no value provided
			//
			// Take the "read" path and allow the get method to determine
			// which value to return, respectively either:
			//
			//   1. The entire cache object
			//   2. The data stored at the key
			//
			if ( key === undefined ||
					((key && typeof key === "string") && value === undefined) ) {

				stored = this.get( owner, key );

				return stored !== undefined ?
					stored : this.get( owner, jQuery.camelCase(key) );
			}

			// [*]When the key is not a string, or both a key and value
			// are specified, set or extend (existing objects) with either:
			//
			//   1. An object of properties
			//   2. A key and value
			//
			this.set( owner, key, value );

			// Since the "set" path can have two possible entry points
			// return the expected data based on which path was taken[*]
			return value !== undefined ? value : key;
		},
		remove: function( owner, key ) {
			var i, name, camel,
				unlock = this.key( owner ),
				cache = this.cache[ unlock ];

			if ( key === undefined ) {
				this.cache[ unlock ] = {};

			} else {
				// Support array or space separated string of keys
				if ( jQuery.isArray( key ) ) {
					// If "name" is an array of keys...
					// When data is initially created, via ("key", "val") signature,
					// keys will be converted to camelCase.
					// Since there is no way to tell _how_ a key was added, remove
					// both plain key and camelCase key. #12786
					// This will only penalize the array argument path.
					name = key.concat( key.map( jQuery.camelCase ) );
				} else {
					camel = jQuery.camelCase( key );
					// Try the string as a key before any manipulation
					if ( key in cache ) {
						name = [ key, camel ];
					} else {
						// If a key with the spaces exists, use it.
						// Otherwise, create an array by matching non-whitespace
						name = camel;
						name = name in cache ?
							[ name ] : ( name.match( rnotwhite ) || [] );
					}
				}

				i = name.length;
				while ( i-- ) {
					delete cache[ name[ i ] ];
				}
			}
		},
		hasData: function( owner ) {
			return !jQuery.isEmptyObject(
				this.cache[ owner[ this.expando ] ] || {}
			);
		},
		discard: function( owner ) {
			if ( owner[ this.expando ] ) {
				delete this.cache[ owner[ this.expando ] ];
			}
		}
	};
	var data_priv = new Data();

	var data_user = new Data();



	/*
		Implementation Summary

		1. Enforce API surface and semantic compatibility with 1.9.x branch
		2. Improve the module's maintainability by reducing the storage
			paths to a single mechanism.
		3. Use the same single mechanism to support "private" and "user" data.
		4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
		5. Avoid exposing implementation details on user objects (eg. expando properties)
		6. Provide a clear path for implementation upgrade to WeakMap in 2014
	*/
	var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
		rmultiDash = /([A-Z])/g;

	function dataAttr( elem, key, data ) {
		var name;

		// If nothing was found internally, try to fetch any
		// data from the HTML5 data-* attribute
		if ( data === undefined && elem.nodeType === 1 ) {
			name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
			data = elem.getAttribute( name );

			if ( typeof data === "string" ) {
				try {
					data = data === "true" ? true :
						data === "false" ? false :
						data === "null" ? null :
						// Only convert to a number if it doesn't change the string
						+data + "" === data ? +data :
						rbrace.test( data ) ? jQuery.parseJSON( data ) :
						data;
				} catch( e ) {}

				// Make sure we set the data so it isn't changed later
				data_user.set( elem, key, data );
			} else {
				data = undefined;
			}
		}
		return data;
	}

	jQuery.extend({
		hasData: function( elem ) {
			return data_user.hasData( elem ) || data_priv.hasData( elem );
		},

		data: function( elem, name, data ) {
			return data_user.access( elem, name, data );
		},

		removeData: function( elem, name ) {
			data_user.remove( elem, name );
		},

		// TODO: Now that all calls to _data and _removeData have been replaced
		// with direct calls to data_priv methods, these can be deprecated.
		_data: function( elem, name, data ) {
			return data_priv.access( elem, name, data );
		},

		_removeData: function( elem, name ) {
			data_priv.remove( elem, name );
		}
	});

	jQuery.fn.extend({
		data: function( key, value ) {
			var i, name, data,
				elem = this[ 0 ],
				attrs = elem && elem.attributes;

			// Gets all values
			if ( key === undefined ) {
				if ( this.length ) {
					data = data_user.get( elem );

					if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
						i = attrs.length;
						while ( i-- ) {
							name = attrs[ i ].name;

							if ( name.indexOf( "data-" ) === 0 ) {
								name = jQuery.camelCase( name.slice(5) );
								dataAttr( elem, name, data[ name ] );
							}
						}
						data_priv.set( elem, "hasDataAttrs", true );
					}
				}

				return data;
			}

			// Sets multiple values
			if ( typeof key === "object" ) {
				return this.each(function() {
					data_user.set( this, key );
				});
			}

			return access( this, function( value ) {
				var data,
					camelKey = jQuery.camelCase( key );

				// The calling jQuery object (element matches) is not empty
				// (and therefore has an element appears at this[ 0 ]) and the
				// `value` parameter was not undefined. An empty jQuery object
				// will result in `undefined` for elem = this[ 0 ] which will
				// throw an exception if an attempt to read a data cache is made.
				if ( elem && value === undefined ) {
					// Attempt to get data from the cache
					// with the key as-is
					data = data_user.get( elem, key );
					if ( data !== undefined ) {
						return data;
					}

					// Attempt to get data from the cache
					// with the key camelized
					data = data_user.get( elem, camelKey );
					if ( data !== undefined ) {
						return data;
					}

					// Attempt to "discover" the data in
					// HTML5 custom data-* attrs
					data = dataAttr( elem, camelKey, undefined );
					if ( data !== undefined ) {
						return data;
					}

					// We tried really hard, but the data doesn't exist.
					return;
				}

				// Set the data...
				this.each(function() {
					// First, attempt to store a copy or reference of any
					// data that might've been store with a camelCased key.
					var data = data_user.get( this, camelKey );

					// For HTML5 data-* attribute interop, we have to
					// store property names with dashes in a camelCase form.
					// This might not apply to all properties...*
					data_user.set( this, camelKey, value );

					// *... In the case of properties that might _actually_
					// have dashes, we need to also store a copy of that
					// unchanged property.
					if ( key.indexOf("-") !== -1 && data !== undefined ) {
						data_user.set( this, key, value );
					}
				});
			}, null, value, arguments.length > 1, null, true );
		},

		removeData: function( key ) {
			return this.each(function() {
				data_user.remove( this, key );
			});
		}
	});


	jQuery.extend({
		queue: function( elem, type, data ) {
			var queue;

			if ( elem ) {
				type = ( type || "fx" ) + "queue";
				queue = data_priv.get( elem, type );

				// Speed up dequeue by getting out quickly if this is just a lookup
				if ( data ) {
					if ( !queue || jQuery.isArray( data ) ) {
						queue = data_priv.access( elem, type, jQuery.makeArray(data) );
					} else {
						queue.push( data );
					}
				}
				return queue || [];
			}
		},

		dequeue: function( elem, type ) {
			type = type || "fx";

			var queue = jQuery.queue( elem, type ),
				startLength = queue.length,
				fn = queue.shift(),
				hooks = jQuery._queueHooks( elem, type ),
				next = function() {
					jQuery.dequeue( elem, type );
				};

			// If the fx queue is dequeued, always remove the progress sentinel
			if ( fn === "inprogress" ) {
				fn = queue.shift();
				startLength--;
			}

			if ( fn ) {

				// Add a progress sentinel to prevent the fx queue from being
				// automatically dequeued
				if ( type === "fx" ) {
					queue.unshift( "inprogress" );
				}

				// clear up the last queue stop function
				delete hooks.stop;
				fn.call( elem, next, hooks );
			}

			if ( !startLength && hooks ) {
				hooks.empty.fire();
			}
		},

		// not intended for public consumption - generates a queueHooks object, or returns the current one
		_queueHooks: function( elem, type ) {
			var key = type + "queueHooks";
			return data_priv.get( elem, key ) || data_priv.access( elem, key, {
				empty: jQuery.Callbacks("once memory").add(function() {
					data_priv.remove( elem, [ type + "queue", key ] );
				})
			});
		}
	});

	jQuery.fn.extend({
		queue: function( type, data ) {
			var setter = 2;

			if ( typeof type !== "string" ) {
				data = type;
				type = "fx";
				setter--;
			}

			if ( arguments.length < setter ) {
				return jQuery.queue( this[0], type );
			}

			return data === undefined ?
				this :
				this.each(function() {
					var queue = jQuery.queue( this, type, data );

					// ensure a hooks for this queue
					jQuery._queueHooks( this, type );

					if ( type === "fx" && queue[0] !== "inprogress" ) {
						jQuery.dequeue( this, type );
					}
				});
		},
		dequeue: function( type ) {
			return this.each(function() {
				jQuery.dequeue( this, type );
			});
		},
		clearQueue: function( type ) {
			return this.queue( type || "fx", [] );
		},
		// Get a promise resolved when queues of a certain type
		// are emptied (fx is the type by default)
		promise: function( type, obj ) {
			var tmp,
				count = 1,
				defer = jQuery.Deferred(),
				elements = this,
				i = this.length,
				resolve = function() {
					if ( !( --count ) ) {
						defer.resolveWith( elements, [ elements ] );
					}
				};

			if ( typeof type !== "string" ) {
				obj = type;
				type = undefined;
			}
			type = type || "fx";

			while ( i-- ) {
				tmp = data_priv.get( elements[ i ], type + "queueHooks" );
				if ( tmp && tmp.empty ) {
					count++;
					tmp.empty.add( resolve );
				}
			}
			resolve();
			return defer.promise( obj );
		}
	});
	var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;

	var cssExpand = [ "Top", "Right", "Bottom", "Left" ];

	var isHidden = function( elem, el ) {
			// isHidden might be called from jQuery#filter function;
			// in that case, element will be second argument
			elem = el || elem;
			return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
		};

	var rcheckableType = (/^(?:checkbox|radio)$/i);



	(function() {
		var fragment = document.createDocumentFragment(),
			div = fragment.appendChild( document.createElement( "div" ) );

		// #11217 - WebKit loses check when the name is after the checked attribute
		div.innerHTML = "<input type='radio' checked='checked' name='t'/>";

		// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3
		// old WebKit doesn't clone checked state correctly in fragments
		support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;

		// Make sure textarea (and checkbox) defaultValue is properly cloned
		// Support: IE9-IE11+
		div.innerHTML = "<textarea>x</textarea>";
		support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
	})();
	var strundefined = typeof undefined;



	support.focusinBubbles = "onfocusin" in window;


	var
		rkeyEvent = /^key/,
		rmouseEvent = /^(?:mouse|contextmenu)|click/,
		rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
		rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;

	function returnTrue() {
		return true;
	}

	function returnFalse() {
		return false;
	}

	function safeActiveElement() {
		try {
			return document.activeElement;
		} catch ( err ) { }
	}

	/*
	 * Helper functions for managing events -- not part of the public interface.
	 * Props to Dean Edwards' addEvent library for many of the ideas.
	 */
	jQuery.event = {

		global: {},

		add: function( elem, types, handler, data, selector ) {

			var handleObjIn, eventHandle, tmp,
				events, t, handleObj,
				special, handlers, type, namespaces, origType,
				elemData = data_priv.get( elem );

			// Don't attach events to noData or text/comment nodes (but allow plain objects)
			if ( !elemData ) {
				return;
			}

			// Caller can pass in an object of custom data in lieu of the handler
			if ( handler.handler ) {
				handleObjIn = handler;
				handler = handleObjIn.handler;
				selector = handleObjIn.selector;
			}

			// Make sure that the handler has a unique ID, used to find/remove it later
			if ( !handler.guid ) {
				handler.guid = jQuery.guid++;
			}

			// Init the element's event structure and main handler, if this is the first
			if ( !(events = elemData.events) ) {
				events = elemData.events = {};
			}
			if ( !(eventHandle = elemData.handle) ) {
				eventHandle = elemData.handle = function( e ) {
					// Discard the second event of a jQuery.event.trigger() and
					// when an event is called after a page has unloaded
					return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
						jQuery.event.dispatch.apply( elem, arguments ) : undefined;
				};
			}

			// Handle multiple events separated by a space
			types = ( types || "" ).match( rnotwhite ) || [ "" ];
			t = types.length;
			while ( t-- ) {
				tmp = rtypenamespace.exec( types[t] ) || [];
				type = origType = tmp[1];
				namespaces = ( tmp[2] || "" ).split( "." ).sort();

				// There *must* be a type, no attaching namespace-only handlers
				if ( !type ) {
					continue;
				}

				// If event changes its type, use the special event handlers for the changed type
				special = jQuery.event.special[ type ] || {};

				// If selector defined, determine special event api type, otherwise given type
				type = ( selector ? special.delegateType : special.bindType ) || type;

				// Update special based on newly reset type
				special = jQuery.event.special[ type ] || {};

				// handleObj is passed to all event handlers
				handleObj = jQuery.extend({
					type: type,
					origType: origType,
					data: data,
					handler: handler,
					guid: handler.guid,
					selector: selector,
					needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
					namespace: namespaces.join(".")
				}, handleObjIn );

				// Init the event handler queue if we're the first
				if ( !(handlers = events[ type ]) ) {
					handlers = events[ type ] = [];
					handlers.delegateCount = 0;

					// Only use addEventListener if the special events handler returns false
					if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
						if ( elem.addEventListener ) {
							elem.addEventListener( type, eventHandle, false );
						}
					}
				}

				if ( special.add ) {
					special.add.call( elem, handleObj );

					if ( !handleObj.handler.guid ) {
						handleObj.handler.guid = handler.guid;
					}
				}

				// Add to the element's handler list, delegates in front
				if ( selector ) {
					handlers.splice( handlers.delegateCount++, 0, handleObj );
				} else {
					handlers.push( handleObj );
				}

				// Keep track of which events have ever been used, for event optimization
				jQuery.event.global[ type ] = true;
			}

		},

		// Detach an event or set of events from an element
		remove: function( elem, types, handler, selector, mappedTypes ) {

			var j, origCount, tmp,
				events, t, handleObj,
				special, handlers, type, namespaces, origType,
				elemData = data_priv.hasData( elem ) && data_priv.get( elem );

			if ( !elemData || !(events = elemData.events) ) {
				return;
			}

			// Once for each type.namespace in types; type may be omitted
			types = ( types || "" ).match( rnotwhite ) || [ "" ];
			t = types.length;
			while ( t-- ) {
				tmp = rtypenamespace.exec( types[t] ) || [];
				type = origType = tmp[1];
				namespaces = ( tmp[2] || "" ).split( "." ).sort();

				// Unbind all events (on this namespace, if provided) for the element
				if ( !type ) {
					for ( type in events ) {
						jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
					}
					continue;
				}

				special = jQuery.event.special[ type ] || {};
				type = ( selector ? special.delegateType : special.bindType ) || type;
				handlers = events[ type ] || [];
				tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );

				// Remove matching events
				origCount = j = handlers.length;
				while ( j-- ) {
					handleObj = handlers[ j ];

					if ( ( mappedTypes || origType === handleObj.origType ) &&
						( !handler || handler.guid === handleObj.guid ) &&
						( !tmp || tmp.test( handleObj.namespace ) ) &&
						( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
						handlers.splice( j, 1 );

						if ( handleObj.selector ) {
							handlers.delegateCount--;
						}
						if ( special.remove ) {
							special.remove.call( elem, handleObj );
						}
					}
				}

				// Remove generic event handler if we removed something and no more handlers exist
				// (avoids potential for endless recursion during removal of special event handlers)
				if ( origCount && !handlers.length ) {
					if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
						jQuery.removeEvent( elem, type, elemData.handle );
					}

					delete events[ type ];
				}
			}

			// Remove the expando if it's no longer used
			if ( jQuery.isEmptyObject( events ) ) {
				delete elemData.handle;
				data_priv.remove( elem, "events" );
			}
		},

		trigger: function( event, data, elem, onlyHandlers ) {

			var i, cur, tmp, bubbleType, ontype, handle, special,
				eventPath = [ elem || document ],
				type = hasOwn.call( event, "type" ) ? event.type : event,
				namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];

			cur = tmp = elem = elem || document;

			// Don't do events on text and comment nodes
			if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
				return;
			}

			// focus/blur morphs to focusin/out; ensure we're not firing them right now
			if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
				return;
			}

			if ( type.indexOf(".") >= 0 ) {
				// Namespaced trigger; create a regexp to match event type in handle()
				namespaces = type.split(".");
				type = namespaces.shift();
				namespaces.sort();
			}
			ontype = type.indexOf(":") < 0 && "on" + type;

			// Caller can pass in a jQuery.Event object, Object, or just an event type string
			event = event[ jQuery.expando ] ?
				event :
				new jQuery.Event( type, typeof event === "object" && event );

			// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
			event.isTrigger = onlyHandlers ? 2 : 3;
			event.namespace = namespaces.join(".");
			event.namespace_re = event.namespace ?
				new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
				null;

			// Clean up the event in case it is being reused
			event.result = undefined;
			if ( !event.target ) {
				event.target = elem;
			}

			// Clone any incoming data and prepend the event, creating the handler arg list
			data = data == null ?
				[ event ] :
				jQuery.makeArray( data, [ event ] );

			// Allow special events to draw outside the lines
			special = jQuery.event.special[ type ] || {};
			if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
				return;
			}

			// Determine event propagation path in advance, per W3C events spec (#9951)
			// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
			if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {

				bubbleType = special.delegateType || type;
				if ( !rfocusMorph.test( bubbleType + type ) ) {
					cur = cur.parentNode;
				}
				for ( ; cur; cur = cur.parentNode ) {
					eventPath.push( cur );
					tmp = cur;
				}

				// Only add window if we got to document (e.g., not plain obj or detached DOM)
				if ( tmp === (elem.ownerDocument || document) ) {
					eventPath.push( tmp.defaultView || tmp.parentWindow || window );
				}
			}

			// Fire handlers on the event path
			i = 0;
			while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {

				event.type = i > 1 ?
					bubbleType :
					special.bindType || type;

				// jQuery handler
				handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
				if ( handle ) {
					handle.apply( cur, data );
				}

				// Native handler
				handle = ontype && cur[ ontype ];
				if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
					event.result = handle.apply( cur, data );
					if ( event.result === false ) {
						event.preventDefault();
					}
				}
			}
			event.type = type;

			// If nobody prevented the default action, do it now
			if ( !onlyHandlers && !event.isDefaultPrevented() ) {

				if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
					jQuery.acceptData( elem ) ) {

					// Call a native DOM method on the target with the same name name as the event.
					// Don't do default actions on window, that's where global variables be (#6170)
					if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {

						// Don't re-trigger an onFOO event when we call its FOO() method
						tmp = elem[ ontype ];

						if ( tmp ) {
							elem[ ontype ] = null;
						}

						// Prevent re-triggering of the same event, since we already bubbled it above
						jQuery.event.triggered = type;
						elem[ type ]();
						jQuery.event.triggered = undefined;

						if ( tmp ) {
							elem[ ontype ] = tmp;
						}
					}
				}
			}

			return event.result;
		},

		dispatch: function( event ) {

			// Make a writable jQuery.Event from the native event object
			event = jQuery.event.fix( event );

			var i, j, ret, matched, handleObj,
				handlerQueue = [],
				args = slice.call( arguments ),
				handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
				special = jQuery.event.special[ event.type ] || {};

			// Use the fix-ed jQuery.Event rather than the (read-only) native event
			args[0] = event;
			event.delegateTarget = this;

			// Call the preDispatch hook for the mapped type, and let it bail if desired
			if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
				return;
			}

			// Determine handlers
			handlerQueue = jQuery.event.handlers.call( this, event, handlers );

			// Run delegates first; they may want to stop propagation beneath us
			i = 0;
			while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
				event.currentTarget = matched.elem;

				j = 0;
				while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {

					// Triggered event must either 1) have no namespace, or
					// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
					if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {

						event.handleObj = handleObj;
						event.data = handleObj.data;

						ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
								.apply( matched.elem, args );

						if ( ret !== undefined ) {
							if ( (event.result = ret) === false ) {
								event.preventDefault();
								event.stopPropagation();
							}
						}
					}
				}
			}

			// Call the postDispatch hook for the mapped type
			if ( special.postDispatch ) {
				special.postDispatch.call( this, event );
			}

			return event.result;
		},

		handlers: function( event, handlers ) {
			var i, matches, sel, handleObj,
				handlerQueue = [],
				delegateCount = handlers.delegateCount,
				cur = event.target;

			// Find delegate handlers
			// Black-hole SVG <use> instance trees (#13180)
			// Avoid non-left-click bubbling in Firefox (#3861)
			if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {

				for ( ; cur !== this; cur = cur.parentNode || this ) {

					// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
					if ( cur.disabled !== true || event.type !== "click" ) {
						matches = [];
						for ( i = 0; i < delegateCount; i++ ) {
							handleObj = handlers[ i ];

							// Don't conflict with Object.prototype properties (#13203)
							sel = handleObj.selector + " ";

							if ( matches[ sel ] === undefined ) {
								matches[ sel ] = handleObj.needsContext ?
									jQuery( sel, this ).index( cur ) >= 0 :
									jQuery.find( sel, this, null, [ cur ] ).length;
							}
							if ( matches[ sel ] ) {
								matches.push( handleObj );
							}
						}
						if ( matches.length ) {
							handlerQueue.push({ elem: cur, handlers: matches });
						}
					}
				}
			}

			// Add the remaining (directly-bound) handlers
			if ( delegateCount < handlers.length ) {
				handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
			}

			return handlerQueue;
		},

		// Includes some event props shared by KeyEvent and MouseEvent
		props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),

		fixHooks: {},

		keyHooks: {
			props: "char charCode key keyCode".split(" "),
			filter: function( event, original ) {

				// Add which for key events
				if ( event.which == null ) {
					event.which = original.charCode != null ? original.charCode : original.keyCode;
				}

				return event;
			}
		},

		mouseHooks: {
			props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
			filter: function( event, original ) {
				var eventDoc, doc, body,
					button = original.button;

				// Calculate pageX/Y if missing and clientX/Y available
				if ( event.pageX == null && original.clientX != null ) {
					eventDoc = event.target.ownerDocument || document;
					doc = eventDoc.documentElement;
					body = eventDoc.body;

					event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
					event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
				}

				// Add which for click: 1 === left; 2 === middle; 3 === right
				// Note: button is not normalized, so don't use it
				if ( !event.which && button !== undefined ) {
					event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
				}

				return event;
			}
		},

		fix: function( event ) {
			if ( event[ jQuery.expando ] ) {
				return event;
			}

			// Create a writable copy of the event object and normalize some properties
			var i, prop, copy,
				type = event.type,
				originalEvent = event,
				fixHook = this.fixHooks[ type ];

			if ( !fixHook ) {
				this.fixHooks[ type ] = fixHook =
					rmouseEvent.test( type ) ? this.mouseHooks :
					rkeyEvent.test( type ) ? this.keyHooks :
					{};
			}
			copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;

			event = new jQuery.Event( originalEvent );

			i = copy.length;
			while ( i-- ) {
				prop = copy[ i ];
				event[ prop ] = originalEvent[ prop ];
			}

			// Support: Cordova 2.5 (WebKit) (#13255)
			// All events should have a target; Cordova deviceready doesn't
			if ( !event.target ) {
				event.target = document;
			}

			// Support: Safari 6.0+, Chrome < 28
			// Target should not be a text node (#504, #13143)
			if ( event.target.nodeType === 3 ) {
				event.target = event.target.parentNode;
			}

			return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
		},

		special: {
			load: {
				// Prevent triggered image.load events from bubbling to window.load
				noBubble: true
			},
			focus: {
				// Fire native event if possible so blur/focus sequence is correct
				trigger: function() {
					if ( this !== safeActiveElement() && this.focus ) {
						this.focus();
						return false;
					}
				},
				delegateType: "focusin"
			},
			blur: {
				trigger: function() {
					if ( this === safeActiveElement() && this.blur ) {
						this.blur();
						return false;
					}
				},
				delegateType: "focusout"
			},
			click: {
				// For checkbox, fire native event so checked state will be right
				trigger: function() {
					if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
						this.click();
						return false;
					}
				},

				// For cross-browser consistency, don't fire native .click() on links
				_default: function( event ) {
					return jQuery.nodeName( event.target, "a" );
				}
			},

			beforeunload: {
				postDispatch: function( event ) {

					// Support: Firefox 20+
					// Firefox doesn't alert if the returnValue field is not set.
					if ( event.result !== undefined ) {
						event.originalEvent.returnValue = event.result;
					}
				}
			}
		},

		simulate: function( type, elem, event, bubble ) {
			// Piggyback on a donor event to simulate a different one.
			// Fake originalEvent to avoid donor's stopPropagation, but if the
			// simulated event prevents default then we do the same on the donor.
			var e = jQuery.extend(
				new jQuery.Event(),
				event,
				{
					type: type,
					isSimulated: true,
					originalEvent: {}
				}
			);
			if ( bubble ) {
				jQuery.event.trigger( e, null, elem );
			} else {
				jQuery.event.dispatch.call( elem, e );
			}
			if ( e.isDefaultPrevented() ) {
				event.preventDefault();
			}
		}
	};

	jQuery.removeEvent = function( elem, type, handle ) {
		if ( elem.removeEventListener ) {
			elem.removeEventListener( type, handle, false );
		}
	};

	jQuery.Event = function( src, props ) {
		// Allow instantiation without the 'new' keyword
		if ( !(this instanceof jQuery.Event) ) {
			return new jQuery.Event( src, props );
		}

		// Event object
		if ( src && src.type ) {
			this.originalEvent = src;
			this.type = src.type;

			// Events bubbling up the document may have been marked as prevented
			// by a handler lower down the tree; reflect the correct value.
			this.isDefaultPrevented = src.defaultPrevented ||
					// Support: Android < 4.0
					src.defaultPrevented === undefined &&
					src.getPreventDefault && src.getPreventDefault() ?
				returnTrue :
				returnFalse;

		// Event type
		} else {
			this.type = src;
		}

		// Put explicitly provided properties onto the event object
		if ( props ) {
			jQuery.extend( this, props );
		}

		// Create a timestamp if incoming event doesn't have one
		this.timeStamp = src && src.timeStamp || jQuery.now();

		// Mark it as fixed
		this[ jQuery.expando ] = true;
	};

	// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
	// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
	jQuery.Event.prototype = {
		isDefaultPrevented: returnFalse,
		isPropagationStopped: returnFalse,
		isImmediatePropagationStopped: returnFalse,

		preventDefault: function() {
			var e = this.originalEvent;

			this.isDefaultPrevented = returnTrue;

			if ( e && e.preventDefault ) {
				e.preventDefault();
			}
		},
		stopPropagation: function() {
			var e = this.originalEvent;

			this.isPropagationStopped = returnTrue;

			if ( e && e.stopPropagation ) {
				e.stopPropagation();
			}
		},
		stopImmediatePropagation: function() {
			this.isImmediatePropagationStopped = returnTrue;
			this.stopPropagation();
		}
	};

	// Create mouseenter/leave events using mouseover/out and event-time checks
	// Support: Chrome 15+
	jQuery.each({
		mouseenter: "mouseover",
		mouseleave: "mouseout"
	}, function( orig, fix ) {
		jQuery.event.special[ orig ] = {
			delegateType: fix,
			bindType: fix,

			handle: function( event ) {
				var ret,
					target = this,
					related = event.relatedTarget,
					handleObj = event.handleObj;

				// For mousenter/leave call the handler if related is outside the target.
				// NB: No relatedTarget if the mouse left/entered the browser window
				if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
					event.type = handleObj.origType;
					ret = handleObj.handler.apply( this, arguments );
					event.type = fix;
				}
				return ret;
			}
		};
	});

	// Create "bubbling" focus and blur events
	// Support: Firefox, Chrome, Safari
	if ( !support.focusinBubbles ) {
		jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {

			// Attach a single capturing handler on the document while someone wants focusin/focusout
			var handler = function( event ) {
					jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
				};

			jQuery.event.special[ fix ] = {
				setup: function() {
					var doc = this.ownerDocument || this,
						attaches = data_priv.access( doc, fix );

					if ( !attaches ) {
						doc.addEventListener( orig, handler, true );
					}
					data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
				},
				teardown: function() {
					var doc = this.ownerDocument || this,
						attaches = data_priv.access( doc, fix ) - 1;

					if ( !attaches ) {
						doc.removeEventListener( orig, handler, true );
						data_priv.remove( doc, fix );

					} else {
						data_priv.access( doc, fix, attaches );
					}
				}
			};
		});
	}

	jQuery.fn.extend({

		on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
			var origFn, type;

			// Types can be a map of types/handlers
			if ( typeof types === "object" ) {
				// ( types-Object, selector, data )
				if ( typeof selector !== "string" ) {
					// ( types-Object, data )
					data = data || selector;
					selector = undefined;
				}
				for ( type in types ) {
					this.on( type, selector, data, types[ type ], one );
				}
				return this;
			}

			if ( data == null && fn == null ) {
				// ( types, fn )
				fn = selector;
				data = selector = undefined;
			} else if ( fn == null ) {
				if ( typeof selector === "string" ) {
					// ( types, selector, fn )
					fn = data;
					data = undefined;
				} else {
					// ( types, data, fn )
					fn = data;
					data = selector;
					selector = undefined;
				}
			}
			if ( fn === false ) {
				fn = returnFalse;
			} else if ( !fn ) {
				return this;
			}

			if ( one === 1 ) {
				origFn = fn;
				fn = function( event ) {
					// Can use an empty set, since event contains the info
					jQuery().off( event );
					return origFn.apply( this, arguments );
				};
				// Use same guid so caller can remove using origFn
				fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
			}
			return this.each( function() {
				jQuery.event.add( this, types, fn, data, selector );
			});
		},
		one: function( types, selector, data, fn ) {
			return this.on( types, selector, data, fn, 1 );
		},
		off: function( types, selector, fn ) {
			var handleObj, type;
			if ( types && types.preventDefault && types.handleObj ) {
				// ( event )  dispatched jQuery.Event
				handleObj = types.handleObj;
				jQuery( types.delegateTarget ).off(
					handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
					handleObj.selector,
					handleObj.handler
				);
				return this;
			}
			if ( typeof types === "object" ) {
				// ( types-object [, selector] )
				for ( type in types ) {
					this.off( type, selector, types[ type ] );
				}
				return this;
			}
			if ( selector === false || typeof selector === "function" ) {
				// ( types [, fn] )
				fn = selector;
				selector = undefined;
			}
			if ( fn === false ) {
				fn = returnFalse;
			}
			return this.each(function() {
				jQuery.event.remove( this, types, fn, selector );
			});
		},

		trigger: function( type, data ) {
			return this.each(function() {
				jQuery.event.trigger( type, data, this );
			});
		},
		triggerHandler: function( type, data ) {
			var elem = this[0];
			if ( elem ) {
				return jQuery.event.trigger( type, data, elem, true );
			}
		}
	});


	var
		rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
		rtagName = /<([\w:]+)/,
		rhtml = /<|&#?\w+;/,
		rnoInnerhtml = /<(?:script|style|link)/i,
		// checked="checked" or checked
		rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
		rscriptType = /^$|\/(?:java|ecma)script/i,
		rscriptTypeMasked = /^true\/(.*)/,
		rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,

		// We have to close these tags to support XHTML (#13200)
		wrapMap = {

			// Support: IE 9
			option: [ 1, "<select multiple='multiple'>", "</select>" ],

			thead: [ 1, "<table>", "</table>" ],
			col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
			tr: [ 2, "<table><tbody>", "</tbody></table>" ],
			td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],

			_default: [ 0, "", "" ]
		};

	// Support: IE 9
	wrapMap.optgroup = wrapMap.option;

	wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
	wrapMap.th = wrapMap.td;

	// Support: 1.x compatibility
	// Manipulating tables requires a tbody
	function manipulationTarget( elem, content ) {
		return jQuery.nodeName( elem, "table" ) &&
			jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?

			elem.getElementsByTagName("tbody")[0] ||
				elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
			elem;
	}

	// Replace/restore the type attribute of script elements for safe DOM manipulation
	function disableScript( elem ) {
		elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
		return elem;
	}
	function restoreScript( elem ) {
		var match = rscriptTypeMasked.exec( elem.type );

		if ( match ) {
			elem.type = match[ 1 ];
		} else {
			elem.removeAttribute("type");
		}

		return elem;
	}

	// Mark scripts as having already been evaluated
	function setGlobalEval( elems, refElements ) {
		var i = 0,
			l = elems.length;

		for ( ; i < l; i++ ) {
			data_priv.set(
				elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
			);
		}
	}

	function cloneCopyEvent( src, dest ) {
		var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;

		if ( dest.nodeType !== 1 ) {
			return;
		}

		// 1. Copy private data: events, handlers, etc.
		if ( data_priv.hasData( src ) ) {
			pdataOld = data_priv.access( src );
			pdataCur = data_priv.set( dest, pdataOld );
			events = pdataOld.events;

			if ( events ) {
				delete pdataCur.handle;
				pdataCur.events = {};

				for ( type in events ) {
					for ( i = 0, l = events[ type ].length; i < l; i++ ) {
						jQuery.event.add( dest, type, events[ type ][ i ] );
					}
				}
			}
		}

		// 2. Copy user data
		if ( data_user.hasData( src ) ) {
			udataOld = data_user.access( src );
			udataCur = jQuery.extend( {}, udataOld );

			data_user.set( dest, udataCur );
		}
	}

	function getAll( context, tag ) {
		var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
				context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
				[];

		return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
			jQuery.merge( [ context ], ret ) :
			ret;
	}

	// Support: IE >= 9
	function fixInput( src, dest ) {
		var nodeName = dest.nodeName.toLowerCase();

		// Fails to persist the checked state of a cloned checkbox or radio button.
		if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
			dest.checked = src.checked;

		// Fails to return the selected option to the default selected state when cloning options
		} else if ( nodeName === "input" || nodeName === "textarea" ) {
			dest.defaultValue = src.defaultValue;
		}
	}

	jQuery.extend({
		clone: function( elem, dataAndEvents, deepDataAndEvents ) {
			var i, l, srcElements, destElements,
				clone = elem.cloneNode( true ),
				inPage = jQuery.contains( elem.ownerDocument, elem );

			// Support: IE >= 9
			// Fix Cloning issues
			if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
					!jQuery.isXMLDoc( elem ) ) {

				// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
				destElements = getAll( clone );
				srcElements = getAll( elem );

				for ( i = 0, l = srcElements.length; i < l; i++ ) {
					fixInput( srcElements[ i ], destElements[ i ] );
				}
			}

			// Copy the events from the original to the clone
			if ( dataAndEvents ) {
				if ( deepDataAndEvents ) {
					srcElements = srcElements || getAll( elem );
					destElements = destElements || getAll( clone );

					for ( i = 0, l = srcElements.length; i < l; i++ ) {
						cloneCopyEvent( srcElements[ i ], destElements[ i ] );
					}
				} else {
					cloneCopyEvent( elem, clone );
				}
			}

			// Preserve script evaluation history
			destElements = getAll( clone, "script" );
			if ( destElements.length > 0 ) {
				setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
			}

			// Return the cloned set
			return clone;
		},

		buildFragment: function( elems, context, scripts, selection ) {
			var elem, tmp, tag, wrap, contains, j,
				fragment = context.createDocumentFragment(),
				nodes = [],
				i = 0,
				l = elems.length;

			for ( ; i < l; i++ ) {
				elem = elems[ i ];

				if ( elem || elem === 0 ) {

					// Add nodes directly
					if ( jQuery.type( elem ) === "object" ) {
						// Support: QtWebKit
						// jQuery.merge because push.apply(_, arraylike) throws
						jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );

					// Convert non-html into a text node
					} else if ( !rhtml.test( elem ) ) {
						nodes.push( context.createTextNode( elem ) );

					// Convert html into DOM nodes
					} else {
						tmp = tmp || fragment.appendChild( context.createElement("div") );

						// Deserialize a standard representation
						tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
						wrap = wrapMap[ tag ] || wrapMap._default;
						tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];

						// Descend through wrappers to the right content
						j = wrap[ 0 ];
						while ( j-- ) {
							tmp = tmp.lastChild;
						}

						// Support: QtWebKit
						// jQuery.merge because push.apply(_, arraylike) throws
						jQuery.merge( nodes, tmp.childNodes );

						// Remember the top-level container
						tmp = fragment.firstChild;

						// Fixes #12346
						// Support: Webkit, IE
						tmp.textContent = "";
					}
				}
			}

			// Remove wrapper from fragment
			fragment.textContent = "";

			i = 0;
			while ( (elem = nodes[ i++ ]) ) {

				// #4087 - If origin and destination elements are the same, and this is
				// that element, do not do anything
				if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
					continue;
				}

				contains = jQuery.contains( elem.ownerDocument, elem );

				// Append to fragment
				tmp = getAll( fragment.appendChild( elem ), "script" );

				// Preserve script evaluation history
				if ( contains ) {
					setGlobalEval( tmp );
				}

				// Capture executables
				if ( scripts ) {
					j = 0;
					while ( (elem = tmp[ j++ ]) ) {
						if ( rscriptType.test( elem.type || "" ) ) {
							scripts.push( elem );
						}
					}
				}
			}

			return fragment;
		},

		cleanData: function( elems ) {
			var data, elem, events, type, key, j,
				special = jQuery.event.special,
				i = 0;

			for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
				if ( jQuery.acceptData( elem ) ) {
					key = elem[ data_priv.expando ];

					if ( key && (data = data_priv.cache[ key ]) ) {
						events = Object.keys( data.events || {} );
						if ( events.length ) {
							for ( j = 0; (type = events[j]) !== undefined; j++ ) {
								if ( special[ type ] ) {
									jQuery.event.remove( elem, type );

								// This is a shortcut to avoid jQuery.event.remove's overhead
								} else {
									jQuery.removeEvent( elem, type, data.handle );
								}
							}
						}
						if ( data_priv.cache[ key ] ) {
							// Discard any remaining `private` data
							delete data_priv.cache[ key ];
						}
					}
				}
				// Discard any remaining `user` data
				delete data_user.cache[ elem[ data_user.expando ] ];
			}
		}
	});

	jQuery.fn.extend({
		text: function( value ) {
			return access( this, function( value ) {
				return value === undefined ?
					jQuery.text( this ) :
					this.empty().each(function() {
						if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
							this.textContent = value;
						}
					});
			}, null, value, arguments.length );
		},

		append: function() {
			return this.domManip( arguments, function( elem ) {
				if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
					var target = manipulationTarget( this, elem );
					target.appendChild( elem );
				}
			});
		},

		prepend: function() {
			return this.domManip( arguments, function( elem ) {
				if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
					var target = manipulationTarget( this, elem );
					target.insertBefore( elem, target.firstChild );
				}
			});
		},

		before: function() {
			return this.domManip( arguments, function( elem ) {
				if ( this.parentNode ) {
					this.parentNode.insertBefore( elem, this );
				}
			});
		},

		after: function() {
			return this.domManip( arguments, function( elem ) {
				if ( this.parentNode ) {
					this.parentNode.insertBefore( elem, this.nextSibling );
				}
			});
		},

		remove: function( selector, keepData /* Internal Use Only */ ) {
			var elem,
				elems = selector ? jQuery.filter( selector, this ) : this,
				i = 0;

			for ( ; (elem = elems[i]) != null; i++ ) {
				if ( !keepData && elem.nodeType === 1 ) {
					jQuery.cleanData( getAll( elem ) );
				}

				if ( elem.parentNode ) {
					if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
						setGlobalEval( getAll( elem, "script" ) );
					}
					elem.parentNode.removeChild( elem );
				}
			}

			return this;
		},

		empty: function() {
			var elem,
				i = 0;

			for ( ; (elem = this[i]) != null; i++ ) {
				if ( elem.nodeType === 1 ) {

					// Prevent memory leaks
					jQuery.cleanData( getAll( elem, false ) );

					// Remove any remaining nodes
					elem.textContent = "";
				}
			}

			return this;
		},

		clone: function( dataAndEvents, deepDataAndEvents ) {
			dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
			deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;

			return this.map(function() {
				return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
			});
		},

		html: function( value ) {
			return access( this, function( value ) {
				var elem = this[ 0 ] || {},
					i = 0,
					l = this.length;

				if ( value === undefined && elem.nodeType === 1 ) {
					return elem.innerHTML;
				}

				// See if we can take a shortcut and just use innerHTML
				if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
					!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {

					value = value.replace( rxhtmlTag, "<$1></$2>" );

					try {
						for ( ; i < l; i++ ) {
							elem = this[ i ] || {};

							// Remove element nodes and prevent memory leaks
							if ( elem.nodeType === 1 ) {
								jQuery.cleanData( getAll( elem, false ) );
								elem.innerHTML = value;
							}
						}

						elem = 0;

					// If using innerHTML throws an exception, use the fallback method
					} catch( e ) {}
				}

				if ( elem ) {
					this.empty().append( value );
				}
			}, null, value, arguments.length );
		},

		replaceWith: function() {
			var arg = arguments[ 0 ];

			// Make the changes, replacing each context element with the new content
			this.domManip( arguments, function( elem ) {
				arg = this.parentNode;

				jQuery.cleanData( getAll( this ) );

				if ( arg ) {
					arg.replaceChild( elem, this );
				}
			});

			// Force removal if there was no new content (e.g., from empty arguments)
			return arg && (arg.length || arg.nodeType) ? this : this.remove();
		},

		detach: function( selector ) {
			return this.remove( selector, true );
		},

		domManip: function( args, callback ) {

			// Flatten any nested arrays
			args = concat.apply( [], args );

			var fragment, first, scripts, hasScripts, node, doc,
				i = 0,
				l = this.length,
				set = this,
				iNoClone = l - 1,
				value = args[ 0 ],
				isFunction = jQuery.isFunction( value );

			// We can't cloneNode fragments that contain checked, in WebKit
			if ( isFunction ||
					( l > 1 && typeof value === "string" &&
						!support.checkClone && rchecked.test( value ) ) ) {
				return this.each(function( index ) {
					var self = set.eq( index );
					if ( isFunction ) {
						args[ 0 ] = value.call( this, index, self.html() );
					}
					self.domManip( args, callback );
				});
			}

			if ( l ) {
				fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
				first = fragment.firstChild;

				if ( fragment.childNodes.length === 1 ) {
					fragment = first;
				}

				if ( first ) {
					scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
					hasScripts = scripts.length;

					// Use the original fragment for the last item instead of the first because it can end up
					// being emptied incorrectly in certain situations (#8070).
					for ( ; i < l; i++ ) {
						node = fragment;

						if ( i !== iNoClone ) {
							node = jQuery.clone( node, true, true );

							// Keep references to cloned scripts for later restoration
							if ( hasScripts ) {
								// Support: QtWebKit
								// jQuery.merge because push.apply(_, arraylike) throws
								jQuery.merge( scripts, getAll( node, "script" ) );
							}
						}

						callback.call( this[ i ], node, i );
					}

					if ( hasScripts ) {
						doc = scripts[ scripts.length - 1 ].ownerDocument;

						// Reenable scripts
						jQuery.map( scripts, restoreScript );

						// Evaluate executable scripts on first document insertion
						for ( i = 0; i < hasScripts; i++ ) {
							node = scripts[ i ];
							if ( rscriptType.test( node.type || "" ) &&
								!data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {

								if ( node.src ) {
									// Optional AJAX dependency, but won't run scripts if not present
									if ( jQuery._evalUrl ) {
										jQuery._evalUrl( node.src );
									}
								} else {
									jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
								}
							}
						}
					}
				}
			}

			return this;
		}
	});

	jQuery.each({
		appendTo: "append",
		prependTo: "prepend",
		insertBefore: "before",
		insertAfter: "after",
		replaceAll: "replaceWith"
	}, function( name, original ) {
		jQuery.fn[ name ] = function( selector ) {
			var elems,
				ret = [],
				insert = jQuery( selector ),
				last = insert.length - 1,
				i = 0;

			for ( ; i <= last; i++ ) {
				elems = i === last ? this : this.clone( true );
				jQuery( insert[ i ] )[ original ]( elems );

				// Support: QtWebKit
				// .get() because push.apply(_, arraylike) throws
				push.apply( ret, elems.get() );
			}

			return this.pushStack( ret );
		};
	});


	var iframe,
		elemdisplay = {};

	/**
	 * Retrieve the actual display of a element
	 * @param {String} name nodeName of the element
	 * @param {Object} doc Document object
	 */
	// Called only from within defaultDisplay
	function actualDisplay( name, doc ) {
		var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),

			// getDefaultComputedStyle might be reliably used only on attached element
			display = window.getDefaultComputedStyle ?

				// Use of this method is a temporary fix (more like optmization) until something better comes along,
				// since it was removed from specification and supported only in FF
				window.getDefaultComputedStyle( elem[ 0 ] ).display : jQuery.css( elem[ 0 ], "display" );

		// We don't have any data stored on the element,
		// so use "detach" method as fast way to get rid of the element
		elem.detach();

		return display;
	}

	/**
	 * Try to determine the default display value of an element
	 * @param {String} nodeName
	 */
	function defaultDisplay( nodeName ) {
		var doc = document,
			display = elemdisplay[ nodeName ];

		if ( !display ) {
			display = actualDisplay( nodeName, doc );

			// If the simple way fails, read from inside an iframe
			if ( display === "none" || !display ) {

				// Use the already-created iframe if possible
				iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );

				// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
				doc = iframe[ 0 ].contentDocument;

				// Support: IE
				doc.write();
				doc.close();

				display = actualDisplay( nodeName, doc );
				iframe.detach();
			}

			// Store the correct default display
			elemdisplay[ nodeName ] = display;
		}

		return display;
	}
	var rmargin = (/^margin/);

	var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );

	var getStyles = function( elem ) {
			return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
		};



	function curCSS( elem, name, computed ) {
		var width, minWidth, maxWidth, ret,
			style = elem.style;

		computed = computed || getStyles( elem );

		// Support: IE9
		// getPropertyValue is only needed for .css('filter') in IE9, see #12537
		if ( computed ) {
			ret = computed.getPropertyValue( name ) || computed[ name ];
		}

		if ( computed ) {

			if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
				ret = jQuery.style( elem, name );
			}

			// Support: iOS < 6
			// A tribute to the "awesome hack by Dean Edwards"
			// iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
			// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
			if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {

				// Remember the original values
				width = style.width;
				minWidth = style.minWidth;
				maxWidth = style.maxWidth;

				// Put in the new values to get a computed value out
				style.minWidth = style.maxWidth = style.width = ret;
				ret = computed.width;

				// Revert the changed values
				style.width = width;
				style.minWidth = minWidth;
				style.maxWidth = maxWidth;
			}
		}

		return ret !== undefined ?
			// Support: IE
			// IE returns zIndex value as an integer.
			ret + "" :
			ret;
	}


	function addGetHookIf( conditionFn, hookFn ) {
		// Define the hook, we'll check on the first run if it's really needed.
		return {
			get: function() {
				if ( conditionFn() ) {
					// Hook not needed (or it's not possible to use it due to missing dependency),
					// remove it.
					// Since there are no other hooks for marginRight, remove the whole object.
					delete this.get;
					return;
				}

				// Hook needed; redefine it so that the support test is not executed again.

				return (this.get = hookFn).apply( this, arguments );
			}
		};
	}


	(function() {
		var pixelPositionVal, boxSizingReliableVal,
			// Support: Firefox, Android 2.3 (Prefixed box-sizing versions).
			divReset = "padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;" +
				"-moz-box-sizing:content-box;box-sizing:content-box",
			docElem = document.documentElement,
			container = document.createElement( "div" ),
			div = document.createElement( "div" );

		div.style.backgroundClip = "content-box";
		div.cloneNode( true ).style.backgroundClip = "";
		support.clearCloneStyle = div.style.backgroundClip === "content-box";

		container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;" +
			"margin-top:1px";
		container.appendChild( div );

		// Executing both pixelPosition & boxSizingReliable tests require only one layout
		// so they're executed at the same time to save the second computation.
		function computePixelPositionAndBoxSizingReliable() {
			// Support: Firefox, Android 2.3 (Prefixed box-sizing versions).
			div.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
				"box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;" +
				"position:absolute;top:1%";
			docElem.appendChild( container );

			var divStyle = window.getComputedStyle( div, null );
			pixelPositionVal = divStyle.top !== "1%";
			boxSizingReliableVal = divStyle.width === "4px";

			docElem.removeChild( container );
		}

		// Use window.getComputedStyle because jsdom on node.js will break without it.
		if ( window.getComputedStyle ) {
			jQuery.extend(support, {
				pixelPosition: function() {
					// This test is executed only once but we still do memoizing
					// since we can use the boxSizingReliable pre-computing.
					// No need to check if the test was already performed, though.
					computePixelPositionAndBoxSizingReliable();
					return pixelPositionVal;
				},
				boxSizingReliable: function() {
					if ( boxSizingReliableVal == null ) {
						computePixelPositionAndBoxSizingReliable();
					}
					return boxSizingReliableVal;
				},
				reliableMarginRight: function() {
					// Support: Android 2.3
					// Check if div with explicit width and no margin-right incorrectly
					// gets computed margin-right based on width of container. (#3333)
					// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
					// This support function is only executed once so no memoizing is needed.
					var ret,
						marginDiv = div.appendChild( document.createElement( "div" ) );
					marginDiv.style.cssText = div.style.cssText = divReset;
					marginDiv.style.marginRight = marginDiv.style.width = "0";
					div.style.width = "1px";
					docElem.appendChild( container );

					ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );

					docElem.removeChild( container );

					// Clean up the div for other support tests.
					div.innerHTML = "";

					return ret;
				}
			});
		}
	})();


	// A method for quickly swapping in/out CSS properties to get correct calculations.
	jQuery.swap = function( elem, options, callback, args ) {
		var ret, name,
			old = {};

		// Remember the old values, and insert the new ones
		for ( name in options ) {
			old[ name ] = elem.style[ name ];
			elem.style[ name ] = options[ name ];
		}

		ret = callback.apply( elem, args || [] );

		// Revert the old values
		for ( name in options ) {
			elem.style[ name ] = old[ name ];
		}

		return ret;
	};


	var
		// swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
		// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
		rdisplayswap = /^(none|table(?!-c[ea]).+)/,
		rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
		rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),

		cssShow = { position: "absolute", visibility: "hidden", display: "block" },
		cssNormalTransform = {
			letterSpacing: 0,
			fontWeight: 400
		},

		cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];

	// return a css property mapped to a potentially vendor prefixed property
	function vendorPropName( style, name ) {

		// shortcut for names that are not vendor prefixed
		if ( name in style ) {
			return name;
		}

		// check for vendor prefixed names
		var capName = name[0].toUpperCase() + name.slice(1),
			origName = name,
			i = cssPrefixes.length;

		while ( i-- ) {
			name = cssPrefixes[ i ] + capName;
			if ( name in style ) {
				return name;
			}
		}

		return origName;
	}

	function setPositiveNumber( elem, value, subtract ) {
		var matches = rnumsplit.exec( value );
		return matches ?
			// Guard against undefined "subtract", e.g., when used as in cssHooks
			Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
			value;
	}

	function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
		var i = extra === ( isBorderBox ? "border" : "content" ) ?
			// If we already have the right measurement, avoid augmentation
			4 :
			// Otherwise initialize for horizontal or vertical properties
			name === "width" ? 1 : 0,

			val = 0;

		for ( ; i < 4; i += 2 ) {
			// both box models exclude margin, so add it if we want it
			if ( extra === "margin" ) {
				val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
			}

			if ( isBorderBox ) {
				// border-box includes padding, so remove it if we want content
				if ( extra === "content" ) {
					val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
				}

				// at this point, extra isn't border nor margin, so remove border
				if ( extra !== "margin" ) {
					val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
				}
			} else {
				// at this point, extra isn't content, so add padding
				val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );

				// at this point, extra isn't content nor padding, so add border
				if ( extra !== "padding" ) {
					val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
				}
			}
		}

		return val;
	}

	function getWidthOrHeight( elem, name, extra ) {

		// Start with offset property, which is equivalent to the border-box value
		var valueIsBorderBox = true,
			val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
			styles = getStyles( elem ),
			isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";

		// some non-html elements return undefined for offsetWidth, so check for null/undefined
		// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
		// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
		if ( val <= 0 || val == null ) {
			// Fall back to computed then uncomputed css if necessary
			val = curCSS( elem, name, styles );
			if ( val < 0 || val == null ) {
				val = elem.style[ name ];
			}

			// Computed unit is not pixels. Stop here and return.
			if ( rnumnonpx.test(val) ) {
				return val;
			}

			// we need the check for style in case a browser which returns unreliable values
			// for getComputedStyle silently falls back to the reliable elem.style
			valueIsBorderBox = isBorderBox &&
				( support.boxSizingReliable() || val === elem.style[ name ] );

			// Normalize "", auto, and prepare for extra
			val = parseFloat( val ) || 0;
		}

		// use the active box-sizing model to add/subtract irrelevant styles
		return ( val +
			augmentWidthOrHeight(
				elem,
				name,
				extra || ( isBorderBox ? "border" : "content" ),
				valueIsBorderBox,
				styles
			)
		) + "px";
	}

	function showHide( elements, show ) {
		var display, elem, hidden,
			values = [],
			index = 0,
			length = elements.length;

		for ( ; index < length; index++ ) {
			elem = elements[ index ];
			if ( !elem.style ) {
				continue;
			}

			values[ index ] = data_priv.get( elem, "olddisplay" );
			display = elem.style.display;
			if ( show ) {
				// Reset the inline display of this element to learn if it is
				// being hidden by cascaded rules or not
				if ( !values[ index ] && display === "none" ) {
					elem.style.display = "";
				}

				// Set elements which have been overridden with display: none
				// in a stylesheet to whatever the default browser style is
				// for such an element
				if ( elem.style.display === "" && isHidden( elem ) ) {
					values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
				}
			} else {

				if ( !values[ index ] ) {
					hidden = isHidden( elem );

					if ( display && display !== "none" || !hidden ) {
						data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css(elem, "display") );
					}
				}
			}
		}

		// Set the display of most of the elements in a second loop
		// to avoid the constant reflow
		for ( index = 0; index < length; index++ ) {
			elem = elements[ index ];
			if ( !elem.style ) {
				continue;
			}
			if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
				elem.style.display = show ? values[ index ] || "" : "none";
			}
		}

		return elements;
	}

	jQuery.extend({
		// Add in style property hooks for overriding the default
		// behavior of getting and setting a style property
		cssHooks: {
			opacity: {
				get: function( elem, computed ) {
					if ( computed ) {
						// We should always get a number back from opacity
						var ret = curCSS( elem, "opacity" );
						return ret === "" ? "1" : ret;
					}
				}
			}
		},

		// Don't automatically add "px" to these possibly-unitless properties
		cssNumber: {
			"columnCount": true,
			"fillOpacity": true,
			"fontWeight": true,
			"lineHeight": true,
			"opacity": true,
			"order": true,
			"orphans": true,
			"widows": true,
			"zIndex": true,
			"zoom": true
		},

		// Add in properties whose names you wish to fix before
		// setting or getting the value
		cssProps: {
			// normalize float css property
			"float": "cssFloat"
		},

		// Get and set the style property on a DOM Node
		style: function( elem, name, value, extra ) {
			// Don't set styles on text and comment nodes
			if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
				return;
			}

			// Make sure that we're working with the right name
			var ret, type, hooks,
				origName = jQuery.camelCase( name ),
				style = elem.style;

			name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );

			// gets hook for the prefixed version
			// followed by the unprefixed version
			hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];

			// Check if we're setting a value
			if ( value !== undefined ) {
				type = typeof value;

				// convert relative number strings (+= or -=) to relative numbers. #7345
				if ( type === "string" && (ret = rrelNum.exec( value )) ) {
					value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
					// Fixes bug #9237
					type = "number";
				}

				// Make sure that null and NaN values aren't set. See: #7116
				if ( value == null || value !== value ) {
					return;
				}

				// If a number was passed in, add 'px' to the (except for certain CSS properties)
				if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
					value += "px";
				}

				// Fixes #8908, it can be done more correctly by specifying setters in cssHooks,
				// but it would mean to define eight (for every problematic property) identical functions
				if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
					style[ name ] = "inherit";
				}

				// If a hook was provided, use that value, otherwise just set the specified value
				if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
					// Support: Chrome, Safari
					// Setting style to blank string required to delete "style: x !important;"
					style[ name ] = "";
					style[ name ] = value;
				}

			} else {
				// If a hook was provided get the non-computed value from there
				if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
					return ret;
				}

				// Otherwise just get the value from the style object
				return style[ name ];
			}
		},

		css: function( elem, name, extra, styles ) {
			var val, num, hooks,
				origName = jQuery.camelCase( name );

			// Make sure that we're working with the right name
			name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );

			// gets hook for the prefixed version
			// followed by the unprefixed version
			hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];

			// If a hook was provided get the computed value from there
			if ( hooks && "get" in hooks ) {
				val = hooks.get( elem, true, extra );
			}

			// Otherwise, if a way to get the computed value exists, use that
			if ( val === undefined ) {
				val = curCSS( elem, name, styles );
			}

			//convert "normal" to computed value
			if ( val === "normal" && name in cssNormalTransform ) {
				val = cssNormalTransform[ name ];
			}

			// Return, converting to number if forced or a qualifier was provided and val looks numeric
			if ( extra === "" || extra ) {
				num = parseFloat( val );
				return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
			}
			return val;
		}
	});

	jQuery.each([ "height", "width" ], function( i, name ) {
		jQuery.cssHooks[ name ] = {
			get: function( elem, computed, extra ) {
				if ( computed ) {
					// certain elements can have dimension info if we invisibly show them
					// however, it must have a current display style that would benefit from this
					return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
						jQuery.swap( elem, cssShow, function() {
							return getWidthOrHeight( elem, name, extra );
						}) :
						getWidthOrHeight( elem, name, extra );
				}
			},

			set: function( elem, value, extra ) {
				var styles = extra && getStyles( elem );
				return setPositiveNumber( elem, value, extra ?
					augmentWidthOrHeight(
						elem,
						name,
						extra,
						jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
						styles
					) : 0
				);
			}
		};
	});

	// Support: Android 2.3
	jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
		function( elem, computed ) {
			if ( computed ) {
				// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
				// Work around by temporarily setting element display to inline-block
				return jQuery.swap( elem, { "display": "inline-block" },
					curCSS, [ elem, "marginRight" ] );
			}
		}
	);

	// These hooks are used by animate to expand properties
	jQuery.each({
		margin: "",
		padding: "",
		border: "Width"
	}, function( prefix, suffix ) {
		jQuery.cssHooks[ prefix + suffix ] = {
			expand: function( value ) {
				var i = 0,
					expanded = {},

					// assumes a single number if not a string
					parts = typeof value === "string" ? value.split(" ") : [ value ];

				for ( ; i < 4; i++ ) {
					expanded[ prefix + cssExpand[ i ] + suffix ] =
						parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
				}

				return expanded;
			}
		};

		if ( !rmargin.test( prefix ) ) {
			jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
		}
	});

	jQuery.fn.extend({
		css: function( name, value ) {
			return access( this, function( elem, name, value ) {
				var styles, len,
					map = {},
					i = 0;

				if ( jQuery.isArray( name ) ) {
					styles = getStyles( elem );
					len = name.length;

					for ( ; i < len; i++ ) {
						map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
					}

					return map;
				}

				return value !== undefined ?
					jQuery.style( elem, name, value ) :
					jQuery.css( elem, name );
			}, name, value, arguments.length > 1 );
		},
		show: function() {
			return showHide( this, true );
		},
		hide: function() {
			return showHide( this );
		},
		toggle: function( state ) {
			if ( typeof state === "boolean" ) {
				return state ? this.show() : this.hide();
			}

			return this.each(function() {
				if ( isHidden( this ) ) {
					jQuery( this ).show();
				} else {
					jQuery( this ).hide();
				}
			});
		}
	});


	function Tween( elem, options, prop, end, easing ) {
		return new Tween.prototype.init( elem, options, prop, end, easing );
	}
	jQuery.Tween = Tween;

	Tween.prototype = {
		constructor: Tween,
		init: function( elem, options, prop, end, easing, unit ) {
			this.elem = elem;
			this.prop = prop;
			this.easing = easing || "swing";
			this.options = options;
			this.start = this.now = this.cur();
			this.end = end;
			this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
		},
		cur: function() {
			var hooks = Tween.propHooks[ this.prop ];

			return hooks && hooks.get ?
				hooks.get( this ) :
				Tween.propHooks._default.get( this );
		},
		run: function( percent ) {
			var eased,
				hooks = Tween.propHooks[ this.prop ];

			if ( this.options.duration ) {
				this.pos = eased = jQuery.easing[ this.easing ](
					percent, this.options.duration * percent, 0, 1, this.options.duration
				);
			} else {
				this.pos = eased = percent;
			}
			this.now = ( this.end - this.start ) * eased + this.start;

			if ( this.options.step ) {
				this.options.step.call( this.elem, this.now, this );
			}

			if ( hooks && hooks.set ) {
				hooks.set( this );
			} else {
				Tween.propHooks._default.set( this );
			}
			return this;
		}
	};

	Tween.prototype.init.prototype = Tween.prototype;

	Tween.propHooks = {
		_default: {
			get: function( tween ) {
				var result;

				if ( tween.elem[ tween.prop ] != null &&
					(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
					return tween.elem[ tween.prop ];
				}

				// passing an empty string as a 3rd parameter to .css will automatically
				// attempt a parseFloat and fallback to a string if the parse fails
				// so, simple values such as "10px" are parsed to Float.
				// complex values such as "rotate(1rad)" are returned as is.
				result = jQuery.css( tween.elem, tween.prop, "" );
				// Empty strings, null, undefined and "auto" are converted to 0.
				return !result || result === "auto" ? 0 : result;
			},
			set: function( tween ) {
				// use step hook for back compat - use cssHook if its there - use .style if its
				// available and use plain properties where available
				if ( jQuery.fx.step[ tween.prop ] ) {
					jQuery.fx.step[ tween.prop ]( tween );
				} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
					jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
				} else {
					tween.elem[ tween.prop ] = tween.now;
				}
			}
		}
	};

	// Support: IE9
	// Panic based approach to setting things on disconnected nodes

	Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
		set: function( tween ) {
			if ( tween.elem.nodeType && tween.elem.parentNode ) {
				tween.elem[ tween.prop ] = tween.now;
			}
		}
	};

	jQuery.easing = {
		linear: function( p ) {
			return p;
		},
		swing: function( p ) {
			return 0.5 - Math.cos( p * Math.PI ) / 2;
		}
	};

	jQuery.fx = Tween.prototype.init;

	// Back Compat <1.8 extension point
	jQuery.fx.step = {};




	var
		fxNow, timerId,
		rfxtypes = /^(?:toggle|show|hide)$/,
		rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
		rrun = /queueHooks$/,
		animationPrefilters = [ defaultPrefilter ],
		tweeners = {
			"*": [ function( prop, value ) {
				var tween = this.createTween( prop, value ),
					target = tween.cur(),
					parts = rfxnum.exec( value ),
					unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),

					// Starting value computation is required for potential unit mismatches
					start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
						rfxnum.exec( jQuery.css( tween.elem, prop ) ),
					scale = 1,
					maxIterations = 20;

				if ( start && start[ 3 ] !== unit ) {
					// Trust units reported by jQuery.css
					unit = unit || start[ 3 ];

					// Make sure we update the tween properties later on
					parts = parts || [];

					// Iteratively approximate from a nonzero starting point
					start = +target || 1;

					do {
						// If previous iteration zeroed out, double until we get *something*
						// Use a string for doubling factor so we don't accidentally see scale as unchanged below
						scale = scale || ".5";

						// Adjust and apply
						start = start / scale;
						jQuery.style( tween.elem, prop, start + unit );

					// Update scale, tolerating zero or NaN from tween.cur()
					// And breaking the loop if scale is unchanged or perfect, or if we've just had enough
					} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
				}

				// Update tween properties
				if ( parts ) {
					start = tween.start = +start || +target || 0;
					tween.unit = unit;
					// If a +=/-= token was provided, we're doing a relative animation
					tween.end = parts[ 1 ] ?
						start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
						+parts[ 2 ];
				}

				return tween;
			} ]
		};

	// Animations created synchronously will run synchronously
	function createFxNow() {
		setTimeout(function() {
			fxNow = undefined;
		});
		return ( fxNow = jQuery.now() );
	}

	// Generate parameters to create a standard animation
	function genFx( type, includeWidth ) {
		var which,
			i = 0,
			attrs = { height: type };

		// if we include width, step value is 1 to do all cssExpand values,
		// if we don't include width, step value is 2 to skip over Left and Right
		includeWidth = includeWidth ? 1 : 0;
		for ( ; i < 4 ; i += 2 - includeWidth ) {
			which = cssExpand[ i ];
			attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
		}

		if ( includeWidth ) {
			attrs.opacity = attrs.width = type;
		}

		return attrs;
	}

	function createTween( value, prop, animation ) {
		var tween,
			collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
			index = 0,
			length = collection.length;
		for ( ; index < length; index++ ) {
			if ( (tween = collection[ index ].call( animation, prop, value )) ) {

				// we're done with this property
				return tween;
			}
		}
	}

	function defaultPrefilter( elem, props, opts ) {
		/* jshint validthis: true */
		var prop, value, toggle, tween, hooks, oldfire, display,
			anim = this,
			orig = {},
			style = elem.style,
			hidden = elem.nodeType && isHidden( elem ),
			dataShow = data_priv.get( elem, "fxshow" );

		// handle queue: false promises
		if ( !opts.queue ) {
			hooks = jQuery._queueHooks( elem, "fx" );
			if ( hooks.unqueued == null ) {
				hooks.unqueued = 0;
				oldfire = hooks.empty.fire;
				hooks.empty.fire = function() {
					if ( !hooks.unqueued ) {
						oldfire();
					}
				};
			}
			hooks.unqueued++;

			anim.always(function() {
				// doing this makes sure that the complete handler will be called
				// before this completes
				anim.always(function() {
					hooks.unqueued--;
					if ( !jQuery.queue( elem, "fx" ).length ) {
						hooks.empty.fire();
					}
				});
			});
		}

		// height/width overflow pass
		if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
			// Make sure that nothing sneaks out
			// Record all 3 overflow attributes because IE9-10 do not
			// change the overflow attribute when overflowX and
			// overflowY are set to the same value
			opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];

			// Set display property to inline-block for height/width
			// animations on inline elements that are having width/height animated
			display = jQuery.css( elem, "display" );
			// Get default display if display is currently "none"
			if ( display === "none" ) {
				display = defaultDisplay( elem.nodeName );
			}
			if ( display === "inline" &&
					jQuery.css( elem, "float" ) === "none" ) {

				style.display = "inline-block";
			}
		}

		if ( opts.overflow ) {
			style.overflow = "hidden";
			anim.always(function() {
				style.overflow = opts.overflow[ 0 ];
				style.overflowX = opts.overflow[ 1 ];
				style.overflowY = opts.overflow[ 2 ];
			});
		}

		// show/hide pass
		for ( prop in props ) {
			value = props[ prop ];
			if ( rfxtypes.exec( value ) ) {
				delete props[ prop ];
				toggle = toggle || value === "toggle";
				if ( value === ( hidden ? "hide" : "show" ) ) {

					// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
					if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
						hidden = true;
					} else {
						continue;
					}
				}
				orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
			}
		}

		if ( !jQuery.isEmptyObject( orig ) ) {
			if ( dataShow ) {
				if ( "hidden" in dataShow ) {
					hidden = dataShow.hidden;
				}
			} else {
				dataShow = data_priv.access( elem, "fxshow", {} );
			}

			// store state if its toggle - enables .stop().toggle() to "reverse"
			if ( toggle ) {
				dataShow.hidden = !hidden;
			}
			if ( hidden ) {
				jQuery( elem ).show();
			} else {
				anim.done(function() {
					jQuery( elem ).hide();
				});
			}
			anim.done(function() {
				var prop;

				data_priv.remove( elem, "fxshow" );
				for ( prop in orig ) {
					jQuery.style( elem, prop, orig[ prop ] );
				}
			});
			for ( prop in orig ) {
				tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );

				if ( !( prop in dataShow ) ) {
					dataShow[ prop ] = tween.start;
					if ( hidden ) {
						tween.end = tween.start;
						tween.start = prop === "width" || prop === "height" ? 1 : 0;
					}
				}
			}
		}
	}

	function propFilter( props, specialEasing ) {
		var index, name, easing, value, hooks;

		// camelCase, specialEasing and expand cssHook pass
		for ( index in props ) {
			name = jQuery.camelCase( index );
			easing = specialEasing[ name ];
			value = props[ index ];
			if ( jQuery.isArray( value ) ) {
				easing = value[ 1 ];
				value = props[ index ] = value[ 0 ];
			}

			if ( index !== name ) {
				props[ name ] = value;
				delete props[ index ];
			}

			hooks = jQuery.cssHooks[ name ];
			if ( hooks && "expand" in hooks ) {
				value = hooks.expand( value );
				delete props[ name ];

				// not quite $.extend, this wont overwrite keys already present.
				// also - reusing 'index' from above because we have the correct "name"
				for ( index in value ) {
					if ( !( index in props ) ) {
						props[ index ] = value[ index ];
						specialEasing[ index ] = easing;
					}
				}
			} else {
				specialEasing[ name ] = easing;
			}
		}
	}

	function Animation( elem, properties, options ) {
		var result,
			stopped,
			index = 0,
			length = animationPrefilters.length,
			deferred = jQuery.Deferred().always( function() {
				// don't match elem in the :animated selector
				delete tick.elem;
			}),
			tick = function() {
				if ( stopped ) {
					return false;
				}
				var currentTime = fxNow || createFxNow(),
					remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
					// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
					temp = remaining / animation.duration || 0,
					percent = 1 - temp,
					index = 0,
					length = animation.tweens.length;

				for ( ; index < length ; index++ ) {
					animation.tweens[ index ].run( percent );
				}

				deferred.notifyWith( elem, [ animation, percent, remaining ]);

				if ( percent < 1 && length ) {
					return remaining;
				} else {
					deferred.resolveWith( elem, [ animation ] );
					return false;
				}
			},
			animation = deferred.promise({
				elem: elem,
				props: jQuery.extend( {}, properties ),
				opts: jQuery.extend( true, { specialEasing: {} }, options ),
				originalProperties: properties,
				originalOptions: options,
				startTime: fxNow || createFxNow(),
				duration: options.duration,
				tweens: [],
				createTween: function( prop, end ) {
					var tween = jQuery.Tween( elem, animation.opts, prop, end,
							animation.opts.specialEasing[ prop ] || animation.opts.easing );
					animation.tweens.push( tween );
					return tween;
				},
				stop: function( gotoEnd ) {
					var index = 0,
						// if we are going to the end, we want to run all the tweens
						// otherwise we skip this part
						length = gotoEnd ? animation.tweens.length : 0;
					if ( stopped ) {
						return this;
					}
					stopped = true;
					for ( ; index < length ; index++ ) {
						animation.tweens[ index ].run( 1 );
					}

					// resolve when we played the last frame
					// otherwise, reject
					if ( gotoEnd ) {
						deferred.resolveWith( elem, [ animation, gotoEnd ] );
					} else {
						deferred.rejectWith( elem, [ animation, gotoEnd ] );
					}
					return this;
				}
			}),
			props = animation.props;

		propFilter( props, animation.opts.specialEasing );

		for ( ; index < length ; index++ ) {
			result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
			if ( result ) {
				return result;
			}
		}

		jQuery.map( props, createTween, animation );

		if ( jQuery.isFunction( animation.opts.start ) ) {
			animation.opts.start.call( elem, animation );
		}

		jQuery.fx.timer(
			jQuery.extend( tick, {
				elem: elem,
				anim: animation,
				queue: animation.opts.queue
			})
		);

		// attach callbacks from options
		return animation.progress( animation.opts.progress )
			.done( animation.opts.done, animation.opts.complete )
			.fail( animation.opts.fail )
			.always( animation.opts.always );
	}

	jQuery.Animation = jQuery.extend( Animation, {

		tweener: function( props, callback ) {
			if ( jQuery.isFunction( props ) ) {
				callback = props;
				props = [ "*" ];
			} else {
				props = props.split(" ");
			}

			var prop,
				index = 0,
				length = props.length;

			for ( ; index < length ; index++ ) {
				prop = props[ index ];
				tweeners[ prop ] = tweeners[ prop ] || [];
				tweeners[ prop ].unshift( callback );
			}
		},

		prefilter: function( callback, prepend ) {
			if ( prepend ) {
				animationPrefilters.unshift( callback );
			} else {
				animationPrefilters.push( callback );
			}
		}
	});

	jQuery.speed = function( speed, easing, fn ) {
		var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
			complete: fn || !fn && easing ||
				jQuery.isFunction( speed ) && speed,
			duration: speed,
			easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
		};

		opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
			opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;

		// normalize opt.queue - true/undefined/null -> "fx"
		if ( opt.queue == null || opt.queue === true ) {
			opt.queue = "fx";
		}

		// Queueing
		opt.old = opt.complete;

		opt.complete = function() {
			if ( jQuery.isFunction( opt.old ) ) {
				opt.old.call( this );
			}

			if ( opt.queue ) {
				jQuery.dequeue( this, opt.queue );
			}
		};

		return opt;
	};

	jQuery.fn.extend({
		fadeTo: function( speed, to, easing, callback ) {

			// show any hidden elements after setting opacity to 0
			return this.filter( isHidden ).css( "opacity", 0 ).show()

				// animate to the value specified
				.end().animate({ opacity: to }, speed, easing, callback );
		},
		animate: function( prop, speed, easing, callback ) {
			var empty = jQuery.isEmptyObject( prop ),
				optall = jQuery.speed( speed, easing, callback ),
				doAnimation = function() {
					// Operate on a copy of prop so per-property easing won't be lost
					var anim = Animation( this, jQuery.extend( {}, prop ), optall );

					// Empty animations, or finishing resolves immediately
					if ( empty || data_priv.get( this, "finish" ) ) {
						anim.stop( true );
					}
				};
				doAnimation.finish = doAnimation;

			return empty || optall.queue === false ?
				this.each( doAnimation ) :
				this.queue( optall.queue, doAnimation );
		},
		stop: function( type, clearQueue, gotoEnd ) {
			var stopQueue = function( hooks ) {
				var stop = hooks.stop;
				delete hooks.stop;
				stop( gotoEnd );
			};

			if ( typeof type !== "string" ) {
				gotoEnd = clearQueue;
				clearQueue = type;
				type = undefined;
			}
			if ( clearQueue && type !== false ) {
				this.queue( type || "fx", [] );
			}

			return this.each(function() {
				var dequeue = true,
					index = type != null && type + "queueHooks",
					timers = jQuery.timers,
					data = data_priv.get( this );

				if ( index ) {
					if ( data[ index ] && data[ index ].stop ) {
						stopQueue( data[ index ] );
					}
				} else {
					for ( index in data ) {
						if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
							stopQueue( data[ index ] );
						}
					}
				}

				for ( index = timers.length; index--; ) {
					if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
						timers[ index ].anim.stop( gotoEnd );
						dequeue = false;
						timers.splice( index, 1 );
					}
				}

				// start the next in the queue if the last step wasn't forced
				// timers currently will call their complete callbacks, which will dequeue
				// but only if they were gotoEnd
				if ( dequeue || !gotoEnd ) {
					jQuery.dequeue( this, type );
				}
			});
		},
		finish: function( type ) {
			if ( type !== false ) {
				type = type || "fx";
			}
			return this.each(function() {
				var index,
					data = data_priv.get( this ),
					queue = data[ type + "queue" ],
					hooks = data[ type + "queueHooks" ],
					timers = jQuery.timers,
					length = queue ? queue.length : 0;

				// enable finishing flag on private data
				data.finish = true;

				// empty the queue first
				jQuery.queue( this, type, [] );

				if ( hooks && hooks.stop ) {
					hooks.stop.call( this, true );
				}

				// look for any active animations, and finish them
				for ( index = timers.length; index--; ) {
					if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
						timers[ index ].anim.stop( true );
						timers.splice( index, 1 );
					}
				}

				// look for any animations in the old queue and finish them
				for ( index = 0; index < length; index++ ) {
					if ( queue[ index ] && queue[ index ].finish ) {
						queue[ index ].finish.call( this );
					}
				}

				// turn off finishing flag
				delete data.finish;
			});
		}
	});

	jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
		var cssFn = jQuery.fn[ name ];
		jQuery.fn[ name ] = function( speed, easing, callback ) {
			return speed == null || typeof speed === "boolean" ?
				cssFn.apply( this, arguments ) :
				this.animate( genFx( name, true ), speed, easing, callback );
		};
	});

	// Generate shortcuts for custom animations
	jQuery.each({
		slideDown: genFx("show"),
		slideUp: genFx("hide"),
		slideToggle: genFx("toggle"),
		fadeIn: { opacity: "show" },
		fadeOut: { opacity: "hide" },
		fadeToggle: { opacity: "toggle" }
	}, function( name, props ) {
		jQuery.fn[ name ] = function( speed, easing, callback ) {
			return this.animate( props, speed, easing, callback );
		};
	});

	jQuery.timers = [];
	jQuery.fx.tick = function() {
		var timer,
			i = 0,
			timers = jQuery.timers;

		fxNow = jQuery.now();

		for ( ; i < timers.length; i++ ) {
			timer = timers[ i ];
			// Checks the timer has not already been removed
			if ( !timer() && timers[ i ] === timer ) {
				timers.splice( i--, 1 );
			}
		}

		if ( !timers.length ) {
			jQuery.fx.stop();
		}
		fxNow = undefined;
	};

	jQuery.fx.timer = function( timer ) {
		jQuery.timers.push( timer );
		if ( timer() ) {
			jQuery.fx.start();
		} else {
			jQuery.timers.pop();
		}
	};

	jQuery.fx.interval = 13;

	jQuery.fx.start = function() {
		if ( !timerId ) {
			timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
		}
	};

	jQuery.fx.stop = function() {
		clearInterval( timerId );
		timerId = null;
	};

	jQuery.fx.speeds = {
		slow: 600,
		fast: 200,
		// Default speed
		_default: 400
	};


	// Based off of the plugin by Clint Helfers, with permission.
	// http://blindsignals.com/index.php/2009/07/jquery-delay/
	jQuery.fn.delay = function( time, type ) {
		time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
		type = type || "fx";

		return this.queue( type, function( next, hooks ) {
			var timeout = setTimeout( next, time );
			hooks.stop = function() {
				clearTimeout( timeout );
			};
		});
	};


	(function() {
		var input = document.createElement( "input" ),
			select = document.createElement( "select" ),
			opt = select.appendChild( document.createElement( "option" ) );

		input.type = "checkbox";

		// Support: iOS 5.1, Android 4.x, Android 2.3
		// Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere)
		support.checkOn = input.value !== "";

		// Must access the parent to make an option select properly
		// Support: IE9, IE10
		support.optSelected = opt.selected;

		// Make sure that the options inside disabled selects aren't marked as disabled
		// (WebKit marks them as disabled)
		select.disabled = true;
		support.optDisabled = !opt.disabled;

		// Check if an input maintains its value after becoming a radio
		// Support: IE9, IE10
		input = document.createElement( "input" );
		input.value = "t";
		input.type = "radio";
		support.radioValue = input.value === "t";
	})();


	var nodeHook, boolHook,
		attrHandle = jQuery.expr.attrHandle;

	jQuery.fn.extend({
		attr: function( name, value ) {
			return access( this, jQuery.attr, name, value, arguments.length > 1 );
		},

		removeAttr: function( name ) {
			return this.each(function() {
				jQuery.removeAttr( this, name );
			});
		}
	});

	jQuery.extend({
		attr: function( elem, name, value ) {
			var hooks, ret,
				nType = elem.nodeType;

			// don't get/set attributes on text, comment and attribute nodes
			if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
				return;
			}

			// Fallback to prop when attributes are not supported
			if ( typeof elem.getAttribute === strundefined ) {
				return jQuery.prop( elem, name, value );
			}

			// All attributes are lowercase
			// Grab necessary hook if one is defined
			if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
				name = name.toLowerCase();
				hooks = jQuery.attrHooks[ name ] ||
					( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
			}

			if ( value !== undefined ) {

				if ( value === null ) {
					jQuery.removeAttr( elem, name );

				} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
					return ret;

				} else {
					elem.setAttribute( name, value + "" );
					return value;
				}

			} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
				return ret;

			} else {
				ret = jQuery.find.attr( elem, name );

				// Non-existent attributes return null, we normalize to undefined
				return ret == null ?
					undefined :
					ret;
			}
		},

		removeAttr: function( elem, value ) {
			var name, propName,
				i = 0,
				attrNames = value && value.match( rnotwhite );

			if ( attrNames && elem.nodeType === 1 ) {
				while ( (name = attrNames[i++]) ) {
					propName = jQuery.propFix[ name ] || name;

					// Boolean attributes get special treatment (#10870)
					if ( jQuery.expr.match.bool.test( name ) ) {
						// Set corresponding property to false
						elem[ propName ] = false;
					}

					elem.removeAttribute( name );
				}
			}
		},

		attrHooks: {
			type: {
				set: function( elem, value ) {
					if ( !support.radioValue && value === "radio" &&
						jQuery.nodeName( elem, "input" ) ) {
						// Setting the type on a radio button after the value resets the value in IE6-9
						// Reset value to default in case type is set after value during creation
						var val = elem.value;
						elem.setAttribute( "type", value );
						if ( val ) {
							elem.value = val;
						}
						return value;
					}
				}
			}
		}
	});

	// Hooks for boolean attributes
	boolHook = {
		set: function( elem, value, name ) {
			if ( value === false ) {
				// Remove boolean attributes when set to false
				jQuery.removeAttr( elem, name );
			} else {
				elem.setAttribute( name, name );
			}
			return name;
		}
	};
	jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
		var getter = attrHandle[ name ] || jQuery.find.attr;

		attrHandle[ name ] = function( elem, name, isXML ) {
			var ret, handle;
			if ( !isXML ) {
				// Avoid an infinite loop by temporarily removing this function from the getter
				handle = attrHandle[ name ];
				attrHandle[ name ] = ret;
				ret = getter( elem, name, isXML ) != null ?
					name.toLowerCase() :
					null;
				attrHandle[ name ] = handle;
			}
			return ret;
		};
	});




	var rfocusable = /^(?:input|select|textarea|button)$/i;

	jQuery.fn.extend({
		prop: function( name, value ) {
			return access( this, jQuery.prop, name, value, arguments.length > 1 );
		},

		removeProp: function( name ) {
			return this.each(function() {
				delete this[ jQuery.propFix[ name ] || name ];
			});
		}
	});

	jQuery.extend({
		propFix: {
			"for": "htmlFor",
			"class": "className"
		},

		prop: function( elem, name, value ) {
			var ret, hooks, notxml,
				nType = elem.nodeType;

			// don't get/set properties on text, comment and attribute nodes
			if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
				return;
			}

			notxml = nType !== 1 || !jQuery.isXMLDoc( elem );

			if ( notxml ) {
				// Fix name and attach hooks
				name = jQuery.propFix[ name ] || name;
				hooks = jQuery.propHooks[ name ];
			}

			if ( value !== undefined ) {
				return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
					ret :
					( elem[ name ] = value );

			} else {
				return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
					ret :
					elem[ name ];
			}
		},

		propHooks: {
			tabIndex: {
				get: function( elem ) {
					return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
						elem.tabIndex :
						-1;
				}
			}
		}
	});

	// Support: IE9+
	// Selectedness for an option in an optgroup can be inaccurate
	if ( !support.optSelected ) {
		jQuery.propHooks.selected = {
			get: function( elem ) {
				var parent = elem.parentNode;
				if ( parent && parent.parentNode ) {
					parent.parentNode.selectedIndex;
				}
				return null;
			}
		};
	}

	jQuery.each([
		"tabIndex",
		"readOnly",
		"maxLength",
		"cellSpacing",
		"cellPadding",
		"rowSpan",
		"colSpan",
		"useMap",
		"frameBorder",
		"contentEditable"
	], function() {
		jQuery.propFix[ this.toLowerCase() ] = this;
	});




	var rclass = /[\t\r\n\f]/g;

	jQuery.fn.extend({
		addClass: function( value ) {
			var classes, elem, cur, clazz, j, finalValue,
				proceed = typeof value === "string" && value,
				i = 0,
				len = this.length;

			if ( jQuery.isFunction( value ) ) {
				return this.each(function( j ) {
					jQuery( this ).addClass( value.call( this, j, this.className ) );
				});
			}

			if ( proceed ) {
				// The disjunction here is for better compressibility (see removeClass)
				classes = ( value || "" ).match( rnotwhite ) || [];

				for ( ; i < len; i++ ) {
					elem = this[ i ];
					cur = elem.nodeType === 1 && ( elem.className ?
						( " " + elem.className + " " ).replace( rclass, " " ) :
						" "
					);

					if ( cur ) {
						j = 0;
						while ( (clazz = classes[j++]) ) {
							if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
								cur += clazz + " ";
							}
						}

						// only assign if different to avoid unneeded rendering.
						finalValue = jQuery.trim( cur );
						if ( elem.className !== finalValue ) {
							elem.className = finalValue;
						}
					}
				}
			}

			return this;
		},

		removeClass: function( value ) {
			var classes, elem, cur, clazz, j, finalValue,
				proceed = arguments.length === 0 || typeof value === "string" && value,
				i = 0,
				len = this.length;

			if ( jQuery.isFunction( value ) ) {
				return this.each(function( j ) {
					jQuery( this ).removeClass( value.call( this, j, this.className ) );
				});
			}
			if ( proceed ) {
				classes = ( value || "" ).match( rnotwhite ) || [];

				for ( ; i < len; i++ ) {
					elem = this[ i ];
					// This expression is here for better compressibility (see addClass)
					cur = elem.nodeType === 1 && ( elem.className ?
						( " " + elem.className + " " ).replace( rclass, " " ) :
						""
					);

					if ( cur ) {
						j = 0;
						while ( (clazz = classes[j++]) ) {
							// Remove *all* instances
							while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
								cur = cur.replace( " " + clazz + " ", " " );
							}
						}

						// only assign if different to avoid unneeded rendering.
						finalValue = value ? jQuery.trim( cur ) : "";
						if ( elem.className !== finalValue ) {
							elem.className = finalValue;
						}
					}
				}
			}

			return this;
		},

		toggleClass: function( value, stateVal ) {
			var type = typeof value;

			if ( typeof stateVal === "boolean" && type === "string" ) {
				return stateVal ? this.addClass( value ) : this.removeClass( value );
			}

			if ( jQuery.isFunction( value ) ) {
				return this.each(function( i ) {
					jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
				});
			}

			return this.each(function() {
				if ( type === "string" ) {
					// toggle individual class names
					var className,
						i = 0,
						self = jQuery( this ),
						classNames = value.match( rnotwhite ) || [];

					while ( (className = classNames[ i++ ]) ) {
						// check each className given, space separated list
						if ( self.hasClass( className ) ) {
							self.removeClass( className );
						} else {
							self.addClass( className );
						}
					}

				// Toggle whole class name
				} else if ( type === strundefined || type === "boolean" ) {
					if ( this.className ) {
						// store className if set
						data_priv.set( this, "__className__", this.className );
					}

					// If the element has a class name or if we're passed "false",
					// then remove the whole classname (if there was one, the above saved it).
					// Otherwise bring back whatever was previously saved (if anything),
					// falling back to the empty string if nothing was stored.
					this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
				}
			});
		},

		hasClass: function( selector ) {
			var className = " " + selector + " ",
				i = 0,
				l = this.length;
			for ( ; i < l; i++ ) {
				if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
					return true;
				}
			}

			return false;
		}
	});




	var rreturn = /\r/g;

	jQuery.fn.extend({
		val: function( value ) {
			var hooks, ret, isFunction,
				elem = this[0];

			if ( !arguments.length ) {
				if ( elem ) {
					hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];

					if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
						return ret;
					}

					ret = elem.value;

					return typeof ret === "string" ?
						// handle most common string cases
						ret.replace(rreturn, "") :
						// handle cases where value is null/undef or number
						ret == null ? "" : ret;
				}

				return;
			}

			isFunction = jQuery.isFunction( value );

			return this.each(function( i ) {
				var val;

				if ( this.nodeType !== 1 ) {
					return;
				}

				if ( isFunction ) {
					val = value.call( this, i, jQuery( this ).val() );
				} else {
					val = value;
				}

				// Treat null/undefined as ""; convert numbers to string
				if ( val == null ) {
					val = "";

				} else if ( typeof val === "number" ) {
					val += "";

				} else if ( jQuery.isArray( val ) ) {
					val = jQuery.map( val, function( value ) {
						return value == null ? "" : value + "";
					});
				}

				hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];

				// If set returns undefined, fall back to normal setting
				if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
					this.value = val;
				}
			});
		}
	});

	jQuery.extend({
		valHooks: {
			select: {
				get: function( elem ) {
					var value, option,
						options = elem.options,
						index = elem.selectedIndex,
						one = elem.type === "select-one" || index < 0,
						values = one ? null : [],
						max = one ? index + 1 : options.length,
						i = index < 0 ?
							max :
							one ? index : 0;

					// Loop through all the selected options
					for ( ; i < max; i++ ) {
						option = options[ i ];

						// IE6-9 doesn't update selected after form reset (#2551)
						if ( ( option.selected || i === index ) &&
								// Don't return options that are disabled or in a disabled optgroup
								( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
								( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {

							// Get the specific value for the option
							value = jQuery( option ).val();

							// We don't need an array for one selects
							if ( one ) {
								return value;
							}

							// Multi-Selects return an array
							values.push( value );
						}
					}

					return values;
				},

				set: function( elem, value ) {
					var optionSet, option,
						options = elem.options,
						values = jQuery.makeArray( value ),
						i = options.length;

					while ( i-- ) {
						option = options[ i ];
						if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) {
							optionSet = true;
						}
					}

					// force browsers to behave consistently when non-matching value is set
					if ( !optionSet ) {
						elem.selectedIndex = -1;
					}
					return values;
				}
			}
		}
	});

	// Radios and checkboxes getter/setter
	jQuery.each([ "radio", "checkbox" ], function() {
		jQuery.valHooks[ this ] = {
			set: function( elem, value ) {
				if ( jQuery.isArray( value ) ) {
					return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
				}
			}
		};
		if ( !support.checkOn ) {
			jQuery.valHooks[ this ].get = function( elem ) {
				// Support: Webkit
				// "" is returned instead of "on" if a value isn't specified
				return elem.getAttribute("value") === null ? "on" : elem.value;
			};
		}
	});




	// Return jQuery for attributes-only inclusion


	jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
		"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
		"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {

		// Handle event binding
		jQuery.fn[ name ] = function( data, fn ) {
			return arguments.length > 0 ?
				this.on( name, null, data, fn ) :
				this.trigger( name );
		};
	});

	jQuery.fn.extend({
		hover: function( fnOver, fnOut ) {
			return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
		},

		bind: function( types, data, fn ) {
			return this.on( types, null, data, fn );
		},
		unbind: function( types, fn ) {
			return this.off( types, null, fn );
		},

		delegate: function( selector, types, data, fn ) {
			return this.on( types, selector, data, fn );
		},
		undelegate: function( selector, types, fn ) {
			// ( namespace ) or ( selector, types [, fn] )
			return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
		}
	});


	var nonce = jQuery.now();

	var rquery = (/\?/);



	// Support: Android 2.3
	// Workaround failure to string-cast null input
	jQuery.parseJSON = function( data ) {
		return JSON.parse( data + "" );
	};


	// Cross-browser xml parsing
	jQuery.parseXML = function( data ) {
		var xml, tmp;
		if ( !data || typeof data !== "string" ) {
			return null;
		}

		// Support: IE9
		try {
			tmp = new DOMParser();
			xml = tmp.parseFromString( data, "text/xml" );
		} catch ( e ) {
			xml = undefined;
		}

		if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
			jQuery.error( "Invalid XML: " + data );
		}
		return xml;
	};


	var
		// Document location
		ajaxLocParts,
		ajaxLocation,

		rhash = /#.*$/,
		rts = /([?&])_=[^&]*/,
		rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
		// #7653, #8125, #8152: local protocol detection
		rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
		rnoContent = /^(?:GET|HEAD)$/,
		rprotocol = /^\/\//,
		rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,

		/* Prefilters
		 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
		 * 2) These are called:
		 *    - BEFORE asking for a transport
		 *    - AFTER param serialization (s.data is a string if s.processData is true)
		 * 3) key is the dataType
		 * 4) the catchall symbol "*" can be used
		 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
		 */
		prefilters = {},

		/* Transports bindings
		 * 1) key is the dataType
		 * 2) the catchall symbol "*" can be used
		 * 3) selection will start with transport dataType and THEN go to "*" if needed
		 */
		transports = {},

		// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
		allTypes = "*/".concat("*");

	// #8138, IE may throw an exception when accessing
	// a field from window.location if document.domain has been set
	try {
		ajaxLocation = location.href;
	} catch( e ) {
		// Use the href attribute of an A element
		// since IE will modify it given document.location
		ajaxLocation = document.createElement( "a" );
		ajaxLocation.href = "";
		ajaxLocation = ajaxLocation.href;
	}

	// Segment location into parts
	ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];

	// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
	function addToPrefiltersOrTransports( structure ) {

		// dataTypeExpression is optional and defaults to "*"
		return function( dataTypeExpression, func ) {

			if ( typeof dataTypeExpression !== "string" ) {
				func = dataTypeExpression;
				dataTypeExpression = "*";
			}

			var dataType,
				i = 0,
				dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];

			if ( jQuery.isFunction( func ) ) {
				// For each dataType in the dataTypeExpression
				while ( (dataType = dataTypes[i++]) ) {
					// Prepend if requested
					if ( dataType[0] === "+" ) {
						dataType = dataType.slice( 1 ) || "*";
						(structure[ dataType ] = structure[ dataType ] || []).unshift( func );

					// Otherwise append
					} else {
						(structure[ dataType ] = structure[ dataType ] || []).push( func );
					}
				}
			}
		};
	}

	// Base inspection function for prefilters and transports
	function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {

		var inspected = {},
			seekingTransport = ( structure === transports );

		function inspect( dataType ) {
			var selected;
			inspected[ dataType ] = true;
			jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
				var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
				if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
					options.dataTypes.unshift( dataTypeOrTransport );
					inspect( dataTypeOrTransport );
					return false;
				} else if ( seekingTransport ) {
					return !( selected = dataTypeOrTransport );
				}
			});
			return selected;
		}

		return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
	}

	// A special extend for ajax options
	// that takes "flat" options (not to be deep extended)
	// Fixes #9887
	function ajaxExtend( target, src ) {
		var key, deep,
			flatOptions = jQuery.ajaxSettings.flatOptions || {};

		for ( key in src ) {
			if ( src[ key ] !== undefined ) {
				( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
			}
		}
		if ( deep ) {
			jQuery.extend( true, target, deep );
		}

		return target;
	}

	/* Handles responses to an ajax request:
	 * - finds the right dataType (mediates between content-type and expected dataType)
	 * - returns the corresponding response
	 */
	function ajaxHandleResponses( s, jqXHR, responses ) {

		var ct, type, finalDataType, firstDataType,
			contents = s.contents,
			dataTypes = s.dataTypes;

		// Remove auto dataType and get content-type in the process
		while ( dataTypes[ 0 ] === "*" ) {
			dataTypes.shift();
			if ( ct === undefined ) {
				ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
			}
		}

		// Check if we're dealing with a known content-type
		if ( ct ) {
			for ( type in contents ) {
				if ( contents[ type ] && contents[ type ].test( ct ) ) {
					dataTypes.unshift( type );
					break;
				}
			}
		}

		// Check to see if we have a response for the expected dataType
		if ( dataTypes[ 0 ] in responses ) {
			finalDataType = dataTypes[ 0 ];
		} else {
			// Try convertible dataTypes
			for ( type in responses ) {
				if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
					finalDataType = type;
					break;
				}
				if ( !firstDataType ) {
					firstDataType = type;
				}
			}
			// Or just use first one
			finalDataType = finalDataType || firstDataType;
		}

		// If we found a dataType
		// We add the dataType to the list if needed
		// and return the corresponding response
		if ( finalDataType ) {
			if ( finalDataType !== dataTypes[ 0 ] ) {
				dataTypes.unshift( finalDataType );
			}
			return responses[ finalDataType ];
		}
	}

	/* Chain conversions given the request and the original response
	 * Also sets the responseXXX fields on the jqXHR instance
	 */
	function ajaxConvert( s, response, jqXHR, isSuccess ) {
		var conv2, current, conv, tmp, prev,
			converters = {},
			// Work with a copy of dataTypes in case we need to modify it for conversion
			dataTypes = s.dataTypes.slice();

		// Create converters map with lowercased keys
		if ( dataTypes[ 1 ] ) {
			for ( conv in s.converters ) {
				converters[ conv.toLowerCase() ] = s.converters[ conv ];
			}
		}

		current = dataTypes.shift();

		// Convert to each sequential dataType
		while ( current ) {

			if ( s.responseFields[ current ] ) {
				jqXHR[ s.responseFields[ current ] ] = response;
			}

			// Apply the dataFilter if provided
			if ( !prev && isSuccess && s.dataFilter ) {
				response = s.dataFilter( response, s.dataType );
			}

			prev = current;
			current = dataTypes.shift();

			if ( current ) {

			// There's only work to do if current dataType is non-auto
				if ( current === "*" ) {

					current = prev;

				// Convert response if prev dataType is non-auto and differs from current
				} else if ( prev !== "*" && prev !== current ) {

					// Seek a direct converter
					conv = converters[ prev + " " + current ] || converters[ "* " + current ];

					// If none found, seek a pair
					if ( !conv ) {
						for ( conv2 in converters ) {

							// If conv2 outputs current
							tmp = conv2.split( " " );
							if ( tmp[ 1 ] === current ) {

								// If prev can be converted to accepted input
								conv = converters[ prev + " " + tmp[ 0 ] ] ||
									converters[ "* " + tmp[ 0 ] ];
								if ( conv ) {
									// Condense equivalence converters
									if ( conv === true ) {
										conv = converters[ conv2 ];

									// Otherwise, insert the intermediate dataType
									} else if ( converters[ conv2 ] !== true ) {
										current = tmp[ 0 ];
										dataTypes.unshift( tmp[ 1 ] );
									}
									break;
								}
							}
						}
					}

					// Apply converter (if not an equivalence)
					if ( conv !== true ) {

						// Unless errors are allowed to bubble, catch and return them
						if ( conv && s[ "throws" ] ) {
							response = conv( response );
						} else {
							try {
								response = conv( response );
							} catch ( e ) {
								return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
							}
						}
					}
				}
			}
		}

		return { state: "success", data: response };
	}

	jQuery.extend({

		// Counter for holding the number of active queries
		active: 0,

		// Last-Modified header cache for next request
		lastModified: {},
		etag: {},

		ajaxSettings: {
			url: ajaxLocation,
			type: "GET",
			isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
			global: true,
			processData: true,
			async: true,
			contentType: "application/x-www-form-urlencoded; charset=UTF-8",
			/*
			timeout: 0,
			data: null,
			dataType: null,
			username: null,
			password: null,
			cache: null,
			throws: false,
			traditional: false,
			headers: {},
			*/

			accepts: {
				"*": allTypes,
				text: "text/plain",
				html: "text/html",
				xml: "application/xml, text/xml",
				json: "application/json, text/javascript"
			},

			contents: {
				xml: /xml/,
				html: /html/,
				json: /json/
			},

			responseFields: {
				xml: "responseXML",
				text: "responseText",
				json: "responseJSON"
			},

			// Data converters
			// Keys separate source (or catchall "*") and destination types with a single space
			converters: {

				// Convert anything to text
				"* text": String,

				// Text to html (true = no transformation)
				"text html": true,

				// Evaluate text as a json expression
				"text json": jQuery.parseJSON,

				// Parse text as xml
				"text xml": jQuery.parseXML
			},

			// For options that shouldn't be deep extended:
			// you can add your own custom options here if
			// and when you create one that shouldn't be
			// deep extended (see ajaxExtend)
			flatOptions: {
				url: true,
				context: true
			}
		},

		// Creates a full fledged settings object into target
		// with both ajaxSettings and settings fields.
		// If target is omitted, writes into ajaxSettings.
		ajaxSetup: function( target, settings ) {
			return settings ?

				// Building a settings object
				ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :

				// Extending ajaxSettings
				ajaxExtend( jQuery.ajaxSettings, target );
		},

		ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
		ajaxTransport: addToPrefiltersOrTransports( transports ),

		// Main method
		ajax: function( url, options ) {

			// If url is an object, simulate pre-1.5 signature
			if ( typeof url === "object" ) {
				options = url;
				url = undefined;
			}

			// Force options to be an object
			options = options || {};

			var transport,
				// URL without anti-cache param
				cacheURL,
				// Response headers
				responseHeadersString,
				responseHeaders,
				// timeout handle
				timeoutTimer,
				// Cross-domain detection vars
				parts,
				// To know if global events are to be dispatched
				fireGlobals,
				// Loop variable
				i,
				// Create the final options object
				s = jQuery.ajaxSetup( {}, options ),
				// Callbacks context
				callbackContext = s.context || s,
				// Context for global events is callbackContext if it is a DOM node or jQuery collection
				globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
					jQuery( callbackContext ) :
					jQuery.event,
				// Deferreds
				deferred = jQuery.Deferred(),
				completeDeferred = jQuery.Callbacks("once memory"),
				// Status-dependent callbacks
				statusCode = s.statusCode || {},
				// Headers (they are sent all at once)
				requestHeaders = {},
				requestHeadersNames = {},
				// The jqXHR state
				state = 0,
				// Default abort message
				strAbort = "canceled",
				// Fake xhr
				jqXHR = {
					readyState: 0,

					// Builds headers hashtable if needed
					getResponseHeader: function( key ) {
						var match;
						if ( state === 2 ) {
							if ( !responseHeaders ) {
								responseHeaders = {};
								while ( (match = rheaders.exec( responseHeadersString )) ) {
									responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
								}
							}
							match = responseHeaders[ key.toLowerCase() ];
						}
						return match == null ? null : match;
					},

					// Raw string
					getAllResponseHeaders: function() {
						return state === 2 ? responseHeadersString : null;
					},

					// Caches the header
					setRequestHeader: function( name, value ) {
						var lname = name.toLowerCase();
						if ( !state ) {
							name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
							requestHeaders[ name ] = value;
						}
						return this;
					},

					// Overrides response content-type header
					overrideMimeType: function( type ) {
						if ( !state ) {
							s.mimeType = type;
						}
						return this;
					},

					// Status-dependent callbacks
					statusCode: function( map ) {
						var code;
						if ( map ) {
							if ( state < 2 ) {
								for ( code in map ) {
									// Lazy-add the new callback in a way that preserves old ones
									statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
								}
							} else {
								// Execute the appropriate callbacks
								jqXHR.always( map[ jqXHR.status ] );
							}
						}
						return this;
					},

					// Cancel the request
					abort: function( statusText ) {
						var finalText = statusText || strAbort;
						if ( transport ) {
							transport.abort( finalText );
						}
						done( 0, finalText );
						return this;
					}
				};

			// Attach deferreds
			deferred.promise( jqXHR ).complete = completeDeferred.add;
			jqXHR.success = jqXHR.done;
			jqXHR.error = jqXHR.fail;

			// Remove hash character (#7531: and string promotion)
			// Add protocol if not provided (prefilters might expect it)
			// Handle falsy url in the settings object (#10093: consistency with old signature)
			// We also use the url parameter if available
			s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
				.replace( rprotocol, ajaxLocParts[ 1 ] + "//" );

			// Alias method option to type as per ticket #12004
			s.type = options.method || options.type || s.method || s.type;

			// Extract dataTypes list
			s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];

			// A cross-domain request is in order when we have a protocol:host:port mismatch
			if ( s.crossDomain == null ) {
				parts = rurl.exec( s.url.toLowerCase() );
				s.crossDomain = !!( parts &&
					( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
						( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
							( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
				);
			}

			// Convert data if not already a string
			if ( s.data && s.processData && typeof s.data !== "string" ) {
				s.data = jQuery.param( s.data, s.traditional );
			}

			// Apply prefilters
			inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );

			// If request was aborted inside a prefilter, stop there
			if ( state === 2 ) {
				return jqXHR;
			}

			// We can fire global events as of now if asked to
			fireGlobals = s.global;

			// Watch for a new set of requests
			if ( fireGlobals && jQuery.active++ === 0 ) {
				jQuery.event.trigger("ajaxStart");
			}

			// Uppercase the type
			s.type = s.type.toUpperCase();

			// Determine if request has content
			s.hasContent = !rnoContent.test( s.type );

			// Save the URL in case we're toying with the If-Modified-Since
			// and/or If-None-Match header later on
			cacheURL = s.url;

			// More options handling for requests with no content
			if ( !s.hasContent ) {

				// If data is available, append data to url
				if ( s.data ) {
					cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
					// #9682: remove data so that it's not used in an eventual retry
					delete s.data;
				}

				// Add anti-cache in url if needed
				if ( s.cache === false ) {
					s.url = rts.test( cacheURL ) ?

						// If there is already a '_' parameter, set its value
						cacheURL.replace( rts, "$1_=" + nonce++ ) :

						// Otherwise add one to the end
						cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
				}
			}

			// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
			if ( s.ifModified ) {
				if ( jQuery.lastModified[ cacheURL ] ) {
					jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
				}
				if ( jQuery.etag[ cacheURL ] ) {
					jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
				}
			}

			// Set the correct header, if data is being sent
			if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
				jqXHR.setRequestHeader( "Content-Type", s.contentType );
			}

			// Set the Accepts header for the server, depending on the dataType
			jqXHR.setRequestHeader(
				"Accept",
				s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
					s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
					s.accepts[ "*" ]
			);

			// Check for headers option
			for ( i in s.headers ) {
				jqXHR.setRequestHeader( i, s.headers[ i ] );
			}

			// Allow custom headers/mimetypes and early abort
			if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
				// Abort if not done already and return
				return jqXHR.abort();
			}

			// aborting is no longer a cancellation
			strAbort = "abort";

			// Install callbacks on deferreds
			for ( i in { success: 1, error: 1, complete: 1 } ) {
				jqXHR[ i ]( s[ i ] );
			}

			// Get transport
			transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );

			// If no transport, we auto-abort
			if ( !transport ) {
				done( -1, "No Transport" );
			} else {
				jqXHR.readyState = 1;

				// Send global event
				if ( fireGlobals ) {
					globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
				}
				// Timeout
				if ( s.async && s.timeout > 0 ) {
					timeoutTimer = setTimeout(function() {
						jqXHR.abort("timeout");
					}, s.timeout );
				}

				try {
					state = 1;
					transport.send( requestHeaders, done );
				} catch ( e ) {
					// Propagate exception as error if not done
					if ( state < 2 ) {
						done( -1, e );
					// Simply rethrow otherwise
					} else {
						throw e;
					}
				}
			}

			// Callback for when everything is done
			function done( status, nativeStatusText, responses, headers ) {
				var isSuccess, success, error, response, modified,
					statusText = nativeStatusText;

				// Called once
				if ( state === 2 ) {
					return;
				}

				// State is "done" now
				state = 2;

				// Clear timeout if it exists
				if ( timeoutTimer ) {
					clearTimeout( timeoutTimer );
				}

				// Dereference transport for early garbage collection
				// (no matter how long the jqXHR object will be used)
				transport = undefined;

				// Cache response headers
				responseHeadersString = headers || "";

				// Set readyState
				jqXHR.readyState = status > 0 ? 4 : 0;

				// Determine if successful
				isSuccess = status >= 200 && status < 300 || status === 304;

				// Get response data
				if ( responses ) {
					response = ajaxHandleResponses( s, jqXHR, responses );
				}

				// Convert no matter what (that way responseXXX fields are always set)
				response = ajaxConvert( s, response, jqXHR, isSuccess );

				// If successful, handle type chaining
				if ( isSuccess ) {

					// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
					if ( s.ifModified ) {
						modified = jqXHR.getResponseHeader("Last-Modified");
						if ( modified ) {
							jQuery.lastModified[ cacheURL ] = modified;
						}
						modified = jqXHR.getResponseHeader("etag");
						if ( modified ) {
							jQuery.etag[ cacheURL ] = modified;
						}
					}

					// if no content
					if ( status === 204 || s.type === "HEAD" ) {
						statusText = "nocontent";

					// if not modified
					} else if ( status === 304 ) {
						statusText = "notmodified";

					// If we have data, let's convert it
					} else {
						statusText = response.state;
						success = response.data;
						error = response.error;
						isSuccess = !error;
					}
				} else {
					// We extract error from statusText
					// then normalize statusText and status for non-aborts
					error = statusText;
					if ( status || !statusText ) {
						statusText = "error";
						if ( status < 0 ) {
							status = 0;
						}
					}
				}

				// Set data for the fake xhr object
				jqXHR.status = status;
				jqXHR.statusText = ( nativeStatusText || statusText ) + "";

				// Success/Error
				if ( isSuccess ) {
					deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
				} else {
					deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
				}

				// Status-dependent callbacks
				jqXHR.statusCode( statusCode );
				statusCode = undefined;

				if ( fireGlobals ) {
					globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
						[ jqXHR, s, isSuccess ? success : error ] );
				}

				// Complete
				completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );

				if ( fireGlobals ) {
					globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
					// Handle the global AJAX counter
					if ( !( --jQuery.active ) ) {
						jQuery.event.trigger("ajaxStop");
					}
				}
			}

			return jqXHR;
		},

		getJSON: function( url, data, callback ) {
			return jQuery.get( url, data, callback, "json" );
		},

		getScript: function( url, callback ) {
			return jQuery.get( url, undefined, callback, "script" );
		}
	});

	jQuery.each( [ "get", "post" ], function( i, method ) {
		jQuery[ method ] = function( url, data, callback, type ) {
			// shift arguments if data argument was omitted
			if ( jQuery.isFunction( data ) ) {
				type = type || callback;
				callback = data;
				data = undefined;
			}

			return jQuery.ajax({
				url: url,
				type: method,
				dataType: type,
				data: data,
				success: callback
			});
		};
	});

	// Attach a bunch of functions for handling common AJAX events
	jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
		jQuery.fn[ type ] = function( fn ) {
			return this.on( type, fn );
		};
	});


	jQuery._evalUrl = function( url ) {
		return jQuery.ajax({
			url: url,
			type: "GET",
			dataType: "script",
			async: false,
			global: false,
			"throws": true
		});
	};


	jQuery.fn.extend({
		wrapAll: function( html ) {
			var wrap;

			if ( jQuery.isFunction( html ) ) {
				return this.each(function( i ) {
					jQuery( this ).wrapAll( html.call(this, i) );
				});
			}

			if ( this[ 0 ] ) {

				// The elements to wrap the target around
				wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );

				if ( this[ 0 ].parentNode ) {
					wrap.insertBefore( this[ 0 ] );
				}

				wrap.map(function() {
					var elem = this;

					while ( elem.firstElementChild ) {
						elem = elem.firstElementChild;
					}

					return elem;
				}).append( this );
			}

			return this;
		},

		wrapInner: function( html ) {
			if ( jQuery.isFunction( html ) ) {
				return this.each(function( i ) {
					jQuery( this ).wrapInner( html.call(this, i) );
				});
			}

			return this.each(function() {
				var self = jQuery( this ),
					contents = self.contents();

				if ( contents.length ) {
					contents.wrapAll( html );

				} else {
					self.append( html );
				}
			});
		},

		wrap: function( html ) {
			var isFunction = jQuery.isFunction( html );

			return this.each(function( i ) {
				jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
			});
		},

		unwrap: function() {
			return this.parent().each(function() {
				if ( !jQuery.nodeName( this, "body" ) ) {
					jQuery( this ).replaceWith( this.childNodes );
				}
			}).end();
		}
	});


	jQuery.expr.filters.hidden = function( elem ) {
		// Support: Opera <= 12.12
		// Opera reports offsetWidths and offsetHeights less than zero on some elements
		return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
	};
	jQuery.expr.filters.visible = function( elem ) {
		return !jQuery.expr.filters.hidden( elem );
	};




	var r20 = /%20/g,
		rbracket = /\[\]$/,
		rCRLF = /\r?\n/g,
		rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
		rsubmittable = /^(?:input|select|textarea|keygen)/i;

	function buildParams( prefix, obj, traditional, add ) {
		var name;

		if ( jQuery.isArray( obj ) ) {
			// Serialize array item.
			jQuery.each( obj, function( i, v ) {
				if ( traditional || rbracket.test( prefix ) ) {
					// Treat each array item as a scalar.
					add( prefix, v );

				} else {
					// Item is non-scalar (array or object), encode its numeric index.
					buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
				}
			});

		} else if ( !traditional && jQuery.type( obj ) === "object" ) {
			// Serialize object item.
			for ( name in obj ) {
				buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
			}

		} else {
			// Serialize scalar item.
			add( prefix, obj );
		}
	}

	// Serialize an array of form elements or a set of
	// key/values into a query string
	jQuery.param = function( a, traditional ) {
		var prefix,
			s = [],
			add = function( key, value ) {
				// If value is a function, invoke it and return its value
				value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
				s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
			};

		// Set traditional to true for jQuery <= 1.3.2 behavior.
		if ( traditional === undefined ) {
			traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
		}

		// If an array was passed in, assume that it is an array of form elements.
		if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
			// Serialize the form elements
			jQuery.each( a, function() {
				add( this.name, this.value );
			});

		} else {
			// If traditional, encode the "old" way (the way 1.3.2 or older
			// did it), otherwise encode params recursively.
			for ( prefix in a ) {
				buildParams( prefix, a[ prefix ], traditional, add );
			}
		}

		// Return the resulting serialization
		return s.join( "&" ).replace( r20, "+" );
	};

	jQuery.fn.extend({
		serialize: function() {
			return jQuery.param( this.serializeArray() );
		},
		serializeArray: function() {
			return this.map(function() {
				// Can add propHook for "elements" to filter or add form elements
				var elements = jQuery.prop( this, "elements" );
				return elements ? jQuery.makeArray( elements ) : this;
			})
			.filter(function() {
				var type = this.type;

				// Use .is( ":disabled" ) so that fieldset[disabled] works
				return this.name && !jQuery( this ).is( ":disabled" ) &&
					rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
					( this.checked || !rcheckableType.test( type ) );
			})
			.map(function( i, elem ) {
				var val = jQuery( this ).val();

				return val == null ?
					null :
					jQuery.isArray( val ) ?
						jQuery.map( val, function( val ) {
							return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
						}) :
						{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
			}).get();
		}
	});


	jQuery.ajaxSettings.xhr = function() {
		try {
			return new XMLHttpRequest();
		} catch( e ) {}
	};

	var xhrId = 0,
		xhrCallbacks = {},
		xhrSuccessStatus = {
			// file protocol always yields status code 0, assume 200
			0: 200,
			// Support: IE9
			// #1450: sometimes IE returns 1223 when it should be 204
			1223: 204
		},
		xhrSupported = jQuery.ajaxSettings.xhr();

	// Support: IE9
	// Open requests must be manually aborted on unload (#5280)
	if ( window.ActiveXObject ) {
		jQuery( window ).on( "unload", function() {
			for ( var key in xhrCallbacks ) {
				xhrCallbacks[ key ]();
			}
		});
	}

	support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
	support.ajax = xhrSupported = !!xhrSupported;

	jQuery.ajaxTransport(function( options ) {
		var callback;

		// Cross domain only allowed if supported through XMLHttpRequest
		if ( support.cors || xhrSupported && !options.crossDomain ) {
			return {
				send: function( headers, complete ) {
					var i,
						xhr = options.xhr(),
						id = ++xhrId;

					xhr.open( options.type, options.url, options.async, options.username, options.password );

					// Apply custom fields if provided
					if ( options.xhrFields ) {
						for ( i in options.xhrFields ) {
							xhr[ i ] = options.xhrFields[ i ];
						}
					}

					// Override mime type if needed
					if ( options.mimeType && xhr.overrideMimeType ) {
						xhr.overrideMimeType( options.mimeType );
					}

					// X-Requested-With header
					// For cross-domain requests, seeing as conditions for a preflight are
					// akin to a jigsaw puzzle, we simply never set it to be sure.
					// (it can always be set on a per-request basis or even using ajaxSetup)
					// For same-domain requests, won't change header if already provided.
					if ( !options.crossDomain && !headers["X-Requested-With"] ) {
						headers["X-Requested-With"] = "XMLHttpRequest";
					}

					// Set headers
					for ( i in headers ) {
						xhr.setRequestHeader( i, headers[ i ] );
					}

					// Callback
					callback = function( type ) {
						return function() {
							if ( callback ) {
								delete xhrCallbacks[ id ];
								callback = xhr.onload = xhr.onerror = null;

								if ( type === "abort" ) {
									xhr.abort();
								} else if ( type === "error" ) {
									complete(
										// file: protocol always yields status 0; see #8605, #14207
										xhr.status,
										xhr.statusText
									);
								} else {
									complete(
										xhrSuccessStatus[ xhr.status ] || xhr.status,
										xhr.statusText,
										// Support: IE9
										// Accessing binary-data responseText throws an exception
										// (#11426)
										typeof xhr.responseText === "string" ? {
											text: xhr.responseText
										} : undefined,
										xhr.getAllResponseHeaders()
									);
								}
							}
						};
					};

					// Listen to events
					xhr.onload = callback();
					xhr.onerror = callback("error");

					// Create the abort callback
					callback = xhrCallbacks[ id ] = callback("abort");

					// Do send the request
					// This may raise an exception which is actually
					// handled in jQuery.ajax (so no try/catch here)
					xhr.send( options.hasContent && options.data || null );
				},

				abort: function() {
					if ( callback ) {
						callback();
					}
				}
			};
		}
	});




	// Install script dataType
	jQuery.ajaxSetup({
		accepts: {
			script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
		},
		contents: {
			script: /(?:java|ecma)script/
		},
		converters: {
			"text script": function( text ) {
				jQuery.globalEval( text );
				return text;
			}
		}
	});

	// Handle cache's special case and crossDomain
	jQuery.ajaxPrefilter( "script", function( s ) {
		if ( s.cache === undefined ) {
			s.cache = false;
		}
		if ( s.crossDomain ) {
			s.type = "GET";
		}
	});

	// Bind script tag hack transport
	jQuery.ajaxTransport( "script", function( s ) {
		// This transport only deals with cross domain requests
		if ( s.crossDomain ) {
			var script, callback;
			return {
				send: function( _, complete ) {
					script = jQuery("<script>").prop({
						async: true,
						charset: s.scriptCharset,
						src: s.url
					}).on(
						"load error",
						callback = function( evt ) {
							script.remove();
							callback = null;
							if ( evt ) {
								complete( evt.type === "error" ? 404 : 200, evt.type );
							}
						}
					);
					document.head.appendChild( script[ 0 ] );
				},
				abort: function() {
					if ( callback ) {
						callback();
					}
				}
			};
		}
	});




	var oldCallbacks = [],
		rjsonp = /(=)\?(?=&|$)|\?\?/;

	// Default jsonp settings
	jQuery.ajaxSetup({
		jsonp: "callback",
		jsonpCallback: function() {
			var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
			this[ callback ] = true;
			return callback;
		}
	});

	// Detect, normalize options and install callbacks for jsonp requests
	jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {

		var callbackName, overwritten, responseContainer,
			jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
				"url" :
				typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
			);

		// Handle iff the expected data type is "jsonp" or we have a parameter to set
		if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {

			// Get callback name, remembering preexisting value associated with it
			callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
				s.jsonpCallback() :
				s.jsonpCallback;

			// Insert callback into url or form data
			if ( jsonProp ) {
				s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
			} else if ( s.jsonp !== false ) {
				s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
			}

			// Use data converter to retrieve json after script execution
			s.converters["script json"] = function() {
				if ( !responseContainer ) {
					jQuery.error( callbackName + " was not called" );
				}
				return responseContainer[ 0 ];
			};

			// force json dataType
			s.dataTypes[ 0 ] = "json";

			// Install callback
			overwritten = window[ callbackName ];
			window[ callbackName ] = function() {
				responseContainer = arguments;
			};

			// Clean-up function (fires after converters)
			jqXHR.always(function() {
				// Restore preexisting value
				window[ callbackName ] = overwritten;

				// Save back as free
				if ( s[ callbackName ] ) {
					// make sure that re-using the options doesn't screw things around
					s.jsonpCallback = originalSettings.jsonpCallback;

					// save the callback name for future use
					oldCallbacks.push( callbackName );
				}

				// Call if it was a function and we have a response
				if ( responseContainer && jQuery.isFunction( overwritten ) ) {
					overwritten( responseContainer[ 0 ] );
				}

				responseContainer = overwritten = undefined;
			});

			// Delegate to script
			return "script";
		}
	});




	// data: string of html
	// context (optional): If specified, the fragment will be created in this context, defaults to document
	// keepScripts (optional): If true, will include scripts passed in the html string
	jQuery.parseHTML = function( data, context, keepScripts ) {
		if ( !data || typeof data !== "string" ) {
			return null;
		}
		if ( typeof context === "boolean" ) {
			keepScripts = context;
			context = false;
		}
		context = context || document;

		var parsed = rsingleTag.exec( data ),
			scripts = !keepScripts && [];

		// Single tag
		if ( parsed ) {
			return [ context.createElement( parsed[1] ) ];
		}

		parsed = jQuery.buildFragment( [ data ], context, scripts );

		if ( scripts && scripts.length ) {
			jQuery( scripts ).remove();
		}

		return jQuery.merge( [], parsed.childNodes );
	};


	// Keep a copy of the old load method
	var _load = jQuery.fn.load;

	/**
	 * Load a url into a page
	 */
	jQuery.fn.load = function( url, params, callback ) {
		if ( typeof url !== "string" && _load ) {
			return _load.apply( this, arguments );
		}

		var selector, type, response,
			self = this,
			off = url.indexOf(" ");

		if ( off >= 0 ) {
			selector = url.slice( off );
			url = url.slice( 0, off );
		}

		// If it's a function
		if ( jQuery.isFunction( params ) ) {

			// We assume that it's the callback
			callback = params;
			params = undefined;

		// Otherwise, build a param string
		} else if ( params && typeof params === "object" ) {
			type = "POST";
		}

		// If we have elements to modify, make the request
		if ( self.length > 0 ) {
			jQuery.ajax({
				url: url,

				// if "type" variable is undefined, then "GET" method will be used
				type: type,
				dataType: "html",
				data: params
			}).done(function( responseText ) {

				// Save response for use in complete callback
				response = arguments;

				self.html( selector ?

					// If a selector was specified, locate the right elements in a dummy div
					// Exclude scripts to avoid IE 'Permission Denied' errors
					jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :

					// Otherwise use the full result
					responseText );

			}).complete( callback && function( jqXHR, status ) {
				self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
			});
		}

		return this;
	};




	jQuery.expr.filters.animated = function( elem ) {
		return jQuery.grep(jQuery.timers, function( fn ) {
			return elem === fn.elem;
		}).length;
	};




	var docElem = window.document.documentElement;

	/**
	 * Gets a window from an element
	 */
	function getWindow( elem ) {
		return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
	}

	jQuery.offset = {
		setOffset: function( elem, options, i ) {
			var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
				position = jQuery.css( elem, "position" ),
				curElem = jQuery( elem ),
				props = {};

			// Set position first, in-case top/left are set even on static elem
			if ( position === "static" ) {
				elem.style.position = "relative";
			}

			curOffset = curElem.offset();
			curCSSTop = jQuery.css( elem, "top" );
			curCSSLeft = jQuery.css( elem, "left" );
			calculatePosition = ( position === "absolute" || position === "fixed" ) &&
				( curCSSTop + curCSSLeft ).indexOf("auto") > -1;

			// Need to be able to calculate position if either top or left is auto and position is either absolute or fixed
			if ( calculatePosition ) {
				curPosition = curElem.position();
				curTop = curPosition.top;
				curLeft = curPosition.left;

			} else {
				curTop = parseFloat( curCSSTop ) || 0;
				curLeft = parseFloat( curCSSLeft ) || 0;
			}

			if ( jQuery.isFunction( options ) ) {
				options = options.call( elem, i, curOffset );
			}

			if ( options.top != null ) {
				props.top = ( options.top - curOffset.top ) + curTop;
			}
			if ( options.left != null ) {
				props.left = ( options.left - curOffset.left ) + curLeft;
			}

			if ( "using" in options ) {
				options.using.call( elem, props );

			} else {
				curElem.css( props );
			}
		}
	};

	jQuery.fn.extend({
		offset: function( options ) {
			if ( arguments.length ) {
				return options === undefined ?
					this :
					this.each(function( i ) {
						jQuery.offset.setOffset( this, options, i );
					});
			}

			var docElem, win,
				elem = this[ 0 ],
				box = { top: 0, left: 0 },
				doc = elem && elem.ownerDocument;

			if ( !doc ) {
				return;
			}

			docElem = doc.documentElement;

			// Make sure it's not a disconnected DOM node
			if ( !jQuery.contains( docElem, elem ) ) {
				return box;
			}

			// If we don't have gBCR, just use 0,0 rather than error
			// BlackBerry 5, iOS 3 (original iPhone)
			if ( typeof elem.getBoundingClientRect !== strundefined ) {
				box = elem.getBoundingClientRect();
			}
			win = getWindow( doc );
			return {
				top: box.top + win.pageYOffset - docElem.clientTop,
				left: box.left + win.pageXOffset - docElem.clientLeft
			};
		},

		position: function() {
			if ( !this[ 0 ] ) {
				return;
			}

			var offsetParent, offset,
				elem = this[ 0 ],
				parentOffset = { top: 0, left: 0 };

			// Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
			if ( jQuery.css( elem, "position" ) === "fixed" ) {
				// We assume that getBoundingClientRect is available when computed position is fixed
				offset = elem.getBoundingClientRect();

			} else {
				// Get *real* offsetParent
				offsetParent = this.offsetParent();

				// Get correct offsets
				offset = this.offset();
				if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
					parentOffset = offsetParent.offset();
				}

				// Add offsetParent borders
				parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
				parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
			}

			// Subtract parent offsets and element margins
			return {
				top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
				left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
			};
		},

		offsetParent: function() {
			return this.map(function() {
				var offsetParent = this.offsetParent || docElem;

				while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
					offsetParent = offsetParent.offsetParent;
				}

				return offsetParent || docElem;
			});
		}
	});

	// Create scrollLeft and scrollTop methods
	jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
		var top = "pageYOffset" === prop;

		jQuery.fn[ method ] = function( val ) {
			return access( this, function( elem, method, val ) {
				var win = getWindow( elem );

				if ( val === undefined ) {
					return win ? win[ prop ] : elem[ method ];
				}

				if ( win ) {
					win.scrollTo(
						!top ? val : window.pageXOffset,
						top ? val : window.pageYOffset
					);

				} else {
					elem[ method ] = val;
				}
			}, method, val, arguments.length, null );
		};
	});

	// Add the top/left cssHooks using jQuery.fn.position
	// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
	// getComputedStyle returns percent when specified for top/left/bottom/right
	// rather than make the css module depend on the offset module, we just check for it here
	jQuery.each( [ "top", "left" ], function( i, prop ) {
		jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
			function( elem, computed ) {
				if ( computed ) {
					computed = curCSS( elem, prop );
					// if curCSS returns percentage, fallback to offset
					return rnumnonpx.test( computed ) ?
						jQuery( elem ).position()[ prop ] + "px" :
						computed;
				}
			}
		);
	});


	// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
	jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
		jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
			// margin is only for outerHeight, outerWidth
			jQuery.fn[ funcName ] = function( margin, value ) {
				var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
					extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );

				return access( this, function( elem, type, value ) {
					var doc;

					if ( jQuery.isWindow( elem ) ) {
						// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
						// isn't a whole lot we can do. See pull request at this URL for discussion:
						// https://github.com/jquery/jquery/pull/764
						return elem.document.documentElement[ "client" + name ];
					}

					// Get document width or height
					if ( elem.nodeType === 9 ) {
						doc = elem.documentElement;

						// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
						// whichever is greatest
						return Math.max(
							elem.body[ "scroll" + name ], doc[ "scroll" + name ],
							elem.body[ "offset" + name ], doc[ "offset" + name ],
							doc[ "client" + name ]
						);
					}

					return value === undefined ?
						// Get width or height on the element, requesting but not forcing parseFloat
						jQuery.css( elem, type, extra ) :

						// Set width or height on the element
						jQuery.style( elem, type, value, extra );
				}, type, chainable ? margin : undefined, chainable, null );
			};
		});
	});


	// The number of elements contained in the matched element set
	jQuery.fn.size = function() {
		return this.length;
	};

	jQuery.fn.andSelf = jQuery.fn.addBack;




	// Register as a named AMD module, since jQuery can be concatenated with other
	// files that may use define, but not via a proper concatenation script that
	// understands anonymous AMD modules. A named AMD is safest and most robust
	// way to register. Lowercase jquery is used because AMD module names are
	// derived from file names, and jQuery is normally delivered in a lowercase
	// file name. Do this after creating the global so that if an AMD module wants
	// to call noConflict to hide this version of jQuery, it will work.
	if ( true ) {
		!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
			return jQuery;
		}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
	}




	var
		// Map over jQuery in case of overwrite
		_jQuery = window.jQuery,

		// Map over the $ in case of overwrite
		_$ = window.$;

	jQuery.noConflict = function( deep ) {
		if ( window.$ === jQuery ) {
			window.$ = _$;
		}

		if ( deep && window.jQuery === jQuery ) {
			window.jQuery = _jQuery;
		}

		return jQuery;
	};

	// Expose jQuery and $ identifiers, even in
	// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
	// and CommonJS for browser emulators (#13566)
	if ( typeof noGlobal === strundefined ) {
		window.jQuery = window.$ = jQuery;
	}




	return jQuery;

	}));

/***/ }),

/***/ "views/shared/aboutmodal/Contents":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("uri/route"),
	    __webpack_require__("views/Base"),
	    __webpack_require__(294),
	    __webpack_require__("views/shared/aboutmodal/Contents.pcssm"),
	    __webpack_require__("shim/splunk.time"),
	    __webpack_require__("shim/splunk.util"),
	    __webpack_require__("util/htmlcleaner")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    module,
	    route,
	    BaseView,
	    Template,
	    css,
	    Time,
	    util,
	    HtmlCleaner
	){
	    return BaseView.extend({
	        moduleId: module.id,
	        template: Template,
	        css: css,
	        initialize: function() {
	            BaseView.prototype.initialize.apply(this, arguments);
	            var currentAppName = this.model.application.get('app'),
	                currentApp,
	                date = new Time.DateTime();

	            this.year = date.getYear();
	            if (currentAppName === 'launcher') {
	                this.currentAppLabel = _('Home').t();
	            }
	            else {
	                if (this.collection) {
	                    currentApp = this.collection.find(function(app) {
	                        return app.entry.get('name') === currentAppName;
	                    });
	                }
	                this.currentAppLabel = currentApp ? currentApp.entry.content.get('label') : _('N/A').t();
	                this.currentAppAttributionLink = this.computeAttributionLink(currentApp);
	            }
	            this.model.serverInfo.on('change reset', function() {
	                this.render();
	            }, this);
	        },
	        getListOfProducts: function() {
	            var addOns = this.model.serverInfo.getAddOns(),
	                result;
	            if (addOns && !$.isEmptyObject(addOns)) {
	                result = _(addOns).keys().join(', ');
	            }
	            return result;
	        },
	        computeAttributionLink: function(currentApp) {
	            var attributionLink = currentApp && currentApp.entry.content.get('attribution_link');
	            if (!attributionLink) {
	                return null;
	            }
	            // If the attribution link contains any XSS vulnerable URL schemes, do not display the link.
	            if (HtmlCleaner.isBadUrl(attributionLink)) {
	                return null;
	            }
	            // If the attribution link does not start with http:// or https://, treat it as a docs location string.
	            if (!/http[s]?:\/\//.test(attributionLink)) {
	                var app = this.model.application.get("app");
	                return route.docHelpInAppContext(
	                    this.model.application.get('root'),
	                    this.model.application.get('locale'),
	                    attributionLink,
	                    app,
	                    this.model.appLocal.entry.content.get('version'),
	                    app === 'system' ? true : this.model.appLocal.isCoreApp(),
	                    this.model.appLocal.entry.content.get('docs_section_override')
	                );
	            }
	            return attributionLink;
	        },
	        render: function() {
	            //this.$el.html(Modal.TEMPLATE);
	            //this.$(Modal.HEADER_TITLE_SELECTOR).html('splunk<span class="prompt">&gt;&#x00AE;'+this.model.serverInfo.getProductLogo()+'</span>');
	            var isLite = this.model.serverInfo.isLite(),
	                isLiteFree = this.model.serverInfo.isLiteFree(),
	                versionNumberText = this.model.serverInfo.getVersion() || _('N/A').t(),
	                liteVersionText = (isLiteFree) ? _('Splunk Light Free Version ').t() + versionNumberText : _('Splunk Light Version ').t() + versionNumberText,
	                versionText = (isLite) ? liteVersionText : versionNumberText,
	                template = this.compiledTemplate({
	                    serverName: this.model.serverInfo.getServerName() || _('N/A').t(),
	                    version: versionText,
	                    isEnterprise: this.model.serverInfo.isEnterprise(),
	                    build: this.model.serverInfo.getBuild() || _('N/A').t(),
	                    appVersion: this.model.appLocal.entry.content.get('version') || null,
	                    appBuild: this.model.appLocal.entry.content.get('build') || null,
	                    appAttributionLink: this.currentAppAttributionLink,
	                    listOfProducts: this.getListOfProducts(),
	                    currentApp: this.currentAppLabel,
	                    isLite: isLite,
	                    isCloud: this.model.serverInfo.isCloud(),
	                    thirdPartyCredits: route.docHelp(this.model.application.get('root'), this.model.application.get('locale'), 'ReleaseNotes.Credits'),
	                    copyrightYear: this.year,
	                    sprintf: util.sprintf,
	                    css: css
	                });
	            this.$el.html(template);

	            return this;
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "util/env":
/***/ (function(module, exports, __webpack_require__) {

	/* WEBPACK VAR INJECTION */(function(process) {'use strict';
	__webpack_require__(11);


	Object.defineProperty(exports, "__esModule", {
	  value: true
	});
	/**
	 * Use this flag to conditionally run code only for debugging, such as setting global variables
	 * for access via the browser console.
	 * @type {boolean}
	 */
	var DEBUG = exports.DEBUG = process.env.NODE_ENV !== 'production';

	/**
	 * Use this flag to conditionally run code only in production, such as disabling load timeouts.
	 * @type {boolean}
	 */
	var PRODUCTION = exports.PRODUCTION = process.env.NODE_ENV === 'production';
	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(10)))

/***/ }),

/***/ "views/shared/aboutmodal/Contents.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(295);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Contents.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Contents.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "util/general_utils":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/splunk.util"),
	        __webpack_require__("util/math_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, SplunkUtils, mathUtils) {
	        //returns an array of key:value pairs from the union of the values found in the
	        //arrays with the key being the passed key
	        var unionWithKey = function(arrayOne, arrayTwo, key) {
	            var union = _.union(arrayOne, arrayTwo);
	            return _.map(union, function(field) {
	                var ret_hash = {};
	                ret_hash[key] = field;
	                return ret_hash;
	            });
	        };

	        //returns an array of key:value pairs from the difference of the values found in the
	        //arrays with the key being the passed key

	        var differenceWithKey = function(arrayOne, arrayTwo, key) {
	            var difference = _.difference(arrayOne, arrayTwo);
	            return _.map(difference, function(field) {
	                var ret_hash = {};
	                ret_hash[key] = field;
	                return ret_hash;
	            });
	        };

	        /**
	         * Filters the given object, omitting any key-value pairs where the key doesn't match at least one of the given
	         * regular expressions
	         *
	         * @param obj {Object} the object to filter
	         * @param regexes {Array<String or RegExp> or String or RegExp} a list of strings or regular expressions, strings will be converted
	         *                                                              to regular expressions internally
	         * @param options {Object} {
	         *     strip {String or RegExp} optional, a pattern to strip from each key before comparing
	         *     allowEmpty {Boolean} defaults to false, whether keys with empty values should be included in the return object
	         *     allowObject {Boolean} defaults to false, whether keys with Object values should be included in the return object
	         * }
	         */

	        var filterObjectByRegexes = function(obj, regexes, options) {
	            options = options || {};
	            if(!_(regexes).isArray()) {
	                regexes = [regexes];
	            }
	            regexes = _.map(regexes, function(regex) {
	                return (regex instanceof RegExp ? regex: new RegExp(regex));
	            });

	            var attrs = {}, strippedKey,
	                strip = _.isString(options.strip) ? options.strip : '',
	                allowEmpty = !!options.allowEmpty,
	                allowObject = !!options.allowObject;

	            // match for the wildcards on each key
	            _.each(obj, function(value, key) {
	                strippedKey = key.replace(strip, '');
	                if (attrs[strippedKey]) {
	                    return;
	                }
	                _.each(regexes, function(regex) {
	                    if (regex.test(key)) {
	                        if (!_.isUndefined(value)){
	                            if ((_.isString(value) && value=='' && !allowEmpty) || (_.isObject(value) && !allowObject)) {
	                                return;
	                            }
	                            attrs[strippedKey] = value;
	                        }
	                    }
	                }, this);
	            }, this);
	            return attrs;
	        };

	        var deleteFromObjectByRegexes = function(obj, regexes) {
	            if(!_(regexes).isArray()) {
	                regexes = [regexes];
	            }
	            regexes = _.map(regexes, function(regex) {
	                return (regex instanceof RegExp ? regex: new RegExp(regex));
	            });

	            var attrs = $.extend(true, {}, obj);

	            // match for the wildcards on each key
	            _.each(attrs, function(value, key) {
	                _.each(regexes, function(regex) {
	                    if (regex.test(key)) {
	                        delete attrs[key];
	                    }
	                }, this);
	            }, this);

	            return attrs;
	        };

	        /**
	         * Recursively removes all attributes with an undefined value from an object
	         *
	         * @param obj
	         * @returns obj
	         */
	        var stripUndefinedAttrs = function(obj) {
	            _.each(obj, function(value, key) {
	                if (value === undefined) {
	                    delete obj[key];
	                } else if (_.isObject(value)) {
	                    stripUndefinedAttrs(value);
	                }
	            });
	            return obj;
	        };

	        // Returns input as an array
	        var asArray = function(obj) {
	            if (obj == null) {
	                return [];
	            }
	            return _.isArray(obj) ? obj : [obj];
	        };

	        /**
	         * Converts a string with wildcard asterisks to the appropriate
	         * regular expression object.
	         *
	         * Example Usage:
	         *
	         * var foo = globber('te*st*');
	         * // typeof foo is: RegExp
	         * // foo's value is (without spaces): / ^ t e . * s t . * /
	         *
	         */
	        var globber = function(str) {
	            var rex,
	                chars = str.split('');

	            if (_.first(chars) !== '*') {
	                chars.unshift('^');
	            }

	            if (_.last(chars) !== '*') {
	                chars.push('$');
	            }
	            str = chars.join('').replace(/\*/g, '.*');

	            try {
	                rex = new RegExp(str);
	            } catch(e) {}

	            return rex;
	        };

	        //takes two values and compares them returning the comparison inverted or not depending on
	        //the sort direction boolean isAsc
	        var compareWithDirection = function(value1, value2, isAsc) {
	            var returnVal = 0;
	            if (value1 == value2) {
	                return returnVal;
	            }
	            if (value1 < value2){
	                returnVal = -1;
	            } else {
	                returnVal = 1;
	            }
	            return (isAsc) ? returnVal : -returnVal;
	        };

	        /**
	         * @author sfishel
	         *
	         * Checks if a list of values can be considered "numeric".
	         *
	         * Returns true if half or more of the non-null values can be parsed to a float.
	         *
	         * @param {Array} values
	         * @return {Boolean}
	         */

	        var valuesAreNumeric = function(values) {
	            var numericCount = 0,
	                nonNullCount = 0;

	            _(values).each(function(value) {
	                // in the case of multivalue fields, use the first value
	                if(_(value).isArray()) {
	                    value = value.length > 0 ? value[0] : null;
	                }
	                if(_(value).isNull()) {
	                    return;
	                }
	                nonNullCount++;

	                var isNumber = !!mathUtils.strictParseFloat(value) || mathUtils.isCommaSeparatedNumber(value);
	                if(isNumber) {
	                    numericCount++;
	                }
	            });
	            if(nonNullCount === 0) {
	                return false;
	            }
	            return (numericCount >= (nonNullCount / 2));
	        };

	        var valuesAreNumericAndFinite = function(values) {
	            var areNumericAndFinite = true;
	            _(values).each(function(value) {
	                if (isNaN(value) || !isFinite(value)) {
	                    areNumericAndFinite = false;
	                }
	            });
	            return areNumericAndFinite;
	        };

	        /**
	         * @author sfishel
	         *
	         * This is an approximation method for obtaining a pair of lower and upper percentile values from a list.
	         *
	         * Ported from //python-site/splunk/appserver/mrsparkle/lib/util.py
	         *
	         * @param {Array} orderedList, must be sorted before calling this method
	         * @param {Number} lowerPercentile
	         * @param {Number} upperPercentile
	         *
	         * @return {Object} an object with properties 'upper' and 'lower' corresponding to the upper and lower values.
	         */

	        var getPercentiles = function(orderedList, lowerPercentile, upperPercentile) {

	            if(orderedList.length === 0) {
	                return { upper: null, lower: null };
	            }

	            var f = function(p, ln) {
	                var n = p * (ln - 1) + 1,
	                    k = Math.floor(n),
	                    d = n - k;

	                return [n, k, d];
	            };

	            var v = function(percentile, oList) {
	                var fArray = f(percentile, oList.length),
	                    n = fArray[0],
	                    k = fArray[1],
	                    d = fArray[2];

	                if(k === 0 || oList.length === 1) {
	                    return oList[0];
	                }
	                else if(k === oList.length - 1) {
	                    return oList[oList.length - 1];
	                }
	                else {
	                    return (oList[k] + d * (oList[k + 1] - oList[k]));
	                }
	            };

	            return ({
	                lower: v(lowerPercentile, orderedList),
	                upper: v(upperPercentile, orderedList)
	            });

	        };

	        //take an object and replace a key with another key
	        var transferKey = function(obj, oldKey, newKey) {
	            if (!_.isUndefined(obj[oldKey])){
	                obj[newKey] = obj[oldKey];
	                delete obj[oldKey];
	            }
	        };

	        /**
	         *  @author jszeto
	         *
	         *  Returns a copy of the object where the keys have become the values and the values the keys.
	         *  For this to work, all of your object's values should be unique and string serializable.
	         *
	         * @param obj
	         * @return {Object}
	         */
	        var invert = function (obj) {

	            // TODO [JCS] Create a version that resolves key conflicts by creating an array of values.
	            // TODO [JCS] Underscore provides an invert function, but the values must be unique.
	            var new_obj = {};

	            for (var prop in obj) {
	                if(obj.hasOwnProperty(prop)) {
	                    new_obj[obj[prop]] = prop;
	                }
	            }

	            return new_obj;
	        };

	        /**
	         * Converts 13824237 to 13,824,237
	         * @param num
	         * @return {String}
	         */
	        var convertNumToString = function(num) {
	            // adds a comma after each 3 digits
	            if (!num) {
	                return null;
	            }
	            return (num.toString()).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
	        };

	        // translates a JSON-style serialized list in to a primitive array
	        // cannot handle nested arrays
	        var stringToArray = function (str) {
	            if (!str) {
	                return false;
	            }
	            str = $.trim(str);
	            var strLen = str.length;

	            if (str.charAt(0) !== '[' || str.charAt(strLen - 1) !== ']') {
	                return false;
	            }
	            if (/^\[\s*\]$/.test(str)) {
	                return [];
	            }
	            str = str.substr(1, strLen - 2);
	            return SplunkUtils.stringToFieldList(str);
	        };

	        /**
	         * Not an exhaustive check that the search string can be parsed as a pivot search, but some simple checks
	         * that the search starts with "| pivot" and doesn't pipe to any other search commands.
	         *
	         * @param searchString
	         */
	        var isValidPivotSearch = function(searchString) {
	            if(!/^\s*\|\s*pivot\s+/.test(searchString)) {
	                return false;
	            }
	            // now we need to check for a "|" to another search command,
	            // but need to make sure we don't match a "|" inside a string
	            // start by removing any escaped quotes
	            searchString = searchString.replace(/(\\"|\\')/g, '');
	            // then it is safe to remove any quoted contents
	            searchString = searchString.replace(/"[^"]*"/g, '').replace(/'[^']*'/g, '');
	            // now if there is more than one "|" left it is a search language pipe
	            return searchString.split('|').length === 2;
	        };

	        /**
	         * Returns the text currently selected with mouse or null
	         */
	        var getMouseSelection = function() {
	            if (window.getSelection) {
	                return window.getSelection().toString();
	            } else if (document.selection) {
	                return document.selection.createRange().text;
	            }
	            return null;
	        };

	        var isTrueEquivalent = function(value) {
	            value = typeof(value) === 'string' ? value.toLowerCase() : value;
	            return value === true || value === 1 ||
	                value === 'true' || value === '1' || value === 'on' || value === 'yes';
	        };

	        var isFalseEquivalent = function(value) {
	            value = typeof(value) === 'string' ? value.toLowerCase() : value;
	            return value === false || value === 0 ||
	                value === 'false' || value === '0' || value === 'off' || value === 'no';
	        };

	        /**
	         * Checks if the given value can be normalized to a boolean value
	         * @see normalizeBoolean
	         * @param value {*} the value which
	         * @returns {Boolean} true if the value can be normalized to a boolean value, otherwise false
	         */
	        var isBooleanEquivalent = function(value) {
	            return isTrueEquivalent(value) || isFalseEquivalent(value);
	        };

	        /**
	         * Strict normalization of a string to boolean which always returns a boolean value.
	         * The following values are treated as true (see isTrue helper)
	         *      - the strings "true", "on", "yes" or "1" (case-insensitive)
	         *      - the integer 1
	         *      - the boolean true
	         * The following values are normalized to false (see isFalse helper)
	         *      - the strings "false", "off", "no" or "0" (case-insensitive)
	         *      - the integer 0
	         *      - the boolean false
	         * @param value {Boolean|Number|String} - a value to be normalized as a boolean
	         * @param options {Object} - {
	         *      default {Boolean|Number|String} - fallback value in case the string is not a valid boolean expression
	         *  }
	         * @returns {Boolean} the normalization result in case of a valid boolean expression, the default value if
	         *                    specified and a valid boolean, otherwise the default value is normalized or if not
	         *                    specified false is returned by default
	         */
	        var normalizeBoolean = function(value, options) {
	            options || (options = {});
	            if (isTrueEquivalent(value)) {
	                return true;
	            }
	            if (isFalseEquivalent(value)) {
	                return false;
	            }
	            return options.hasOwnProperty('default') ?
	                (typeof(options['default']) === 'boolean' ? options['default'] : normalizeBoolean(options['default']))
	                : false;
	        };


	        /**
	         * This method is some nasty backwards compatibility for a GET param that used to be a boolean string, but has been migrated to int
	         */
	        var parseBooleanOrInt = function(val) {
	            if (mathUtils.isInteger(val)) {
	                return parseInt(val, 10);
	            }
	            return normalizeBoolean(val);
	        };

	        /**
	        * Equality comparison that will deal with objects and Booleans.
	        * If both params are Boolean or Boolean-equivalent
	        * (see the the doc comment for normalizeBoolean)
	        * convert them to Boolean and use === to compare.
	        * Otherwise use Underscore isEqual to compare them.
	        *
	        * @param value1 {Boolean|Number|String|Object} - value to be compared.
	        * @param value2 {Boolean|Number|String|Object} - value to be compared.
	        * @returns {Boolean} - Returns true if the values are the same, false if they are different.
	        */
	        var checkEquality = function(value1, value2) {
	            if (isBooleanEquivalent(value1) && isBooleanEquivalent(value2)) {
	                return (normalizeBoolean(value1) === normalizeBoolean(value2));
	            } else {
	                return _.isEqual(value1, value2);
	            }
	        };

	        /**
	         * Check if an array is a subset of another array, where the
	         * needle array may contain wildcard characaters. An empty array
	         * is always a subset of another array.
	         *
	         * NOTE: String comparison is always used, so [1] will be considered
	         * a subset of ['1'].
	         *
	         * Example Usage:
	         *
	         * var isSubset = isFuzzySubset(['one', 't*e'], ['four', 'three', 'one', 'two']);
	         * // isSubset's value is: true
	         *
	         */
	        var isFuzzySubset = function(subset, superset) {
	            superset.length || (superset = ['*']);  // Force superset to have at least one element
	            var intersection = _(subset).filter(function(subsetElement) {
	                var subsetElementPattern = globber(subsetElement.toString());
	                return _(superset).find(function(supersetElement) {
	                    return supersetElement.toString().match(subsetElementPattern) !== null;
	                });
	            });
	            return intersection.length == subset.length;
	        };


	        /**
	         * Genereate regular expression from filter string
	         *
	         * Example Usage:
	         *
	         * var foo = generateRegex("a bc d")
	         * // typeof foo is: RegExp
	         * // foo's value is (without spaces): /^(?=.*a)(?=.*bc)(?=.*d)/
	         *
	         */
	        var VALUES_REGEX = /(\'.*?\')|(\".*?\")|([^\s]+)/g,
	            QUOTES_REGEX = /^(\".*\")$|^(\'.*\')$/;
	        var generateFilterRegex = function(value) {
	            // Escape value to be treated as literal string
	            value = SplunkUtils.escapeRegex(value);

	            var values = (value) ? value.match(VALUES_REGEX): [];
	            if (values.length) {
	                var parsed = _.chain(values)
	                    .map(function(value) {
	                        if (value.match(QUOTES_REGEX)) {
	                            var len = value.length;
	                            value = value.substring(1, len-1);
	                        }
	                        return ['(?=.*', value,')'].join('');
	                    })
	                    .join('')
	                    .value();
	                return new RegExp('^' + parsed, 'im'); // Added ignore case and multiline match flags
	            } else {
	                return new RegExp('.*');
	            }
	        };

	        /**
	         * Create a random GUID (guid) / UUID (uuid) for an use as a unique id.
	         *
	         * The unique id is of the form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,
	         * where each x is replaced with a hexadecimal digit from 0 to f, and y is replaced with a
	         * hexadecimal digit from 8 to b.
	         * 
	         * This was taken from the answer provided by "Briguy37" in the StackOverflow: 
	         * http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript
	         * 
	         */
	        
	        var generateUUID = function() {
	            var d = new Date().getTime(),
	                uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
	                    var r = (d + Math.random()*16)%16 | 0;
	                    d = Math.floor(d/16);
	                    return (c=='x' ? r : (r&0x3|0x8)).toString(16);
	                });
	            return uuid;
	        };

	        return {
	            VALUES_REGEX: VALUES_REGEX,
	            QUOTES_REGEX: QUOTES_REGEX,
	            compareWithDirection: compareWithDirection,
	            unionWithKey: unionWithKey,
	            differenceWithKey: differenceWithKey,
	            filterObjectByRegexes: filterObjectByRegexes,
	            deleteFromObjectByRegexes: deleteFromObjectByRegexes,
	            stripUndefinedAttrs: stripUndefinedAttrs,
	            globber: globber,
	            valuesAreNumeric: valuesAreNumeric,
	            valuesAreNumericAndFinite: valuesAreNumericAndFinite,
	            getPercentiles: getPercentiles,
	            transferKey: transferKey,
	            convertNumToString: convertNumToString,
	            stringToArray: stringToArray,
	            invert: invert,
	            isValidPivotSearch: isValidPivotSearch,
	            getMouseSelection: getMouseSelection,
	            normalizeBoolean: normalizeBoolean,
	            isBooleanEquivalent: isBooleanEquivalent,
	            checkEquality: checkEquality,
	            isFuzzySubset: isFuzzySubset,
	            asArray: asArray,
	            generateFilterRegex: generateFilterRegex,
	            parseBooleanOrInt: parseBooleanOrInt,
	            generateUUID: generateUUID
	        };
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "shim/splunk.time":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("shim/jg_global"), __webpack_require__("shim/jgatt"), __webpack_require__("splunk_time")], __WEBPACK_AMD_DEFINE_RESULT__ = function () {
	    return window.splunk.time;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "shim/jg_global":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(296)], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
	    return {
	        jg_namespace: window.jg_namespace,
	        jg_extend: window.jg_extend,
	        jg_static: window.jg_static,
	        jg_mixin: window.jg_mixin,
	        jg_has_mixin: window.jg_has_mixin
	    };
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "util/math_utils":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	       __webpack_require__("require/underscore")
	   ], __WEBPACK_AMD_DEFINE_RESULT__ = function(_) {

	    var DECIMAL_OR_SCIENTIFIC_REGEX = /(^[-+]?[0-9]*[.]?[0-9]*$)|(^[-+]?[0-9][.]?[0-9]*e[-+]?[0-9][0-9]*$)/i;
	    var COMMA_SEPARATED_NUMBER_REGEX = /(^[-+]?([0]|([1-9][0-9]{0,2})|(([1-9][0-9]{0,2}[,])([0-9]{3}[,])*[0-9]{3}))(([.][0-9]+)?)$)/;
	    var MIN_SAFE_INTEGER = -9007199254740991; // Hard code Number.MIN_SAFE_INTEGER since it is not supported in IE, opera and safari
	    var MAX_SAFE_INTEGER =  9007199254740991; // Hard code Number.MAX_SAFE_INTEGER since it is not supported in IE, opera and safari

	    /**
	     * @author sfishel
	     *
	     * A strict version of parseFloat that requires the entire input string to be valid decimal or scientific format
	     *
	     * @param {String} str - string to be parsed into a number
	     * @return {Number or NaN}
	     */

	    var strictParseFloat = function(str) {
	        // if the number is not in decimal or scientific format, return NaN explicitly
	        // instead of letting JavaScript do its loose parsing
	        if(!DECIMAL_OR_SCIENTIFIC_REGEX.test(str)) {
	            return NaN;
	        }
	        return parseFloat(str);
	    };

	    /**
	    * @author rtran
	    *
	    * Checks if the value passed in is some comma separated number
	    * (e.g. "1,234", "300,000,000", and "12,345.67"). This function provides 
	    * a simple way to determine when a comma seperated value string should be 
	    * considered a number.
	    *
	    * @param {String} str - string to be checked
	    * @returns {Boolean} - return true if (str) is a valid number grouped by either commas or decimals, false otherwise
	    */
	    var isCommaSeparatedNumber = function(str) {
	        // if str is not a number grouped with either commas or decimals
	        if(!COMMA_SEPARATED_NUMBER_REGEX.test(str)) {
	            return false;
	        }
	        return true;
	    };

	    /**
	     * 
	     * Rounds a number to a specifice exp base 10
	     *
	     * @param {Number} value - number to round
	     * @param {Number} exp - exp of base 10 of the decimal palce to round to 
	                            eg: exp=-1 rounds to the tenths place
	                                exp=-2 rounds to the hundredth place
	                                exp=0 rounds to the ones place
	                                exp=1 rounds to the tens place
	     * @return {Number or NaN}
	     *
	     * reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
	     */
	    var roundToDecimal = function(value, exp) {
	        // If the exp is undefined or zero...
	        if (typeof exp === 'undefined' || +exp === 0) {
	            return Math.round(value);
	        }
	        value = +value;
	        exp = +exp;
	        // If the value is not a number or the exp is not an integer...
	        if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {
	            return NaN;
	        }
	        // Shift
	        value = value.toString().split('e');
	        value = Math.round(+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));
	        // Shift back
	        value = value.toString().split('e');
	        return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));
	    };

	    /**
	     *
	     * Returns if an input is an integer
	     *
	     * @param {String} value
	     * @return {Boolean}
	     */
	     var isInteger = function(value) {
	        var parsedValue = strictParseFloat(value);
	        return !isNaN(parsedValue) && parsedValue % 1 === 0;
	     };
	     
	     var nearestMatchAndIndexInArray = function(valueToMatch, values) {         
	         var closestValue, closestIndex;
	         _.each(values, function(value, index){
	             if (closestValue == null || (Math.abs(valueToMatch - value) < Math.abs(closestValue - valueToMatch))) {
	                 closestValue = value;
	                 closestIndex = index;
	             }
	         });
	         return {value: closestValue, index: closestIndex};
	     };

	     /*
	      * Returns the nearest whole power of ten to the given number, without exceeding that number
	      * e.g.
	      *
	      * 10 -> 10
	      * 11 -> 10
	      * 99 -> 10
	      * 100 -> 100
	      * ...
	      */
	     var nearestPowerOfTen = function(number) {
	         return Math.pow(10, Math.floor(Math.log(number) / Math.LN10));
	     };

	     var isLessThanMinSafeInt = function(number) {
	        if(typeof number != 'number') return false;
	        if(number <= MIN_SAFE_INTEGER) {
	            return true;
	        }
	        return false;
	     };

	     var isGreaterThanMaxSafeInt = function(number) {
	        if(typeof number != 'number') return false;
	        if(number >= MAX_SAFE_INTEGER) {
	            return true;
	        }
	        return false;
	     };

	     var stripFloatingPointErrors = function(number) {
	         return (parseFloat(number.toPrecision(12)));
	     };

	     var convertToTwoDecimalPercentage = function(value, totalCount) {
	         // Convert to percentage and always round to 2 d.p.
	         return (parseFloat(value) / totalCount * 100).toFixed(2);
	     };

	    return ({
	        strictParseFloat: strictParseFloat,
	        isCommaSeparatedNumber: isCommaSeparatedNumber,
	        roundToDecimal: roundToDecimal,
	        isInteger: isInteger,
	        nearestMatchAndIndexInArray: nearestMatchAndIndexInArray,
	        nearestPowerOfTen: nearestPowerOfTen,
	        isLessThanMinSafeInt: isLessThanMinSafeInt,
	        isGreaterThanMaxSafeInt: isGreaterThanMaxSafeInt,
	        stripFloatingPointErrors: stripFloatingPointErrors,
	        convertToTwoDecimalPercentage: convertToTwoDecimalPercentage
	    });

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "shim/jgatt":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("shim/jg_global"), __webpack_require__("contrib/jg_library")], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
	    return window.jgatt;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "contrib/jg_library":
/***/ (function(module, exports) {

	/**
	 * Copyright (c) 2012 Jason Gatt
	 * 
	 * Dual licensed under the MIT and GPL licenses:
	 * http://www.opensource.org/licenses/mit-license.php
	 * http://www.gnu.org/licenses/gpl.html
	 */

	jg_import.define("jgatt.events.EventData", function()
	{
	jg_namespace("jgatt.events", function()
	{

		this.EventData = jg_extend(Object, function(EventData, base)
		{

			// Public Properties

			this.event = null;
			this.target = null;
			this.currentEvent = null;
			this.currentTarget = null;

			// Private Properties

			this._isPropagationStopped = false;
			this._isImmediatePropagationStopped = false;
			this._isDefaultPrevented = false;

			// Constructor

			this.constructor = function()
			{
			};

			// Public Methods

			this.stopPropagation = function()
			{
				this._isPropagationStopped = true;
			};

			this.stopImmediatePropagation = function()
			{
				this._isPropagationStopped = true;
				this._isImmediatePropagationStopped = true;
			};

			this.preventDefault = function()
			{
				this._isDefaultPrevented = true;
			};

			this.isPropagationStopped = function()
			{
				return this._isPropagationStopped;
			};

			this.isImmediatePropagationStopped = function()
			{
				return this._isImmediatePropagationStopped;
			};

			this.isDefaultPrevented = function()
			{
				return this._isDefaultPrevented;
			};

		});

	});
	});

	jg_import.define("jgatt.utils.TypeUtils", function()
	{
	jg_namespace("jgatt.utils", function()
	{

		this.TypeUtils = jg_static(function(TypeUtils)
		{

			// Public Static Methods

			TypeUtils.isTypeOf = function(value, type)
			{
				if (value == null)
					return false;

				if (type === Object)
					return true;

				switch (typeof value)
				{
					case "number":
						return (type === Number);
					case "boolean":
						return (type === Boolean);
					case "string":
						return (type === String);
					default:
						return (value instanceof type);
				}
			};

			TypeUtils.isSubclassOf = function(c, type)
			{
				return ((c != null) && (c.prototype != null) && (c.prototype instanceof type));
			};

		});

	});
	});

	jg_import.define("jgatt.properties.Property", function()
	{
	jg_namespace("jgatt.properties", function()
	{

		var TypeUtils = jg_import("jgatt.utils.TypeUtils");

		this.Property = jg_extend(Object, function(Property, base)
		{

			// Private Properties

			this._name = null;
			this._type = null;
			this._defaultValue = null;
			this._readOnly = false;
			this._getter = null;
			this._setter = null;
			this._readFilter = null;
			this._writeFilter = null;
			this._onRead = null;
			this._onWrite = null;

			// Constructor

			this.constructor = function(name, type, defaultValue, readOnly)
			{
				if (name == null)
					throw new Error("Parameter name must be non-null.");
				if (typeof name !== "string")
					throw new Error("Parameter name must be a string.");
				if (type == null)
					throw new Error("Parameter type must be non-null.");
				if (typeof type !== "function")
					throw new Error("Parameter type must be a class.");

				this._name = name;
				this._type = type;

				defaultValue = this.assertType(defaultValue, "Parameter defaultValue is incompatible with property type.");

				if ((readOnly != null) && (typeof readOnly !== "boolean"))
					throw new Error("Parameter readOnly must be a boolean.");

				this._defaultValue = defaultValue;
				this._readOnly = (readOnly === true);
			};

			// Public Getters/Setters

			this.name = function()
			{
				return this._name;
			};

			this.type = function()
			{
				return this._type;
			};

			this.defaultValue = function()
			{
				return this._defaultValue;
			};

			this.readOnly = function()
			{
				return this._readOnly;
			};

			this.getter = function(value)
			{
				if (arguments.length == 0)
					return this._getter;

				if ((value != null) && (typeof value !== "function"))
					throw new Error("Parameter getter must be a function.");

				this._getter = value ? value : null;

				return this;
			};

			this.setter = function(value)
			{
				if (arguments.length == 0)
					return this._setter;

				if ((value != null) && (typeof value !== "function"))
					throw new Error("Parameter setter must be a function.");

				this._setter = value ? value : null;

				return this;
			};

			this.readFilter = function(value)
			{
				if (arguments.length == 0)
					return this._readFilter;

				if ((value != null) && (typeof value !== "function"))
					throw new Error("Parameter readFilter must be a function.");

				this._readFilter = value ? value : null;

				return this;
			};

			this.writeFilter = function(value)
			{
				if (arguments.length == 0)
					return this._writeFilter;

				if ((value != null) && (typeof value !== "function"))
					throw new Error("Parameter writeFilter must be a function.");

				this._writeFilter = value ? value : null;

				return this;
			};

			this.onRead = function(value)
			{
				if (arguments.length == 0)
					return this._onRead;

				if ((value != null) && (typeof value !== "function"))
					throw new Error("Parameter onRead must be a function.");

				this._onRead = value ? value : null;

				return this;
			};

			this.onWrite = function(value)
			{
				if (arguments.length == 0)
					return this._onWrite;

				if ((value != null) && (typeof value !== "function"))
					throw new Error("Parameter onWrite must be a function.");

				this._onWrite = value ? value : null;

				return this;
			};

			// Public Methods

			this.get = function(target, propertyMap)
			{
				if (this._onRead)
					this._onRead.call(target);

				var value = this.getInternal(target, propertyMap);

				if (this._readFilter)
				{
					var value2 = this._readFilter.call(target, value);
					if (value2 !== value)
						value = this.assertType(value2, "Value returned from readFilter for property " + this._name + " is incompatible with property type.");
				}

				return value;
			};

			this.set = function(target, propertyMap, value)
			{
				if (this._readOnly)
					throw new Error("Property " + this._name + " is read-only.");

				value = this.assertType(value, "Value assigned to property " + this._name + " is incompatible with property type.");

				if (this._writeFilter)
				{
					var value2 = this._writeFilter.call(target, value);
					if (value2 !== value)
						value = this.assertType(value2, "Value returned from writeFilter for property " + this._name + " is incompatible with property type.");
				}

				if (!this.setInternal(target, propertyMap, value))
					return false;

				if (this._onWrite)
					this._onWrite.call(target);

				return true;
			};

			this.getInternal = function(target, propertyMap)
			{
				var propertyInfo = propertyMap.get(this);
				if (!propertyInfo)
					propertyInfo = propertyMap.set(this, this.createPropertyInfo(this, target));

				var value = propertyInfo.value;

				if (this._getter)
				{
					var value2 = this._getter.call(target);
					if (value2 !== value)
						value = propertyInfo.value = this.assertType(value2, "Value returned from getter for property " + this._name + " is incompatible with property type.");
				}

				return value;
			};

			this.setInternal = function(target, propertyMap, value)
			{
				value = this.assertType(value, "Value assigned to property " + this._name + " is incompatible with property type.");

				var propertyInfo = propertyMap.get(this);
				if (!propertyInfo)
					propertyInfo = propertyMap.set(this, this.createPropertyInfo(this, target));

				if (this._setter)
					this._setter.call(target, value);

				propertyInfo.value = value;

				return true;
			};

			// Protected Methods

			this.assertType = function(value, message)
			{
				var type = this._type;

				if ((value != null) && !TypeUtils.isTypeOf(value, type))
					throw new Error(message);

				if (value == null)
				{
					if (type === Number)
						value = 0;
					else if (type === Boolean)
						value = false;
					else
						value = null;
				}

				return value;
			};

			this.createPropertyInfo = function(property, target)
			{
				return new Property.PropertyInfo(property, target);
			};

		});

		this.Property.PropertyInfo = jg_extend(Object, function(PropertyInfo, base)
		{

			// Public Properties

			this.property = null;
			this.target = null;
			this.value = null;

			// Constructor

			this.constructor = function(property, target)
			{
				this.property = property;
				this.target = target;
				this.value = property._defaultValue;
			};

		});

	});
	});

	jg_import.define("jgatt.utils.Dictionary", function()
	{
	jg_namespace("jgatt.utils", function()
	{

		this.Dictionary = jg_extend(Object, function(Dictionary, base)
		{

			// Private Static Constants

			var _HASH_KEY = "__jgatt_utils_Dictionary_hash";

			// Private Static Properties

			var _hashCount = 0;

			// Private Static Methods

			var _hash = function(value)
			{
				if (value === null)
					return "null";
				switch (typeof value)
				{
					case "object":
					case "function":
						if (value.hasOwnProperty(_HASH_KEY))
							return value[_HASH_KEY];
						var hash = value[_HASH_KEY] = "#" + (++_hashCount);
						return hash;
					case "string":
						return "\"" + value + "\"";
					default:
						return value + "";
				}
			};

			// Private Properties

			this._kvs = null;
			this._size = 0;

			// Constructor

			this.constructor = function()
			{
				this._kvs = {};
			};

			// Public Methods

			this.size = function()
			{
				return this._size;
			};

			this.get = function(key)
			{
				var hash = _hash(key);
				if (this._kvs.hasOwnProperty(hash))
					return this._kvs[hash].v;
				return undefined;
			};

			this.set = function(key, value)
			{
				var hash = _hash(key);
				if (this._kvs.hasOwnProperty(hash))
				{
					this._kvs[hash].v = value;
					return value;
				}
				this._kvs[hash] = { k: key, v: value };
				this._size++;
				return value;
			};

			this.del = function(key)
			{
				var hash = _hash(key);
				if (this._kvs.hasOwnProperty(hash))
				{
					var value = this._kvs[hash].v;
					delete this._kvs[hash];
					this._size--;
					return value;
				}
				return undefined;
			};

			this.has = function(key)
			{
				var hash = _hash(key);
				return this._kvs.hasOwnProperty(hash);
			};

			this.keys = function()
			{
				var keys = [];
				var kvs = this._kvs;
				for (var hash in kvs)
				{
					if (kvs.hasOwnProperty(hash))
						keys.push(kvs[hash].k);
				}
				return keys;
			};

			this.values = function()
			{
				var values = [];
				var kvs = this._kvs;
				for (var hash in kvs)
				{
					if (kvs.hasOwnProperty(hash))
						values.push(kvs[hash].v);
				}
				return values;
			};

		});

	});
	});

	jg_import.define("jgatt.properties.MPropertyTarget", function()
	{
	jg_namespace("jgatt.properties", function()
	{

		var Property = jg_import("jgatt.properties.Property");
		var Dictionary = jg_import("jgatt.utils.Dictionary");

		this.MPropertyTarget = jg_static(function(MPropertyTarget)
		{

			// Private Static Methods

			var _resolveProperty = function(target, property)
			{
				if (property == null)
					throw new Error("Parameter property must be non-null.");

				if (property instanceof Property)
					return property;

				if (typeof property !== "string")
					throw new Error("Parameter property must be a string or an instance of jgatt.properties.Property.");

				var targetProperty = target[property];
				if (!(targetProperty instanceof Property))
					throw new Error("Unknown property \"" + property + "\".");

				return targetProperty;
			};

			// Private Properties

			this._propertyMap = null;

			// Constructor

			this.constructor = function()
			{
				this._propertyMap = new Dictionary();
			};

			// Public Methods

			this.get = function(property)
			{
				property = _resolveProperty(this, property);
				return property.get(this, this._propertyMap);
			};

			this.set = function(property, value)
			{
				property = _resolveProperty(this, property);
				return property.set(this, this._propertyMap, value);
			};

			this.getInternal = function(property)
			{
				property = _resolveProperty(this, property);
				return property.getInternal(this, this._propertyMap);
			};

			this.setInternal = function(property, value)
			{
				property = _resolveProperty(this, property);
				return property.setInternal(this, this._propertyMap, value);
			};

		});

	});
	});

	jg_import.define("jgatt.utils.ErrorUtils", function()
	{
	jg_namespace("jgatt.utils", function()
	{

		this.ErrorUtils = jg_static(function(ErrorUtils)
		{

			// Public Static Methods

			ErrorUtils.asyncThrow = function(e)
			{
				setTimeout(function() { throw e; }, 1);
			};

		});

	});
	});

	jg_import.define("jgatt.events.Event", function()
	{
	jg_namespace("jgatt.events", function(ns)
	{

		var EventData = jg_import("jgatt.events.EventData");
		var MPropertyTarget = jg_import("jgatt.properties.MPropertyTarget");
		var Property = jg_import("jgatt.properties.Property");
		var Dictionary = jg_import("jgatt.utils.Dictionary");
		var ErrorUtils = jg_import("jgatt.utils.ErrorUtils");
		var TypeUtils = jg_import("jgatt.utils.TypeUtils");

		this.Event = jg_extend(Object, function(Event, base)
		{

			// Private Static Methods

			var _listenerInfoComparator = function(info1, info2)
			{
				if (info1.priority > info2.priority)
					return -1;
				if (info1.priority < info2.priority)
					return 1;
				if (info1.index < info2.index)
					return -1;
				if (info2.index > info2.index)
					return 1;
				return 0;
			};

			// Private Properties

			this._name = null;
			this._type = null;
			this._bubbles = false;
			this._cancelable = false;

			// Constructor

			this.constructor = function(name, type, bubbles, cancelable)
			{
				if (name == null)
					throw new Error("Parameter name must be non-null.");
				if (typeof name !== "string")
					throw new Error("Parameter name must be a string.");
				if (type == null)
					throw new Error("Parameter type must be non-null.");
				if (typeof type !== "function")
					throw new Error("Parameter type must be a class.");
				if ((type !== EventData) && !TypeUtils.isSubclassOf(type, EventData))
					throw new Error("Parameter type must be a subclass of jgatt.events.EventData.");
				if ((bubbles != null) && (typeof bubbles !== "boolean"))
					throw new Error("Parameter bubbles must be a boolean.");
				if ((cancelable != null) && (typeof cancelable !== "boolean"))
					throw new Error("Parameter cancelable must be a boolean.");

				this._name = name;
				this._type = type;
				this._bubbles = (bubbles === true);
				this._cancelable = (cancelable === true);
			};

			// Public Getters/Setters

			this.name = function()
			{
				return this._name;
			};

			this.type = function()
			{
				return this._type;
			};

			this.bubbles = function()
			{
				return this._bubbles;
			};

			this.cancelable = function()
			{
				return this._cancelable;
			};

			// Public Methods

			this.addEventListener = function(target, eventMap, listener, priority)
			{
				if (listener == null)
					throw new Error("Parameter listener must be non-null.");
				if (typeof listener !== "function")
					throw new Error("Parameter listener must be a function.");
				if ((priority != null) && (typeof priority !== "number"))
					throw new Error("Parameter priority must be a number.");

				if ((priority == null) || isNaN(priority))
					priority = 0;

				var eventInfo = eventMap.get(this);
				if (!eventInfo)
					eventInfo = eventMap.set(this, { map: new Dictionary(), list: null, index: 0 });

				var listenerMap = eventInfo.map;
				var listenerInfo = listenerMap.get(listener);
				if (!listenerInfo)
					listenerInfo = listenerMap.set(listener, { listener: listener });
				else if (listenerInfo.priority === priority)
					return;

				listenerInfo.priority = priority;
				listenerInfo.index = eventInfo.index;

				eventInfo.list = null;
				eventInfo.index++;
			};

			this.removeEventListener = function(target, eventMap, listener)
			{
				if (listener == null)
					throw new Error("Parameter listener must be non-null.");
				if (typeof listener !== "function")
					throw new Error("Parameter listener must be a function.");

				var eventInfo = eventMap.get(this);
				if (!eventInfo)
					return;

				var listenerMap = eventInfo.map;
				if (!listenerMap.has(listener))
					return;

				listenerMap.del(listener);

				eventInfo.list = null;
			};

			this.hasEventListener = function(target, eventMap)
			{
				var eventInfo = eventMap.get(this);
				if (!eventInfo)
					return false;

				return (eventInfo.map.size() > 0);
			};

			this.dispatchEvent = function(target, eventMap, eventData)
			{
				if (eventData == null)
					throw new Error("Parameter eventData must be non-null.");
				if (!(eventData instanceof this._type))
					throw new Error("Parameter eventData is incompatible with event type.");

				if (eventData.isPropagationStopped())
					return (!this._cancelable || !eventData.isDefaultPrevented());

				if (eventData.event == null)
					eventData.event = this;
				if (eventData.target == null)
					eventData.target = target;
				eventData.currentEvent = this;
				eventData.currentTarget = target;

				var eventInfo = eventMap.get(this);
				if (eventInfo)
				{
					var listenerList = eventInfo.list;
					if (!listenerList)
					{
						var listenerMap = eventInfo.map;
						if (listenerMap.size() > 0)
						{
							listenerList = eventInfo.list = listenerMap.values();
							listenerList.sort(_listenerInfoComparator);
						}
					}

					if (listenerList)
					{
						var listenerInfo;
						for (var i = 0, l = listenerList.length; i < l; i++)
						{
							listenerInfo = listenerList[i];
							try
							{
								eventData.currentEvent = this;
								eventData.currentTarget = target;
								listenerInfo.listener.call(target, eventData);
								if (eventData.isImmediatePropagationStopped())
									break;
							}
							catch (e)
							{
								ErrorUtils.asyncThrow(e);
							}
						}
					}
				}

				if (this._bubbles && !eventData.isPropagationStopped())
				{
					var parent = target.parent;
					if (parent != null)
					{
						if ((parent instanceof Property) && jg_has_mixin(target, MPropertyTarget))
							parent = target.get(parent);
					}
					else
					{
						parent = target.parentNode;
					}

					if ((parent != null) && ns.MEventTarget && jg_has_mixin(parent, ns.MEventTarget))
						parent.dispatchEvent(this, eventData);
				}

				return (!this._cancelable || !eventData.isDefaultPrevented());
			};

		});

	});
	});

	jg_import.define("jgatt.events.ChainedEvent", function()
	{
	jg_namespace("jgatt.events", function()
	{

		var Event = jg_import("jgatt.events.Event");
		var TypeUtils = jg_import("jgatt.utils.TypeUtils");

		this.ChainedEvent = jg_extend(Event, function(ChainedEvent, base)
		{

			// Private Properties

			this._parentEvent = null;

			// Constructor

			this.constructor = function(name, parentEvent, type, bubbles, cancelable)
			{
				if (parentEvent == null)
					throw new Error("Parameter parentEvent must be non-null.");
				if (!(parentEvent instanceof Event))
					throw new Error("Parameter parentEvent must be an instance of jgatt.events.Event.");

				var parentType = parentEvent._type;
				if (type == null)
					type = parentType;
				else if (typeof type !== "function")
					throw new Error("Parameter type must be a class.");
				else if ((type !== parentType) && !TypeUtils.isSubclassOf(type, parentType))
					throw new Error("Parameter type must be a subclass of parentEvent type.");

				base.constructor.call(this, name, type, bubbles, cancelable);

				this._parentEvent = parentEvent;
			};

			// Public Getters/Setters

			this.parentEvent = function()
			{
				return this._parentEvent;
			};

			// Public Methods

			this.dispatchEvent = function(target, eventMap, eventData)
			{
				base.dispatchEvent.call(this, target, eventMap, eventData);

				if (!eventData.isPropagationStopped())
					this._parentEvent.dispatchEvent(target, eventMap, eventData);

				return (!this._cancelable || !eventData.isDefaultPrevented());
			};

		});

	});
	});

	jg_import.define("jgatt.events.MEventTarget", function()
	{
	jg_namespace("jgatt.events", function()
	{

		var Event = jg_import("jgatt.events.Event");
		var Dictionary = jg_import("jgatt.utils.Dictionary");

		this.MEventTarget = jg_static(function(MEventTarget)
		{

			// Private Static Methods

			var _resolveEvent = function(target, event)
			{
				if (event == null)
					throw new Error("Parameter event must be non-null.");

				if (event instanceof Event)
					return event;

				if (typeof event !== "string")
					throw new Error("Parameter event must be a string or an instance of jgatt.events.Event.");

				var targetEvent = target._eventNameMap[event];
				if (!targetEvent)
				{
					var eventPath = event.split(".");
					targetEvent = target;
					for (var i = 0, l = eventPath.length; i < l; i++)
					{
						targetEvent = targetEvent[eventPath[i]];
						if (targetEvent == null)
							break;
					}
					if (!(targetEvent instanceof Event))
						throw new Error("Unknown event \"" + event + "\".");
					target._eventNameMap[event] = targetEvent;
				}

				return targetEvent;
			};

			// Private Properties

			this._eventMap = null;
			this._eventNameMap = null;

			// Constructor

			this.constructor = function()
			{
				this._eventMap = new Dictionary();
				this._eventNameMap = {};
			};

			// Public Methods

			this.addEventListener = function(event, listener, priority)
			{
				event = _resolveEvent(this, event);
				event.addEventListener(this, this._eventMap, listener, priority);
			};

			this.removeEventListener = function(event, listener)
			{
				event = _resolveEvent(this, event);
				event.removeEventListener(this, this._eventMap, listener);
			};

			this.hasEventListener = function(event)
			{
				event = _resolveEvent(this, event);
				return event.hasEventListener(this, this._eventMap);
			};

			this.dispatchEvent = function(event, eventData)
			{
				event = _resolveEvent(this, event);
				return event.dispatchEvent(this, this._eventMap, eventData);
			};

		});

	});
	});

	jg_import.define("jgatt.events.MObservable", function()
	{
	jg_namespace("jgatt.events", function()
	{

		var Event = jg_import("jgatt.events.Event");
		var EventData = jg_import("jgatt.events.EventData");
		var MEventTarget = jg_import("jgatt.events.MEventTarget");

		this.MObservable = jg_static(function(MObservable)
		{

			// Mixin

			this.mixin = function(base)
			{
				base = jg_mixin(this, MEventTarget, base);
			};

			// Public Events

			this.changed = new Event("changed", EventData);

		});

	});
	});

	jg_import.define("jgatt.geom.Point", function()
	{
	jg_namespace("jgatt.geom", function()
	{

		this.Point = jg_extend(Object, function(Point, base)
		{

			// Public Properties

			this.x = 0;
			this.y = 0;

			// Constructor

			this.constructor = function(x, y)
			{
				this.x = (x !== undefined) ? x : 0;
				this.y = (y !== undefined) ? y : 0;
			};

			// Public Methods

			this.length = function()
			{
				return Math.sqrt(this.x * this.x + this.y * this.y);
			};

			this.hasNaN = function()
			{
				return (isNaN(this.x) ||
				        isNaN(this.y));
			};

			this.hasInfinity = function()
			{
				return ((this.x == Infinity) || (this.x == -Infinity) ||
				        (this.y == Infinity) || (this.y == -Infinity));
			};

			this.hasPositiveInfinity = function()
			{
				return ((this.x == Infinity) ||
				        (this.y == Infinity));
			};

			this.hasNegativeInfinity = function()
			{
				return ((this.x == -Infinity) ||
				        (this.y == -Infinity));
			};

			this.isFinite = function()
			{
				return (((this.x - this.x) === 0) &&
				        ((this.y - this.y) === 0));
			};

			this.equals = function(point)
			{
				return ((this.x == point.x) &&
				        (this.y == point.y));
			};

			this.clone = function()
			{
				return new Point(this.x, this.y);
			};

			this.toString = function()
			{
				return "(" + this.x + ", " + this.y + ")";
			};

		});

	});
	});

	jg_import.define("jgatt.geom.Matrix", function()
	{
	jg_namespace("jgatt.geom", function()
	{

		var Point = jg_import("jgatt.geom.Point");

		this.Matrix = jg_extend(Object, function(Matrix, base)
		{

			// Public Properties

			this.a = 1;
			this.b = 0;
			this.c = 0;
			this.d = 1;
			this.tx = 0;
			this.ty = 0;

			// Constructor

			this.constructor = function(a, b, c, d, tx, ty)
			{
				this.a = (a !== undefined) ? a : 1;
				this.b = (b !== undefined) ? b : 0;
				this.c = (c !== undefined) ? c : 0;
				this.d = (d !== undefined) ? d : 1;
				this.tx = (tx !== undefined) ? tx : 0;
				this.ty = (ty !== undefined) ? ty : 0;
			};

			// Public Methods

			this.transformPoint = function(point)
			{
				var x = this.a * point.x + this.c * point.y + this.tx;
				var y = this.b * point.x + this.d * point.y + this.ty;
				return new Point(x, y);
			};

			this.translate = function(x, y)
			{
				this.tx += x;
				this.ty += y;
			};

			this.scale = function(scaleX, scaleY)
			{
				this.a *= scaleX;
				this.b *= scaleY;
				this.c *= scaleX;
				this.d *= scaleY;
				this.tx *= scaleX;
				this.ty *= scaleY;
			};

			this.rotate = function(angle)
			{
				angle = (angle / 180) * Math.PI;

				var cosAngle = Math.cos(angle);
				var sinAngle = Math.sin(angle);
				var a = this.a;
				var b = this.b;
				var c = this.c;
				var d = this.d;
				var tx = this.tx;
				var ty = this.ty;

				this.a = a * cosAngle - b * sinAngle;
				this.b = b * cosAngle + a * sinAngle;
				this.c = c * cosAngle - d * sinAngle;
				this.d = d * cosAngle + c * sinAngle;
				this.tx = tx * cosAngle - ty * sinAngle;
				this.ty = ty * cosAngle + tx * sinAngle;
			};

			this.skew = function(skewX, skewY)
			{
				skewX = (skewX / 180) * Math.PI;
				skewY = (skewY / 180) * Math.PI;

				var tanSkewX = Math.tan(skewX);
				var tanSkewY = Math.tan(skewY);
				var a = this.a;
				var b = this.b;
				var c = this.c;
				var d = this.d;
				var tx = this.tx;
				var ty = this.ty;

				this.a = a + b * tanSkewX;
				this.b = b + a * tanSkewY;
				this.c = c + d * tanSkewX;
				this.d = d + c * tanSkewY;
				this.tx = tx + ty * tanSkewX;
				this.ty = ty + tx * tanSkewY;
			};

			this.concat = function(matrix)
			{
				var a1 = this.a;
				var b1 = this.b;
				var c1 = this.c;
				var d1 = this.d;
				var tx1 = this.tx;
				var ty1 = this.ty;

				var a2 = matrix.a;
				var b2 = matrix.b;
				var c2 = matrix.c;
				var d2 = matrix.d;
				var tx2 = matrix.tx;
				var ty2 = matrix.ty;

				this.a = a1 * a2 + b1 * c2;
				this.b = b1 * d2 + a1 * b2;
				this.c = c1 * a2 + d1 * c2;
				this.d = d1 * d2 + c1 * b2;
				this.tx = tx1 * a2 + ty1 * c2 + tx2;
				this.ty = ty1 * d2 + tx1 * b2 + ty2;
			};

			this.invert = function()
			{
				var det = this.determinant();
				var a = this.a / det;
				var b = this.b / det;
				var c = this.c / det;
				var d = this.d / det;
				var tx = this.tx;
				var ty = this.ty;

				this.a = d;
				this.b = -b;
				this.c = -c;
				this.d = a;
				this.tx = c * ty - d * tx;
				this.ty = b * tx - a * ty;
			};

			this.identity = function()
			{
				this.a = 1;
				this.b = 0;
				this.c = 0;
				this.d = 1;
				this.tx = 0;
				this.ty = 0;
			};

			this.determinant = function()
			{
				return (this.a * this.d) - (this.b * this.c);
			};

			this.hasInverse = function()
			{
				var det = Math.abs(this.determinant());
				return ((det > 0) && (det < Infinity));
			};

			this.hasNaN = function()
			{
				return (isNaN(this.a) ||
			        	isNaN(this.b) ||
				        isNaN(this.c) ||
				        isNaN(this.d) ||
				        isNaN(this.tx) ||
			        	isNaN(this.ty));
			};

			this.hasInfinity = function()
			{
				return ((this.a == Infinity) || (this.a == -Infinity) ||
			        	(this.b == Infinity) || (this.b == -Infinity) ||
				        (this.c == Infinity) || (this.c == -Infinity) ||
				        (this.d == Infinity) || (this.d == -Infinity) ||
				        (this.tx == Infinity) || (this.tx == -Infinity) ||
			        	(this.ty == Infinity) || (this.ty == -Infinity));
			};

			this.hasPositiveInfinity = function()
			{
				return ((this.a == Infinity) ||
			        	(this.b == Infinity) ||
				        (this.c == Infinity) ||
				        (this.d == Infinity) ||
				        (this.tx == Infinity) ||
			        	(this.ty == Infinity));
			};

			this.hasNegativeInfinity = function()
			{
				return ((this.a == -Infinity) ||
			        	(this.b == -Infinity) ||
				        (this.c == -Infinity) ||
				        (this.d == -Infinity) ||
				        (this.tx == -Infinity) ||
			        	(this.ty == -Infinity));
			};

			this.isFinite = function()
			{
				return (((this.a - this.a) === 0) &&
				        ((this.b - this.b) === 0) &&
				        ((this.c - this.c) === 0) &&
				        ((this.d - this.d) === 0) &&
				        ((this.tx - this.tx) === 0) &&
				        ((this.ty - this.ty) === 0));
			};

			this.isIdentity = function()
			{
				return ((this.a == 1) &&
			        	(this.b == 0) &&
				        (this.c == 0) &&
				        (this.d == 1) &&
				        (this.tx == 0) &&
			        	(this.ty == 0));
			};

			this.equals = function(matrix)
			{
				return ((this.a == matrix.a) &&
			        	(this.b == matrix.b) &&
				        (this.c == matrix.c) &&
				        (this.d == matrix.d) &&
				        (this.tx == matrix.tx) &&
			        	(this.ty == matrix.ty));
			};

			this.clone = function()
			{
				return new Matrix(this.a, this.b, this.c, this.d, this.tx, this.ty);
			};

			this.toString = function()
			{
				return "(" + this.a + ", " + this.b + ", " + this.c + ", " + this.d + ", " + this.tx + ", " + this.ty + ")";
			};

		});

	});
	});

	jg_import.define("jgatt.geom.Rectangle", function()
	{
	jg_namespace("jgatt.geom", function()
	{

		this.Rectangle = jg_extend(Object, function(Rectangle, base)
		{

			// Public Properties

			this.x = 0;
			this.y = 0;
			this.width = 0;
			this.height = 0;

			// Constructor

			this.constructor = function(x, y, width, height)
			{
				this.x = (x !== undefined) ? x : 0;
				this.y = (y !== undefined) ? y : 0;
				this.width = (width !== undefined) ? width : 0;
				this.height = (height !== undefined) ? height : 0;
			};

			// Public Methods

			this.hasNaN = function()
			{
				return (isNaN(this.x) ||
				        isNaN(this.y) ||
				        isNaN(this.width) ||
				        isNaN(this.height));
			};

			this.hasInfinity = function()
			{
				return ((this.x == Infinity) || (this.x == -Infinity) ||
				        (this.y == Infinity) || (this.y == -Infinity) ||
				        (this.width == Infinity) || (this.width == -Infinity) ||
				        (this.height == Infinity) || (this.height == -Infinity));
			};

			this.hasPositiveInfinity = function()
			{
				return ((this.x == Infinity) ||
				        (this.y == Infinity) ||
				        (this.width == Infinity) ||
				        (this.height == Infinity));
			};

			this.hasNegativeInfinity = function()
			{
				return ((this.x == -Infinity) ||
				        (this.y == -Infinity) ||
				        (this.width == -Infinity) ||
				        (this.height == -Infinity));
			};

			this.isFinite = function()
			{
				return (((this.x - this.x) === 0) &&
				        ((this.y - this.y) === 0) &&
				        ((this.width - this.width) === 0) &&
				        ((this.height - this.height) === 0));
			};

			this.equals = function(rectangle)
			{
				return ((this.x == rectangle.x) &&
				        (this.y == rectangle.y) &&
				        (this.width == rectangle.width) &&
				        (this.height == rectangle.height));
			};

			this.clone = function()
			{
				return new Rectangle(this.x, this.y, this.width, this.height);
			};

			this.toString = function()
			{
				return "(" + this.x + ", " + this.y + ", " + this.width + ", " + this.height + ")";
			};

		});

	});
	});

	jg_import.define("jgatt.graphics.Caps", function()
	{
	jg_namespace("jgatt.graphics", function()
	{

		this.Caps = jg_static(function(Caps)
		{

			// Public Static Constants

			Caps.NONE = "none";
			Caps.ROUND = "round";
			Caps.SQUARE = "square";

		});

	});
	});

	jg_import.define("jgatt.utils.NumberUtils", function()
	{
	jg_namespace("jgatt.utils", function()
	{

		this.NumberUtils = jg_static(function(NumberUtils)
		{

			// Public Static Constants

			NumberUtils.EPSILON = (function()
			{
				var eps = 1;
				var temp = 1;
				while ((1 + temp) > 1)
				{
					eps = temp;
					temp /= 2;
				}
				return eps;
			})();

			NumberUtils.PRECISION = (function()
			{
				var prec = 0;
				var temp = 9;
				while ((temp % 10) == 9)
				{
					prec++;
					temp = temp * 10 + 9;
				}
				return prec;
			})();

			// Public Static Methods

			NumberUtils.parseNumber = function(value)
			{
				if (value == null)
					return NaN;

				switch (typeof value)
				{
					case "number":
						return value;
					case "string":
						return value ? Number(value) : NaN;
					case "boolean":
						return value ? 1 : 0;
				}

				return NaN;
			};

			NumberUtils.toPrecision = function(n, precision)
			{
				precision = (precision !== undefined) ? precision : 0;

				if (precision < 1)
					precision = NumberUtils.PRECISION + precision;

				if (precision < 1)
					precision = 1;
				else if (precision > 21)
					precision = 21;

				return Number(n.toPrecision(precision));
			};

			NumberUtils.toFixed = function(n, decimalDigits)
			{
				decimalDigits = (decimalDigits !== undefined) ? decimalDigits : 0;

				if (decimalDigits < 0)
					decimalDigits = 0;
				else if (decimalDigits > 20)
					decimalDigits = 20;

				return Number(n.toFixed(decimalDigits));
			};

			NumberUtils.roundTo = function(n, units)
			{
				units = (units !== undefined) ? units : 1;

				return NumberUtils.toPrecision(Math.round(n / units) * units, -1);
			};

			NumberUtils.minMax = function(n, min, max)
			{
				if (n < min)
					n = min;
				if (n > max)
					n = max;
				return n;
			};

			NumberUtils.maxMin = function(n, max, min)
			{
				if (n > max)
					n = max;
				if (n < min)
					n = min;
				return n;
			};

			NumberUtils.interpolate = function(n1, n2, f)
			{
				return n1 * (1 - f) + n2 * f;
			};

			NumberUtils.approxZero = function(n, threshold)
			{
				if (n == 0)
					return true;

				threshold = (threshold !== undefined) ? threshold : NaN;
				if (isNaN(threshold))
					threshold = NumberUtils.EPSILON;

				return (n < 0) ? (-n < threshold) : (n < threshold);
			};

			NumberUtils.approxOne = function(n, threshold)
			{
				if (n == 1)
					return true;

				n -= 1;

				threshold = (threshold !== undefined) ? threshold : NaN;
				if (isNaN(threshold))
					threshold = NumberUtils.EPSILON;

				return (n < 0) ? (-n < threshold) : (n < threshold);
			};

			NumberUtils.approxEqual = function(n1, n2, threshold)
			{
				if (n1 == n2)
					return true;

				n1 -= n2;

				threshold = (threshold !== undefined) ? threshold : NaN;
				if (isNaN(threshold))
					threshold = NumberUtils.EPSILON;

				return (n1 < 0) ? (-n1 < threshold) : (n1 < threshold);
			};

			NumberUtils.approxLessThan = function(n1, n2, threshold)
			{
				return ((n1 < n2) && !NumberUtils.approxEqual(n1, n2, threshold));
			};

			NumberUtils.approxLessThanOrEqual = function(n1, n2, threshold)
			{
				return ((n1 < n2) || NumberUtils.approxEqual(n1, n2, threshold));
			};

			NumberUtils.approxGreaterThan = function(n1, n2, threshold)
			{
				return ((n1 > n2) && !NumberUtils.approxEqual(n1, n2, threshold));
			};

			NumberUtils.approxGreaterThanOrEqual = function(n1, n2, threshold)
			{
				return ((n1 > n2) || NumberUtils.approxEqual(n1, n2, threshold));
			};

		});

	});
	});

	jg_import.define("jgatt.graphics.ColorUtils", function()
	{
	jg_namespace("jgatt.graphics", function()
	{

		var NumberUtils = jg_import("jgatt.utils.NumberUtils");

		this.ColorUtils = jg_static(function(ColorUtils)
		{

			// Public Static Methods

			ColorUtils.toRGB = function(color)
			{
				var rgb = {};
				rgb.r = (color >> 16) & 0xFF;
				rgb.g = (color >> 8) & 0xFF;
				rgb.b = color & 0xFF;
				return rgb;
			};

			ColorUtils.fromRGB = function(rgb)
			{
				return ((rgb.r << 16) | (rgb.g << 8) | rgb.b);
			};

			ColorUtils.brightness = function(color, brightness)
			{
				var rgb = ColorUtils.toRGB(color);
				var c;

				if (brightness < 0)
				{
					brightness = -brightness;
					c = 0x00;
				}
				else
				{
					c = 0xFF;
				}

				if (brightness > 1)
					brightness = 1;

				rgb.r += Math.round((c - rgb.r) * brightness);
				rgb.g += Math.round((c - rgb.g) * brightness);
				rgb.b += Math.round((c - rgb.b) * brightness);

				return ColorUtils.fromRGB(rgb);
			};

			ColorUtils.interpolate = function(color1, color2, f)
			{
				var rgb1 = ColorUtils.toRGB(color1);
				var rgb2 = ColorUtils.toRGB(color2);

				var rgb = {};
				rgb.r = Math.round(NumberUtils.interpolate(rgb1.r, rgb2.r, f));
				rgb.g = Math.round(NumberUtils.interpolate(rgb1.g, rgb2.g, f));
				rgb.b = Math.round(NumberUtils.interpolate(rgb1.b, rgb2.b, f));

				return ColorUtils.fromRGB(rgb);
			};

		});

	});
	});

	jg_import.define("jgatt.graphics.GradientType", function()
	{
	jg_namespace("jgatt.graphics", function()
	{

		this.GradientType = jg_static(function(GradientType)
		{

			// Public Static Constants

			GradientType.LINEAR = "linear";
			GradientType.RADIAL = "radial";

		});

	});
	});

	jg_import.define("jgatt.graphics.Graphics", function()
	{
	jg_namespace("jgatt.graphics", function()
	{

		var Matrix = jg_import("jgatt.geom.Matrix");
		var Point = jg_import("jgatt.geom.Point");

		this.Graphics = jg_extend(Object, function(Graphics, base)
		{

			// Private Properties

			this._width = 1;
			this._height = 1;
			this._strokeStyle = null;
			this._strokeCommands = null;
			this._fillCommands = null;
			this._drawingStack = null;
			this._drawingStackIndex = 0;
			this._penX = 0;
			this._penY = 0;

			this._element = null;
			this._canvas = null;
			this._context = null;

			// Constructor

			this.constructor = function(width, height)
			{
				this._width = ((width > 1) && (width < Infinity)) ? Math.floor(width) : 1;
				this._height = ((height > 1) && (height < Infinity)) ? Math.floor(height) : 1;
				this._strokeStyle = { thickness: 1, caps: "none", joints: "miter", miterLimit: 10, pixelHinting: true };
				this._drawingStack = [];
			};

			// Public Methods

			this.appendTo = function(element)
			{
				if (!element)
					throw new Error("Parameter element must be non-null.");

				if (element === this._element)
					return true;

				this.remove();

				var canvas = document.createElement("canvas");
				if (!canvas)
					return false;

				if (typeof canvas.getContext !== "function")
					return false;

				var context = canvas.getContext("2d");
				if (!context)
					return false;

				canvas.style.position = "absolute";
				canvas.width = this._width;
				canvas.height = this._height;

				element.appendChild(canvas);

				this._element = element;
				this._canvas = canvas;
				this._context = context;

				this._draw(true);

				return true;
			};

			this.remove = function()
			{
				if (!this._element)
					return false;

				var context = this._context;
				context.clearRect(0, 0, context.canvas.width, context.canvas.height);
				context.beginPath();

				var canvas = this._canvas;
				var parentNode = canvas.parentNode;
				if (parentNode)
					parentNode.removeChild(canvas);

				this._element = null;
				this._canvas = null;
				this._context = null;

				return true;
			};

			this.setSize = function(width, height)
			{
				width = ((width > 1) && (width < Infinity)) ? Math.floor(width) : 1;
				height = ((height > 1) && (height < Infinity)) ? Math.floor(height) : 1;

				if ((width === this._width) && (height === this._height))
					return;

				this._width = width;
				this._height = height;

				var canvas = this._canvas;
				if (!canvas)
					return;

				canvas.width = width;
				canvas.height = height;

				this._draw(true);
			};

			this.setStrokeStyle = function(thickness, caps, joints, miterLimit, pixelHinting)
			{
				if ((caps != null) && (caps !== "none") && (caps !== "round") && (caps !== "square"))
					throw new Error("Parameter caps must be one of \"none\", \"round\", or \"square\".");
				if ((joints != null) && (joints !== "miter") && (joints !== "round") && (joints !== "bevel"))
					throw new Error("Parameter joints must be one of \"miter\", \"round\", or \"bevel\".");

				thickness *= 1;
				thickness = ((thickness > 0) && (thickness < Infinity)) ? thickness : 1;

				caps = caps ? caps : "none";

				joints = joints ? joints : "miter";

				miterLimit *= 1;
				miterLimit = ((miterLimit > 0) && (miterLimit < Infinity)) ? miterLimit : 10;

				pixelHinting = (pixelHinting != false);

				this._strokeStyle = { thickness: thickness, caps: caps, joints: joints, miterLimit: miterLimit, pixelHinting: pixelHinting };
			};

			this.beginSolidStroke = function(color, alpha)
			{
				this.endStroke();

				color = !isNaN(color) ? Math.min(Math.max(Math.floor(color), 0x000000), 0xFFFFFF) : 0x000000;

				alpha = !isNaN(alpha) ? Math.min(Math.max(alpha, 0), 1) : 1;

				var strokeCommands = this._strokeCommands = [];
				strokeCommands.push({ name: "solidStroke", strokeStyle: this._strokeStyle, color: color, alpha: alpha });
				strokeCommands.push({ name: "moveTo", x: this._penX, y: this._penY });
			};

			this.beginGradientStroke = function(type, colors, alphas, ratios, matrix, focalPointRatio)
			{
				if (type == null)
					throw new Error("Parameter type must be non-null.");
				if ((type !== "linear") && (type !== "radial"))
					throw new Error("Parameter type must be one of \"linear\" or \"radial\".");
				if (colors == null)
					throw new Error("Parameter colors must be non-null.");
				if (!(colors instanceof Array))
					throw new Error("Parameter colors must be an array.");
				if (alphas == null)
					throw new Error("Parameter alphas must be non-null.");
				if (!(alphas instanceof Array))
					throw new Error("Parameter alphas must be an array.");
				if (ratios == null)
					throw new Error("Parameter ratios must be non-null.");
				if (!(ratios instanceof Array))
					throw new Error("Parameter ratios must be an array.");
				if ((matrix != null) && !(matrix instanceof Matrix))
					throw new Error("Parameter matrix must be an instance of jgatt.geom.Matrix.");

				this.endStroke();

				var numStops = Math.min(colors.length, alphas.length, ratios.length);
				colors = colors.slice(0, numStops);
				alphas = alphas.slice(0, numStops);
				ratios = ratios.slice(0, numStops);
				var color;
				var alpha;
				var ratio;
				for (var i = 0; i < numStops; i++)
				{
					color = colors[i];
					colors[i] = !isNaN(color) ? Math.min(Math.max(Math.floor(color), 0x000000), 0xFFFFFF) : 0x000000;

					alpha = alphas[i];
					alphas[i] = !isNaN(alpha) ? Math.min(Math.max(alpha, 0), 1) : 1;

					ratio = ratios[i];
					ratios[i] = !isNaN(ratio) ? Math.min(Math.max(ratio, 0), 1) : 0;
				}

				if (matrix)
				{
					matrix = new Matrix(matrix.a * 1, matrix.b * 1, matrix.c * 1, matrix.d * 1, matrix.tx * 1, matrix.ty * 1);
					if ((matrix.tx - matrix.tx) !== 0)
						matrix.tx = 0;
					if ((matrix.ty - matrix.ty) !== 0)
						matrix.ty = 0;
					if (!matrix.hasInverse())
						matrix = null;
				}

				focalPointRatio = !isNaN(focalPointRatio) ? Math.min(Math.max(focalPointRatio, -1), 1) : 0;

				var strokeCommands = this._strokeCommands = [];
				strokeCommands.push({ name: "gradientStroke", strokeStyle: this._strokeStyle, type: type, colors: colors, alphas: alphas, ratios: ratios, matrix: matrix, focalPointRatio: focalPointRatio });
				strokeCommands.push({ name: "moveTo", x: this._penX, y: this._penY });
			};

			this.beginImageStroke = function(image, matrix, repeat)
			{
			};

			this.endStroke = function()
			{
				if (!this._strokeCommands)
					return;

				this._drawingStack.push(this._strokeCommands);
				this._strokeCommands = null;

				this._draw();
			};

			this.beginSolidFill = function(color, alpha)
			{
				this.endFill();

				color = !isNaN(color) ? Math.min(Math.max(Math.floor(color), 0x000000), 0xFFFFFF) : 0x000000;

				alpha = !isNaN(alpha) ? Math.min(Math.max(alpha, 0), 1) : 1;

				var fillCommands = this._fillCommands = [];
				fillCommands.push({ name: "solidFill", color: color, alpha: alpha });
				fillCommands.push({ name: "moveTo", x: this._penX, y: this._penY });
			};

			this.beginGradientFill = function(type, colors, alphas, ratios, matrix, focalPointRatio)
			{
				if (type == null)
					throw new Error("Parameter type must be non-null.");
				if ((type !== "linear") && (type !== "radial"))
					throw new Error("Parameter type must be one of \"linear\" or \"radial\".");
				if (colors == null)
					throw new Error("Parameter colors must be non-null.");
				if (!(colors instanceof Array))
					throw new Error("Parameter colors must be an array.");
				if (alphas == null)
					throw new Error("Parameter alphas must be non-null.");
				if (!(alphas instanceof Array))
					throw new Error("Parameter alphas must be an array.");
				if (ratios == null)
					throw new Error("Parameter ratios must be non-null.");
				if (!(ratios instanceof Array))
					throw new Error("Parameter ratios must be an array.");
				if ((matrix != null) && !(matrix instanceof Matrix))
					throw new Error("Parameter matrix must be an instance of jgatt.geom.Matrix.");

				this.endFill();

				var numStops = Math.min(colors.length, alphas.length, ratios.length);
				colors = colors.slice(0, numStops);
				alphas = alphas.slice(0, numStops);
				ratios = ratios.slice(0, numStops);
				var color;
				var alpha;
				var ratio;
				for (var i = 0; i < numStops; i++)
				{
					color = colors[i];
					colors[i] = !isNaN(color) ? Math.min(Math.max(Math.floor(color), 0x000000), 0xFFFFFF) : 0x000000;

					alpha = alphas[i];
					alphas[i] = !isNaN(alpha) ? Math.min(Math.max(alpha, 0), 1) : 1;

					ratio = ratios[i];
					ratios[i] = !isNaN(ratio) ? Math.min(Math.max(ratio, 0), 1) : 0;
				}

				if (matrix)
				{
					matrix = new Matrix(matrix.a * 1, matrix.b * 1, matrix.c * 1, matrix.d * 1, matrix.tx * 1, matrix.ty * 1);
					if ((matrix.tx - matrix.tx) !== 0)
						matrix.tx = 0;
					if ((matrix.ty - matrix.ty) !== 0)
						matrix.ty = 0;
					if (!matrix.hasInverse())
						matrix = null;
				}

				focalPointRatio = !isNaN(focalPointRatio) ? Math.min(Math.max(focalPointRatio, -1), 1) : 0;

				var fillCommands = this._fillCommands = [];
				fillCommands.push({ name: "gradientFill", type: type, colors: colors, alphas: alphas, ratios: ratios, matrix: matrix, focalPointRatio: focalPointRatio });
				fillCommands.push({ name: "moveTo", x: this._penX, y: this._penY });
			};

			this.beginImageFill = function(image, matrix, repeat)
			{
			};

			this.endFill = function()
			{
				if (!this._fillCommands)
					return;

				this._drawingStack.push(this._fillCommands);
				this._fillCommands = null;

				this._draw();
			};

			this.moveTo = function(x, y)
			{
				x *= 1;
				if ((x - x) !== 0)
					x = 0;
				y *= 1;
				if ((y - y) !== 0)
					y = 0;

				this._penX = x;
				this._penY = y;

				var command = { name: "moveTo", x: x, y: y };
				if (this._strokeCommands)
					this._strokeCommands.push(command);
				if (this._fillCommands)
					this._fillCommands.push(command);
			};

			this.lineTo = function(x, y)
			{
				x *= 1;
				if ((x - x) !== 0)
					x = 0;
				y *= 1;
				if ((y - y) !== 0)
					y = 0;

				this._penX = x;
				this._penY = y;

				var command = { name: "lineTo", x: x, y: y };
				if (this._strokeCommands)
					this._strokeCommands.push(command);
				if (this._fillCommands)
					this._fillCommands.push(command);
			};

			this.curveTo = function(controlX, controlY, anchorX, anchorY)
			{
				controlX *= 1;
				if ((controlX - controlX) !== 0)
					controlX = 0;
				controlY *= 1;
				if ((controlY - controlY) !== 0)
					controlY = 0;
				anchorX *= 1;
				if ((anchorX - anchorX) !== 0)
					anchorX = 0;
				anchorY *= 1;
				if ((anchorY - anchorY) !== 0)
					anchorY = 0;

				this._penX = anchorX;
				this._penY = anchorY;

				var command = { name: "curveTo", controlX: controlX, controlY: controlY, anchorX: anchorX, anchorY: anchorY };
				if (this._strokeCommands)
					this._strokeCommands.push(command);
				if (this._fillCommands)
					this._fillCommands.push(command);
			};

			this.clear = function()
			{
				this._strokeCommands = null;
				this._fillCommands = null;
				this._drawingStack = [];

				this._draw(true);
			};

			// Private Methods

			this._draw = function(redraw)
			{
				var context = this._context;
				if (!context)
					return;

				if (redraw == true)
				{
					this._drawingStackIndex = 0;

					context.clearRect(0, 0, context.canvas.width, context.canvas.height);
					context.beginPath();
				}

				var drawingStack = this._drawingStack;
				var drawingStackSize = drawingStack.length;
				var commands;
				var i;
				for (i = this._drawingStackIndex; i < drawingStackSize; i++)
				{
					commands = drawingStack[i];
					switch (commands[0].name)
					{
						case "solidStroke":
						case "gradientStroke":
							this._drawStroke(commands);
							break;
						case "solidFill":
						case "gradientFill":
							this._drawFill(commands);
							break;
					}
				}
				this._drawingStackIndex = i;
			};

			this._drawStroke = function(commands)
			{
				var context = this._context;
				if (!context)
					return;

				var numCommands = commands.length;
				var command = commands[0];
				var strokeStyle = command.strokeStyle;
				var offset = strokeStyle.pixelHinting ? (strokeStyle.thickness % 2) / 2 : 0;
				var hasPath = false;
				var startX;
				var startY;
				var endX;
				var endY;
				var gradient;
				var numStops;
				var colors;
				var alphas;
				var ratios;
				var color;
				var alpha;
				var ratio;
				var matrix;
				var i;

				context.beginPath();
				for (i = 1; i < numCommands; i++)
				{
					command = commands[i];
					if (command.name === "moveTo")
					{
						if (hasPath && (startX === endX) && (startY === endY))
							context.closePath();
						hasPath = false;
						startX = command.x;
						startY = command.y;
						context.moveTo(startX + offset, startY + offset);
					}
					else if (command.name === "lineTo")
					{
						hasPath = true;
						endX = command.x;
						endY = command.y;
						context.lineTo(endX + offset, endY + offset);
					}
					else if (command.name === "curveTo")
					{
						hasPath = true;
						endX = command.anchorX;
						endY = command.anchorY;
						context.quadraticCurveTo(command.controlX + offset, command.controlY + offset, endX + offset, endY + offset);
					}
				}
				if (hasPath && (startX === endX) && (startY === endY))
					context.closePath();

				context.save();
				context.lineWidth = strokeStyle.thickness;
				context.lineCap = (strokeStyle.caps === "none") ? "butt" : strokeStyle.caps;
				context.lineJoin = strokeStyle.joints;
				context.miterLimit = strokeStyle.miterLimit;
				command = commands[0];
				if (command.name === "solidStroke")
				{
					color = command.color;
					alpha = command.alpha;
					context.strokeStyle = "rgba(" + ((color >> 16) & 0xFF) + ", " + ((color >> 8) & 0xFF) + ", " + (color & 0xFF) + ", " + alpha + ")";
				}
				else if (command.name === "gradientStroke")
				{
					if (command.type === "radial")
						gradient = context.createRadialGradient(0.5 + 0.49 * command.focalPointRatio, 0.5, 0, 0.5, 0.5, 0.5);
					else
						gradient = context.createLinearGradient(0, 0, 1, 0);
					colors = command.colors;
					alphas = command.alphas;
					ratios = command.ratios;
					numStops = colors.length;
					for (i = 0; i < numStops; i++)
					{
						color = colors[i];
						alpha = alphas[i];
						ratio = ratios[i];
						gradient.addColorStop(ratio, "rgba(" + ((color >> 16) & 0xFF) + ", " + ((color >> 8) & 0xFF) + ", " + (color & 0xFF) + ", " + alpha + ")");
					}
					matrix = command.matrix;
					if (matrix)
						context.setTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.tx, matrix.ty);
					context.strokeStyle = gradient;
				}
				context.stroke();
				context.restore();
				context.beginPath();
			};

			this._drawFill = function(commands)
			{
				var context = this._context;
				if (!context)
					return;

				var numCommands = commands.length;
				var command;
				var gradient;
				var numStops;
				var colors;
				var alphas;
				var ratios;
				var color;
				var alpha;
				var ratio;
				var matrix;
				var i;

				context.beginPath();
				for (i = 1; i < numCommands; i++)
				{
					command = commands[i];
					if (command.name === "moveTo")
						context.moveTo(command.x, command.y);
					else if (command.name === "lineTo")
						context.lineTo(command.x, command.y);
					else if (command.name === "curveTo")
						context.quadraticCurveTo(command.controlX, command.controlY, command.anchorX, command.anchorY);
				}

				context.save();
				command = commands[0];
				if (command.name === "solidFill")
				{
					color = command.color;
					alpha = command.alpha;
					context.fillStyle = "rgba(" + ((color >> 16) & 0xFF) + ", " + ((color >> 8) & 0xFF) + ", " + (color & 0xFF) + ", " + alpha + ")";
				}
				else if (command.name === "gradientFill")
				{
					if (command.type === "radial")
						gradient = context.createRadialGradient(0.5 + 0.49 * command.focalPointRatio, 0.5, 0, 0.5, 0.5, 0.5);
					else
						gradient = context.createLinearGradient(0, 0, 1, 0);
					colors = command.colors;
					alphas = command.alphas;
					ratios = command.ratios;
					numStops = colors.length;
					for (i = 0; i < numStops; i++)
					{
						color = colors[i];
						alpha = alphas[i];
						ratio = ratios[i];
						gradient.addColorStop(ratio, "rgba(" + ((color >> 16) & 0xFF) + ", " + ((color >> 8) & 0xFF) + ", " + (color & 0xFF) + ", " + alpha + ")");
					}
					matrix = command.matrix;
					if (matrix)
						context.setTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.tx, matrix.ty);
					context.fillStyle = gradient;
				}
				context.fill();
				context.restore();
				context.beginPath();
			};

		});

	});
	});

	jg_import.define("jgatt.graphics.Joints", function()
	{
	jg_namespace("jgatt.graphics", function()
	{

		this.Joints = jg_static(function(Joints)
		{

			// Public Static Constants

			Joints.MITER = "miter";
			Joints.ROUND = "round";
			Joints.BEVEL = "bevel";

		});

	});
	});

	jg_import.define("jgatt.properties.PropertyEventData", function()
	{
	jg_namespace("jgatt.properties", function()
	{

		var EventData = jg_import("jgatt.events.EventData");

		this.PropertyEventData = jg_extend(EventData, function(PropertyEventData, base)
		{

			// Public Properties

			this.property = null;
			this.oldValue = null;
			this.newValue = null;

			// Constructor

			this.constructor = function(property, oldValue, newValue)
			{
				this.property = property;
				this.oldValue = oldValue;
				this.newValue = newValue;
			};

		});

	});
	});

	jg_import.define("jgatt.graphics.brushes.Brush", function()
	{
	jg_namespace("jgatt.graphics.brushes", function()
	{

		var MObservable = jg_import("jgatt.events.MObservable");
		var Matrix = jg_import("jgatt.geom.Matrix");
		var Point = jg_import("jgatt.geom.Point");
		var Graphics = jg_import("jgatt.graphics.Graphics");
		var MPropertyTarget = jg_import("jgatt.properties.MPropertyTarget");
		var Property = jg_import("jgatt.properties.Property");
		var PropertyEventData = jg_import("jgatt.properties.PropertyEventData");

		this.Brush = jg_extend(Object, function(Brush, base)
		{

			base = jg_mixin(this, MObservable, base);
			base = jg_mixin(this, MPropertyTarget, base);

			// Private Properties

			this._properties = null;
			this._commands = null;
			this._graphics = null;
			this._matrix = null;
			this._bounds = null;

			// Constructor

			this.constructor = function()
			{
				base.constructor.call(this);

				this.addEventListener(this.changed, this._self_changed, Infinity);
			};

			// Public Methods

			this.beginBrush = function(graphics, matrix, bounds)
			{
				if (!graphics)
					throw new Error("Parameter graphics must be non-null.");
				if (!(graphics instanceof Graphics))
					throw new Error("Parameter graphics must be an instance of jgatt.graphics.Graphics.");
				if ((matrix != null) && !(matrix instanceof Matrix))
					throw new Error("Parameter matrix must be an instance of jgatt.geom.Matrix.");
				if ((bounds != null) && !(bounds instanceof Array))
					throw new Error("Parameter bounds must be an array.");

				this.endBrush();

				if (!this._properties)
					this._properties = this._getProperties();
				this._commands = [];
				this._graphics = graphics;
				this._matrix = matrix ? matrix.clone() : null;
				if (bounds)
				{
					var bounds2 = this._bounds = [];
					var numPoints = bounds.length;
					var point;
					for (var i = 0; i < numPoints; i++)
					{
						point = bounds[i];
						if (point instanceof Point)
							bounds2.push(point.clone());
					}
				}
			};

			this.endBrush = function()
			{
				if (!this._graphics)
					return;

				this.draw(this._properties, this._commands, this._graphics, this._matrix, this._bounds);

				this._commands = null;
				this._graphics = null;
				this._matrix = null;
				this._bounds = null;
			};

			this.moveTo = function(x, y)
			{
				if (!this._graphics)
					return;

				this._commands.push({ name: "moveTo", x: x, y: y });
			};

			this.lineTo = function(x, y)
			{
				if (!this._graphics)
					return;

				this._commands.push({ name: "lineTo", x: x, y: y });
			};

			this.curveTo = function(controlX, controlY, anchorX, anchorY)
			{
				if (!this._graphics)
					return;

				this._commands.push({ name: "curveTo", controlX: controlX, controlY: controlY, anchorX: anchorX, anchorY: anchorY });
			};

			// Protected Methods

			this.draw = function(properties, commands, graphics, matrix, bounds)
			{
			};

			// Private Methods

			this._getProperties = function()
			{
				var properties = {};
				var property;
				for (var p in this)
				{
					property = this[p];
					if (property instanceof Property)
						properties[p] = this.getInternal(property);
				}
				return properties;
			};

			this._self_changed = function(e)
			{
				if ((e.target === this) && (e instanceof PropertyEventData))
					this._properties = null;
			};

		});

	});
	});

	jg_import.define("jgatt.graphics.brushes.DrawingUtils", function()
	{
	jg_namespace("jgatt.graphics.brushes", function()
	{

		var Point = jg_import("jgatt.geom.Point");
		var Brush = jg_import("jgatt.graphics.brushes.Brush");

		this.DrawingUtils = jg_static(function(DrawingUtils)
		{

			// Public Static Methods

			DrawingUtils.arcTo = function(brush, startX, startY, startAngle, arcAngle, radius, radiusY)
			{
				if (brush == null)
					throw new Error("Parameter brush must be non-null.");
				if (!(brush instanceof Brush))
					throw new Error("Parameter brush must be an instance of jgatt.graphics.brushes.Brush.");

				if (arcAngle > 360)
					arcAngle = 360;
				else if (arcAngle < -360)
					arcAngle = -360;

				if (radiusY === undefined)
					radiusY = radius;

				var segs = Math.ceil(Math.abs(arcAngle) / 45);
				var segAngle = arcAngle / segs;
				var theta = (segAngle / 180) * Math.PI;
				var cosThetaMid = Math.cos(theta / 2);
				var angle = (startAngle / 180) * Math.PI;
				var angleMid;
				var ax = startX - Math.cos(angle) * radius;
				var ay = startY - Math.sin(angle) * radiusY;
				var bx;
				var by;
				var cx;
				var cy;
				var i;

				for (i = 0; i < segs; i++)
				{
					angle += theta;
					angleMid = angle - (theta / 2);
					bx = ax + Math.cos(angle) * radius;
					by = ay + Math.sin(angle) * radiusY;
					cx = ax + Math.cos(angleMid) * (radius / cosThetaMid);
					cy = ay + Math.sin(angleMid) * (radiusY / cosThetaMid);
					brush.curveTo(cx, cy, bx, by);
				}

				return new Point(bx, by);
			};

			DrawingUtils.drawRectangle = function(brush, x, y, width, height)
			{
				if (brush == null)
					throw new Error("Parameter brush must be non-null.");
				if (!(brush instanceof Brush))
					throw new Error("Parameter brush must be an instance of jgatt.graphics.brushes.Brush.");

				var x2 = x + width;
				var y2 = y + height;

				brush.moveTo(x, y);
				brush.lineTo(x2, y);
				brush.lineTo(x2, y2);
				brush.lineTo(x, y2);
				brush.lineTo(x, y);
			};

			DrawingUtils.drawEllipse = function(brush, x, y, radiusX, radiusY)
			{
				if (brush == null)
					throw new Error("Parameter brush must be non-null.");
				if (!(brush instanceof Brush))
					throw new Error("Parameter brush must be an instance of jgatt.graphics.brushes.Brush.");

				x += radiusX;

				brush.moveTo(x, y);
				DrawingUtils.arcTo(brush, x, y, 0, 360, radiusX, radiusY);
			};

		});

	});
	});

	jg_import.define("jgatt.utils.FunctionUtils", function()
	{
	jg_namespace("jgatt.utils", function()
	{

		this.FunctionUtils = jg_static(function(FunctionUtils)
		{

			// Public Static Methods

			FunctionUtils.bind = function(f, scope)
			{
				if (f == null)
					throw new Error("Parameter f must be non-null.");
				if (typeof f !== "function")
					throw new Error("Parameter f must be a function.");

				return function() { return f.apply(scope, arguments); };
			};

		});

	});
	});

	jg_import.define("jgatt.properties.ObservableProperty", function()
	{
	jg_namespace("jgatt.properties", function()
	{

		var ChainedEvent = jg_import("jgatt.events.ChainedEvent");
		var Event = jg_import("jgatt.events.Event");
		var EventData = jg_import("jgatt.events.EventData");
		var MObservable = jg_import("jgatt.events.MObservable");
		var Property = jg_import("jgatt.properties.Property");
		var PropertyEventData = jg_import("jgatt.properties.PropertyEventData");
		var Dictionary = jg_import("jgatt.utils.Dictionary");
		var FunctionUtils = jg_import("jgatt.utils.FunctionUtils");

		this.ObservableProperty = jg_extend(Property, function(ObservableProperty, base)
		{

			// Private Static Methods

			var _defaultChangedComparator = function(oldValue, newValue)
			{
				if (oldValue === newValue)
					return false;

				// handle NaN
				if ((oldValue !== oldValue) && (newValue !== newValue))
					return false;

				return true;
			};

			// Public Events

			this.changed = null;

			// Private Properties

			this._noChaining = false;
			this._changedComparator = null;
			this._onChanged = null;

			// Constructor

			this.constructor = function(name, type, defaultValue, readOnly, noChaining)
			{
				base.constructor.call(this, name, type, defaultValue, readOnly);

				if ((noChaining != null) && (typeof noChaining !== "boolean"))
					throw new Error("Parameter noChaining must be a boolean.");

				this._noChaining = (noChaining === true);

				this.changed = this._noChaining ? new Event("changed", EventData) : new ChainedEvent("changed", MObservable.changed);
			};

			// Public Getters/Setters

			this.noChaining = function()
			{
				return this._noChaining;
			};

			this.changedComparator = function(value)
			{
				if (arguments.length == 0)
					return this._changedComparator;

				if ((value != null) && (typeof value !== "function"))
					throw new Error("Parameter changedComparator must be a function.");

				this._changedComparator = value ? value : null;

				return this;
			};

			this.onChanged = function(value)
			{
				if (arguments.length == 0)
					return this._onChanged;

				if ((value != null) && (typeof value !== "function"))
					throw new Error("Parameter onChanged must be a function.");

				this._onChanged = value ? value : null;

				return this;
			};

			// Public Methods

			this.setInternal = function(target, propertyMap, value)
			{
				value = this.assertType(value, "Value assigned to property " + this._name + " is incompatible with property type.");

				var propertyInfo = propertyMap.get(this);
				if (!propertyInfo)
					propertyInfo = propertyMap.set(this, this.createPropertyInfo(this, target));

				if (propertyInfo.isChanging)
					return false;

				try
				{
					propertyInfo.isChanging = true;

					var oldValue = propertyInfo.value;

					if (this._changedComparator)
					{
						if (!this._changedComparator.call(target, oldValue, value))
							return false;
					}
					else if (!_defaultChangedComparator(oldValue, value))
					{
						return false;
					}

					if (this._setter)
						this._setter.call(target, value);

					propertyInfo.value = value;
					propertyInfo.setupValueChain();

					if (propertyInfo.isObservable)
						target.dispatchEvent(this.changed, new PropertyEventData(this, oldValue, value));
				}
				finally
				{
					propertyInfo.isChanging = false;
				}

				return true;
			};

			// Protected Methods

			this.createPropertyInfo = function(property, target)
			{
				return new ObservableProperty.PropertyInfo(property, target);
			};

		});

		this.ObservableProperty.PropertyInfo = jg_extend(Property.PropertyInfo, function(PropertyInfo, base)
		{

			// Public Properties

			this.cachedValue = null;
			this.isObservable = false;
			this.isChanging = false;
			this.isValueChangingMap = null;

			// Constructor

			this.constructor = function(property, target)
			{
				base.constructor.call(this, property, target);

				this.isObservable = jg_has_mixin(target, MObservable);
				this.isValueChangingMap = new Dictionary();

				this.value_changed = FunctionUtils.bind(this.value_changed, this);

				if (property._onChanged && this.isObservable)
					target.addEventListener(property.changed, property._onChanged, Infinity);
			};

			// Public Methods

			this.setupValueChain = function()
			{
				this.clearValueChain();

				var value = this.value;
				if ((value == null) || !jg_has_mixin(value, MObservable))
					return;

				this.cachedValue = value;

				value.addEventListener(value.changed, this.value_changed, -Infinity);
			};

			this.clearValueChain = function()
			{
				var value = this.cachedValue;
				if (value == null)
					return;

				value.removeEventListener(value.changed, this.value_changed);

				this.cachedValue = null;
			};

			this.value_changed = function(e)
			{
				if (!this.isObservable || this.isChanging || this.isValueChangingMap.has(e) || e.isPropagationStopped())
					return;

				try
				{
					this.isValueChangingMap.set(e, true);

					this.target.dispatchEvent(this.property.changed, e);
				}
				finally
				{
					this.isValueChangingMap.del(e);
				}
			};

		});

	});
	});

	jg_import.define("jgatt.graphics.brushes.TileBrush", function()
	{
	jg_namespace("jgatt.graphics.brushes", function()
	{

		var Matrix = jg_import("jgatt.geom.Matrix");
		var Point = jg_import("jgatt.geom.Point");
		var Brush = jg_import("jgatt.graphics.brushes.Brush");
		var ObservableProperty = jg_import("jgatt.properties.ObservableProperty");

		this.TileBrush = jg_extend(Brush, function(TileBrush, base)
		{

			// Public Properties

			this.stretchMode = new ObservableProperty("stretchMode", String, "fill")
				.writeFilter(function(value)
				{
					switch (value)
					{
						case "none":
						case "fill":
						case "uniform":
						case "uniformToFill":
						case "uniformToWidth":
						case "uniformToHeight":
							return value;
						default:
							return "fill";
					}
				});

			this.alignmentX = new ObservableProperty("alignmentX", Number, 0.5)
				.writeFilter(function(value)
				{
					return ((value > -Infinity) && (value < Infinity)) ? value : 0.5;
				});

			this.alignmentY = new ObservableProperty("alignmentY", Number, 0.5)
				.writeFilter(function(value)
				{
					return ((value > -Infinity) && (value < Infinity)) ? value : 0.5;
				});

			this.tileTransform = new ObservableProperty("tileTransform", Matrix, null)
				.readFilter(function(value)
				{
					return value ? value.clone() : null;
				})
				.writeFilter(function(value)
				{
					return value ? value.clone() : null;
				});

			this.renderTransform = new ObservableProperty("renderTransform", Matrix, null)
				.readFilter(function(value)
				{
					return value ? value.clone() : null;
				})
				.writeFilter(function(value)
				{
					return value ? value.clone() : null;
				});

			this.fitToDrawing = new ObservableProperty("fitToDrawing", Boolean, false);

			// Constructor

			this.constructor = function(stretchMode, alignmentX, alignmentY, tileTransform, renderTransform, fitToDrawing)
			{
				base.constructor.call(this);

				if (stretchMode != null)
					this.set(this.stretchMode, stretchMode);
				if (alignmentX != null)
					this.set(this.alignmentX, alignmentX);
				if (alignmentY != null)
					this.set(this.alignmentY, alignmentY);
				if (tileTransform != null)
					this.set(this.tileTransform, tileTransform);
				if (renderTransform != null)
					this.set(this.renderTransform, renderTransform);
				if (fitToDrawing != null)
					this.set(this.fitToDrawing, fitToDrawing);
			};

			// Protected Methods

			this.computeTileMatrix = function(tileWidth, tileHeight, properties, commands, matrix, bounds)
			{
				var tileMatrix;

				var tileTransform = properties.tileTransform;
				if (tileTransform)
				{
					tileMatrix = tileTransform.clone();

					var p1 = new Point(0, 0);
					var p2 = new Point(tileWidth, 0);
					var p3 = new Point(tileWidth, tileHeight);
					var p4 = new Point(0, tileHeight);

					p1 = tileMatrix.transformPoint(p1);
					p2 = tileMatrix.transformPoint(p2);
					p3 = tileMatrix.transformPoint(p3);
					p4 = tileMatrix.transformPoint(p4);

					var left = Math.min(p1.x, p2.x, p3.x, p4.x);
					var right = Math.max(p1.x, p2.x, p3.x, p4.x);
					var top = Math.min(p1.y, p2.y, p3.y, p4.y);
					var bottom = Math.max(p1.y, p2.y, p3.y, p4.y);

					tileWidth = right - left;
					tileHeight = bottom - top;
					tileMatrix.translate(-left, -top);
				}
				else
				{
					tileMatrix = new Matrix();
				}

				var invertedMatrix;
				if (matrix && matrix.hasInverse())
				{
					invertedMatrix = matrix.clone();
					invertedMatrix.invert();
				}

				var minX = Infinity;
				var minY = Infinity;
				var maxX = -Infinity;
				var maxY = -Infinity;
				var point;
				var i;

				if (bounds && !properties.fitToDrawing)
				{
					var numPoints = bounds.length;
					for (i = 0; i < numPoints; i++)
					{
						point = bounds[i];

						if (invertedMatrix)
							point = invertedMatrix.transformPoint(point);

						minX = Math.min(point.x, minX);
						minY = Math.min(point.y, minY);
						maxX = Math.max(point.x, maxX);
						maxY = Math.max(point.y, maxY);
					}
				}
				else
				{
					var numCommands = commands.length;
					var command;
					for (i = 0; i < numCommands; i++)
					{
						command = commands[i];
						if (command.name == "moveTo")
							point = new Point(command.x, command.y);
						else if (command.name == "lineTo")
							point = new Point(command.x, command.y);
						else if (command.name == "curveTo")
							point = new Point(command.anchorX, command.anchorY);  // control point tangents need to be properly computed
						else
							continue;

						if (invertedMatrix)
							point = invertedMatrix.transformPoint(point);

						minX = Math.min(point.x, minX);
						minY = Math.min(point.y, minY);
						maxX = Math.max(point.x, maxX);
						maxY = Math.max(point.y, maxY);
					}
				}

				if (minX == Infinity)
					minX = minY = maxX = maxY = 0;

				var width = maxX - minX;
				var height = maxY - minY;
				var scaleX;
				var scaleY;
				var offsetX;
				var offsetY;

				switch (properties.stretchMode)
				{
					case "none":
						offsetX = (width - tileWidth) * properties.alignmentX;
						offsetY = (height - tileHeight) * properties.alignmentY;
						tileMatrix.translate(offsetX, offsetY);
						break;
					case "uniform":
						scaleX = (tileWidth > 0) ? (width / tileWidth) : 1;
						scaleY = (tileHeight > 0) ? (height / tileHeight) : 1;
						scaleX = scaleY = Math.min(scaleX, scaleY);
						offsetX = (width - tileWidth * scaleX) * properties.alignmentX;
						offsetY = (height - tileHeight * scaleY) * properties.alignmentY;
						tileMatrix.scale(scaleX, scaleY);
						tileMatrix.translate(offsetX, offsetY);
						break;
					case "uniformToFill":
						scaleX = (tileWidth > 0) ? (width / tileWidth) : 1;
						scaleY = (tileHeight > 0) ? (height / tileHeight) : 1;
						scaleX = scaleY = Math.max(scaleX, scaleY);
						offsetX = (width - tileWidth * scaleX) * properties.alignmentX;
						offsetY = (height - tileHeight * scaleY) * properties.alignmentY;
						tileMatrix.scale(scaleX, scaleY);
						tileMatrix.translate(offsetX, offsetY);
						break;
					case "uniformToWidth":
						scaleX = scaleY = (tileWidth > 0) ? (width / tileWidth) : 1;
						offsetX = (width - tileWidth * scaleX) * properties.alignmentX;
						offsetY = (height - tileHeight * scaleY) * properties.alignmentY;
						tileMatrix.scale(scaleX, scaleY);
						tileMatrix.translate(offsetX, offsetY);
						break;
					case "uniformToHeight":
						scaleX = scaleY = (tileHeight > 0) ? (height / tileHeight) : 1;
						offsetX = (width - tileWidth * scaleX) * properties.alignmentX;
						offsetY = (height - tileHeight * scaleY) * properties.alignmentY;
						tileMatrix.scale(scaleX, scaleY);
						tileMatrix.translate(offsetX, offsetY);
						break;
					default:  // "fill"
						scaleX = (tileWidth > 0) ? (width / tileWidth) : 1;
						scaleY = (tileHeight > 0) ? (height / tileHeight) : 1;
						tileMatrix.scale(scaleX, scaleY);
						break;
				}

				var renderTransform = properties.renderTransform;
				if (renderTransform)
					tileMatrix.concat(renderTransform);

				tileMatrix.translate(minX, minY);

				if (matrix)
					tileMatrix.concat(matrix);

				return tileMatrix;
			};

		});

	});
	});

	jg_import.define("jgatt.properties.ObservableArrayProperty", function()
	{
	jg_namespace("jgatt.properties", function()
	{

		var MObservable = jg_import("jgatt.events.MObservable");
		var ObservableProperty = jg_import("jgatt.properties.ObservableProperty");
		var TypeUtils = jg_import("jgatt.utils.TypeUtils");

		this.ObservableArrayProperty = jg_extend(ObservableProperty, function(ObservableArrayProperty, base)
		{

			// Private Properties

			this._elementType = null;

			// Constructor

			this.constructor = function(name, elementType, defaultValue, readOnly, noChaining)
			{
				if (elementType == null)
					throw new Error("Parameter elementType must be non-null.");
				if (typeof elementType !== "function")
					throw new Error("Parameter elementType must be a class.");

				this._elementType = elementType;

				base.constructor.call(this, name, Array, defaultValue, readOnly, noChaining);
			};

			// Public Getters/Setters

			this.elementType = function()
			{
				return this._elementType;
			};

			// Protected Methods

			this.assertType = function(value, message)
			{
				if (value == null)
					return null;

				if (!(value instanceof Array))
					throw new Error(message);

				var elementType = this._elementType;
				if (elementType === Object)
					return value;

				var elementValue;
				for (var i = 0, l = value.length; i < l; i++)
				{
					elementValue = value[i];
					if ((elementValue == null) || !TypeUtils.isTypeOf(elementValue, elementType))
						throw new Error(message);
				}

				return value;
			};

			this.createPropertyInfo = function(property, target)
			{
				return new ObservableArrayProperty.PropertyInfo(property, target);
			};

		});

		this.ObservableArrayProperty.PropertyInfo = jg_extend(ObservableProperty.PropertyInfo, function(PropertyInfo, base)
		{

			// Public Properties

			this.cachedElementValues = null;

			// Constructor

			this.constructor = function(property, target)
			{
				base.constructor.call(this, property, target);
			};

			// Public Methods

			this.setupValueChain = function()
			{
				this.clearValueChain();

				var value = this.value;
				if (value == null)
					return;

				if (jg_has_mixin(value, MObservable))
				{
					this.cachedValue = value;
					value.addEventListener(value.changed, this.value_changed, -Infinity);
				}

				if (value.length == 0)
					return;

				var elementValues = this.cachedElementValues = [];
				var elementValue;
				for (var i = 0, l = value.length; i < l; i++)
				{
					elementValue = value[i];
					if (jg_has_mixin(elementValue, MObservable))
					{
						elementValues.push(elementValue);
						elementValue.addEventListener(elementValue.changed, this.value_changed, -Infinity);
					}
				}
			};

			this.clearValueChain = function()
			{
				var elementValues = this.cachedElementValues;
				if (elementValues)
				{
					var elementValue;
					for (var i = elementValues.length - 1; i >= 0; i--)
					{
						elementValue = value[i];
						elementValue.removeEventListener(elementValue.changed, this.value_changed);
					}
					this.cachedElementValues = null;
				}

				var value = this.cachedValue;
				if (value != null)
				{
					value.removeEventListener(value.changed, this.value_changed);
					this.cachedValue = null;
				}
			};

		});

	});
	});

	jg_import.define("jgatt.graphics.brushes.GradientFillBrush", function()
	{
	jg_namespace("jgatt.graphics.brushes", function()
	{

		var Matrix = jg_import("jgatt.geom.Matrix");
		var TileBrush = jg_import("jgatt.graphics.brushes.TileBrush");
		var ObservableArrayProperty = jg_import("jgatt.properties.ObservableArrayProperty");
		var ObservableProperty = jg_import("jgatt.properties.ObservableProperty");
		var NumberUtils = jg_import("jgatt.utils.NumberUtils");

		this.GradientFillBrush = jg_extend(TileBrush, function(GradientFillBrush, base)
		{

			// Public Properties

			this.type = new ObservableProperty("type", String, "linear")
				.writeFilter(function(value)
				{
					switch (value)
					{
						case "linear":
						case "radial":
							return value;
						default:
							return "linear";
					}
				});

			this.colors = new ObservableArrayProperty("colors", Number, [])
				.readFilter(function(value)
				{
					return value.concat();
				})
				.writeFilter(function(value)
				{
					return value ? value.concat() : [];
				});

			this.alphas = new ObservableArrayProperty("alphas", Number, [])
				.readFilter(function(value)
				{
					return value.concat();
				})
				.writeFilter(function(value)
				{
					return value ? value.concat() : [];
				});

			this.ratios = new ObservableArrayProperty("ratios", Number, [])
				.readFilter(function(value)
				{
					return value.concat();
				})
				.writeFilter(function(value)
				{
					return value ? value.concat() : [];
				});

			this.focalPointRatio = new ObservableProperty("focalPointRatio", Number, 0)
				.writeFilter(function(value)
				{
					return !isNaN(value) ? NumberUtils.minMax(value, -1, 1) : 0;
				});

			this.gradientWidth = new ObservableProperty("gradientWidth", Number, 100)
				.writeFilter(function(value)
				{
					return ((value > 0) && (value < Infinity)) ? value : 100;
				});

			this.gradientHeight = new ObservableProperty("gradientHeight", Number, 100)
				.writeFilter(function(value)
				{
					return ((value > 0) && (value < Infinity)) ? value : 100;
				});

			// Constructor

			this.constructor = function(type, colors, alphas, ratios, focalPointRatio)
			{
				base.constructor.call(this);

				if (type != null)
					this.set(this.type, type);
				if (colors != null)
					this.set(this.colors, colors);
				if (alphas != null)
					this.set(this.alphas, alphas);
				if (ratios != null)
					this.set(this.ratios, ratios);
				if (focalPointRatio != null)
					this.set(this.focalPointRatio, focalPointRatio);
			};

			// Protected Methods

			this.draw = function(properties, commands, graphics, matrix, bounds)
			{
				var gradientWidth = properties.gradientWidth;
				var gradientHeight = properties.gradientHeight;

				var tileMatrix = new Matrix(gradientWidth, 0, 0, gradientHeight);
				tileMatrix.concat(this.computeTileMatrix(gradientWidth, gradientHeight, properties, commands, matrix, bounds));

				graphics.beginGradientFill(properties.type, properties.colors, properties.alphas, properties.ratios, tileMatrix, properties.focalPointRatio);

				var numCommands = commands.length;
				var command;
				for (var i = 0; i < numCommands; i++)
				{
					command = commands[i];
					if (command.name === "moveTo")
						graphics.moveTo(command.x, command.y);
					else if (command.name === "lineTo")
						graphics.lineTo(command.x, command.y);
					else if (command.name === "curveTo")
						graphics.curveTo(command.controlX, command.controlY, command.anchorX, command.anchorY);
				}

				graphics.endFill();
			};

		});

	});
	});

	jg_import.define("jgatt.graphics.brushes.GroupBrush", function()
	{
	jg_namespace("jgatt.graphics.brushes", function()
	{

		var Brush = jg_import("jgatt.graphics.brushes.Brush");
		var ObservableArrayProperty = jg_import("jgatt.properties.ObservableArrayProperty");

		this.GroupBrush = jg_extend(Brush, function(GroupBrush, base)
		{

			// Public Properties

			this.brushes = new ObservableArrayProperty("brushes", Brush, [])
				.readFilter(function(value)
				{
					return value.concat();
				})
				.writeFilter(function(value)
				{
					return value ? value.concat() : [];
				});

			// Constructor

			this.constructor = function(brushes)
			{
				base.constructor.call(this);

				if (brushes != null)
					this.set(this.brushes, brushes);
			};

			// Protected Methods

			this.draw = function(properties, commands, graphics, matrix, bounds)
			{
				var brushes = properties.brushes;
				var numBrushes = brushes.length;
				var brush;
				var numCommands = commands.length;
				var command;
				var i;
				var j;

				for (i = 0; i < numBrushes; i++)
				{
					brush = brushes[i];
					brush.beginBrush(graphics, matrix, bounds);
					for (j = 0; j < numCommands; j++)
					{
						command = commands[j];
						if (command.name === "moveTo")
							brush.moveTo(command.x, command.y);
						else if (command.name === "lineTo")
							brush.lineTo(command.x, command.y);
						else if (command.name === "curveTo")
							brush.curveTo(command.controlX, command.controlY, command.anchorX, command.anchorY);
					}
					brush.endBrush();
				}
			};

		});

	});
	});

	jg_import.define("jgatt.graphics.brushes.SolidFillBrush", function()
	{
	jg_namespace("jgatt.graphics.brushes", function()
	{

		var Brush = jg_import("jgatt.graphics.brushes.Brush");
		var ObservableProperty = jg_import("jgatt.properties.ObservableProperty");
		var NumberUtils = jg_import("jgatt.utils.NumberUtils");

		this.SolidFillBrush = jg_extend(Brush, function(SolidFillBrush, base)
		{

			// Public Properties

			this.color = new ObservableProperty("color", Number, 0x000000)
				.writeFilter(function(value)
				{
					return !isNaN(value) ? NumberUtils.minMax(Math.floor(value), 0x000000, 0xFFFFFF) : 0x000000;
				});

			this.alpha = new ObservableProperty("alpha", Number, 1)
				.writeFilter(function(value)
				{
					return !isNaN(value) ? NumberUtils.minMax(value, 0, 1) : 1;
				});

			// Constructor

			this.constructor = function(color, alpha)
			{
				base.constructor.call(this);

				if (color != null)
					this.set(this.color, color);
				if (alpha != null)
					this.set(this.alpha, alpha);
			};

			// Protected Methods

			this.draw = function(properties, commands, graphics, matrix, bounds)
			{
				graphics.beginSolidFill(properties.color, properties.alpha);

				var numCommands = commands.length;
				var command;
				for (var i = 0; i < numCommands; i++)
				{
					command = commands[i];
					if (command.name === "moveTo")
						graphics.moveTo(command.x, command.y);
					else if (command.name === "lineTo")
						graphics.lineTo(command.x, command.y);
					else if (command.name === "curveTo")
						graphics.curveTo(command.controlX, command.controlY, command.anchorX, command.anchorY);
				}

				graphics.endFill();
			};

		});

	});
	});

	jg_import.define("jgatt.graphics.brushes.SolidStrokeBrush", function()
	{
	jg_namespace("jgatt.graphics.brushes", function()
	{

		var Brush = jg_import("jgatt.graphics.brushes.Brush");
		var ObservableProperty = jg_import("jgatt.properties.ObservableProperty");
		var NumberUtils = jg_import("jgatt.utils.NumberUtils");

		this.SolidStrokeBrush = jg_extend(Brush, function(SolidStrokeBrush, base)
		{

			// Public Properties

			this.color = new ObservableProperty("color", Number, 0x000000)
				.writeFilter(function(value)
				{
					return !isNaN(value) ? NumberUtils.minMax(Math.floor(value), 0x000000, 0xFFFFFF) : 0x000000;
				});

			this.alpha = new ObservableProperty("alpha", Number, 1)
				.writeFilter(function(value)
				{
					return !isNaN(value) ? NumberUtils.minMax(value, 0, 1) : 1;
				});

			this.thickness = new ObservableProperty("thickness", Number, 1)
				.writeFilter(function(value)
				{
					return ((value > 0) && (value < Infinity)) ? value : 1;
				});

			this.caps = new ObservableProperty("caps", String, "none")
				.writeFilter(function(value)
				{
					switch (value)
					{
						case "none":
						case "round":
						case "square":
							return value;
						default:
							return "none";
					}
				});

			this.joints = new ObservableProperty("joints", String, "miter")
				.writeFilter(function(value)
				{
					switch (value)
					{
						case "miter":
						case "round":
						case "bevel":
							return value;
						default:
							return "miter";
					}
				});

			this.miterLimit = new ObservableProperty("miterLimit", Number, 10)
				.writeFilter(function(value)
				{
					return ((value > 0) && (value < Infinity)) ? value : 10;
				});

			this.pixelHinting = new ObservableProperty("pixelHinting", Boolean, true);

			// Constructor

			this.constructor = function(color, alpha, thickness, caps, joints, miterLimit, pixelHinting)
			{
				base.constructor.call(this);

				if (color != null)
					this.set(this.color, color);
				if (alpha != null)
					this.set(this.alpha, alpha);
				if (thickness != null)
					this.set(this.thickness, thickness);
				if (caps != null)
					this.set(this.caps, caps);
				if (joints != null)
					this.set(this.joints, joints);
				if (miterLimit != null)
					this.set(this.miterLimit, miterLimit);
				if (pixelHinting != null)
					this.set(this.pixelHinting, pixelHinting);
			};

			// Protected Methods

			this.draw = function(properties, commands, graphics, matrix, bounds)
			{
				graphics.setStrokeStyle(properties.thickness, properties.caps, properties.joints, properties.miterLimit, properties.pixelHinting);
				graphics.beginSolidStroke(properties.color, properties.alpha);

				var numCommands = commands.length;
				var command;
				for (var i = 0; i < numCommands; i++)
				{
					command = commands[i];
					if (command.name === "moveTo")
						graphics.moveTo(command.x, command.y);
					else if (command.name === "lineTo")
						graphics.lineTo(command.x, command.y);
					else if (command.name === "curveTo")
						graphics.curveTo(command.controlX, command.controlY, command.anchorX, command.anchorY);
				}

				graphics.endStroke();
			};

		});

	});
	});

	jg_import.define("jgatt.graphics.brushes.StretchMode", function()
	{
	jg_namespace("jgatt.graphics.brushes", function()
	{

		this.StretchMode = jg_static(function(StretchMode)
		{

			// Public Static Constants

			StretchMode.NONE = "none";
			StretchMode.FILL = "fill";
			StretchMode.UNIFORM = "uniform";
			StretchMode.UNIFORM_TO_FILL = "uniformToFill";
			StretchMode.UNIFORM_TO_WIDTH = "uniformToWidth";
			StretchMode.UNIFORM_TO_HEIGHT = "uniformToHeight";

		});

	});
	});

	jg_import.define("jgatt.motion.easers.Easer", function()
	{
	jg_namespace("jgatt.motion.easers", function()
	{

		this.Easer = jg_extend(Object, function(Easer, base)
		{

			// Public Properties

			this.direction = 1;

			// Constructor

			this.constructor = function(direction)
			{
				this.direction = (direction !== undefined) ? direction : 1;
			};

			// Public Methods

			this.ease = function(position)
			{
				if (this.direction > 0)
					return this.easeOverride(position);
				else if (this.direction < 0)
					return 1 - this.easeOverride(1 - position);

				if (position < 0.5)
					return this.easeOverride(position * 2) / 2;
				return 0.5 + (1 - this.easeOverride(2 - position * 2)) / 2;
			};

			// Protected Methods

			this.easeOverride = function(position)
			{
				return position;
			};

		});

	});
	});

	jg_import.define("jgatt.motion.Tween", function()
	{
	jg_namespace("jgatt.motion", function()
	{

		var Event = jg_import("jgatt.events.Event");
		var EventData = jg_import("jgatt.events.EventData");
		var MEventTarget = jg_import("jgatt.events.MEventTarget");
		var Easer = jg_import("jgatt.motion.easers.Easer");
		var MPropertyTarget = jg_import("jgatt.properties.MPropertyTarget");
		var Property = jg_import("jgatt.properties.Property");

		this.Tween = jg_extend(Object, function(Tween, base)
		{

			base = jg_mixin(this, MEventTarget, base);
			base = jg_mixin(this, MPropertyTarget, base);

			// Public Events

			this.begin = new Event("begin", EventData);
			this.end = new Event("end", EventData);
			this.update = new Event("update", EventData);

			// Public Properties

			this.easer = new Property("easer", Easer, null)
				.onWrite(function()
				{
					this.endTween();
				});

			// Private Properties

			this._runningEaser = null;
			this._isRunning = false;

			// Constructor

			this.constructor = function(easer)
			{
				base.constructor.call(this);

				if (easer != null)
					this.set(this.easer, easer);
			};

			// Public Methods

			this.beginTween = function()
			{
				this.endTween();

				if (!this.beginTweenOverride())
					return false;

				this._runningEaser = this.getInternal(this.easer);
				this._isRunning = true;

				this.dispatchEvent(this.begin, new EventData());

				return true;
			};

			this.endTween = function()
			{
				if (!this._isRunning)
					return false;

				this.endTweenOverride();

				this._isRunning = false;

				this.dispatchEvent(this.end, new EventData());

				return true;
			};

			this.updateTween = function(position)
			{
				if (!this._isRunning)
					return false;

				var easer = this._runningEaser;
				if (easer)
					position = easer.ease(position);

				if (!this.updateTweenOverride(position))
					return false;

				this.dispatchEvent(this.update, new EventData());

				return true;
			};

			// Protected Methods

			this.beginTweenOverride = function()
			{
				return false;
			};

			this.endTweenOverride = function()
			{
			};

			this.updateTweenOverride = function(position)
			{
				return false;
			};

		});

	});
	});

	jg_import.define("jgatt.properties.ArrayProperty", function()
	{
	jg_namespace("jgatt.properties", function()
	{

		var Property = jg_import("jgatt.properties.Property");
		var TypeUtils = jg_import("jgatt.utils.TypeUtils");

		this.ArrayProperty = jg_extend(Property, function(ArrayProperty, base)
		{

			// Private Properties

			this._elementType = null;

			// Constructor

			this.constructor = function(name, elementType, defaultValue, readOnly)
			{
				if (elementType == null)
					throw new Error("Parameter elementType must be non-null.");
				if (typeof elementType !== "function")
					throw new Error("Parameter elementType must be a class.");

				this._elementType = elementType;

				base.constructor.call(this, name, Array, defaultValue, readOnly);
			};

			// Public Getters/Setters

			this.elementType = function()
			{
				return this._elementType;
			};

			// Protected Methods

			this.assertType = function(value, message)
			{
				if (value == null)
					return null;

				if (!(value instanceof Array))
					throw new Error(message);

				var elementType = this._elementType;
				if (elementType === Object)
					return value;

				var elementValue;
				for (var i = 0, l = value.length; i < l; i++)
				{
					elementValue = value[i];
					if ((elementValue == null) || !TypeUtils.isTypeOf(elementValue, elementType))
						throw new Error(message);
				}

				return value;
			};

		});

	});
	});

	jg_import.define("jgatt.motion.GroupTween", function()
	{
	jg_namespace("jgatt.motion", function()
	{

		var Tween = jg_import("jgatt.motion.Tween");
		var ArrayProperty = jg_import("jgatt.properties.ArrayProperty");

		this.GroupTween = jg_extend(Tween, function(GroupTween, base)
		{

			// Public Properties

			this.tweens = new ArrayProperty("tweens", Tween, [])
				.readFilter(function(value)
				{
					return value.concat();
				})
				.writeFilter(function(value)
				{
					return value ? value.concat() : [];
				})
				.onWrite(function()
				{
					this.endTween();
				});

			// Private Properties

			this._runningTweens = null;

			// Constructor

			this.constructor = function(tweens, easer)
			{
				base.constructor.call(this, easer);

				if (tweens != null)
					this.set(this.tweens, tweens);
			};

			// Protected Methods

			this.beginTweenOverride = function()
			{
				var runningTweens = [];
				var tweens = this.getInternal(this.tweens);
				var tween;

				for (var i = 0, l = tweens.length; i < l; i++)
				{
					tween = tweens[i];
					if (tween.beginTween())
						runningTweens.push(tween);
				}

				if (runningTweens.length == 0)
					return false;

				this._runningTweens = runningTweens;

				return true;
			};

			this.endTweenOverride = function()
			{
				var runningTweens = this._runningTweens;

				for (var i = 0, l = runningTweens.length; i < l; i++)
					runningTweens[i].endTween();

				this._runningTweens = null;
			};

			this.updateTweenOverride = function(position)
			{
				var runningTweens = this._runningTweens;
				var numTweens = runningTweens.length;
				var tween;

				for (var i = 0; i < numTweens; i++)
				{
					tween = runningTweens[i];
					if (!tween.updateTween(position))
					{
						tween.endTween();
						runningTweens.splice(i, 1);
						i--;
						numTweens--;
					}
				}

				return (runningTweens.length > 0);
			};

		});

	});
	});

	jg_import.define("jgatt.motion.interpolators.Interpolator", function()
	{
	jg_namespace("jgatt.motion.interpolators", function()
	{

		this.Interpolator = jg_extend(Object, function(Interpolator, base)
		{

			// Public Methods

			this.interpolate = function(value1, value2, position)
			{
				return (position < 0.5) ? value1 : value2;
			};

		});

	});
	});

	jg_import.define("jgatt.motion.interpolators.NumberInterpolator", function()
	{
	jg_namespace("jgatt.motion.interpolators", function()
	{

		var Interpolator = jg_import("jgatt.motion.interpolators.Interpolator");
		var NumberUtils = jg_import("jgatt.utils.NumberUtils");

		this.NumberInterpolator = jg_extend(Interpolator, function(NumberInterpolator, base)
		{

			// Public Properties

			this.snap = 0;

			// Constructor

			this.constructor = function(snap)
			{
				this.snap = (snap !== undefined) ? snap : 0;
			};

			// Public Methods

			this.interpolate = function(value1, value2, position)
			{
				var number1 = Number(value1);
				var number2 = Number(value2);

				var number = NumberUtils.interpolate(number1, number2, position);

				var snap = this.snap;
				if (snap > 0)
					number = Math.round(number / snap) * snap;

				return number;
			};

		});

	});
	});

	jg_import.define("jgatt.motion.MethodTween", function()
	{
	jg_namespace("jgatt.motion", function()
	{

		var Tween = jg_import("jgatt.motion.Tween");
		var Interpolator = jg_import("jgatt.motion.interpolators.Interpolator");
		var NumberInterpolator = jg_import("jgatt.motion.interpolators.NumberInterpolator");
		var Property = jg_import("jgatt.properties.Property");
		var Dictionary = jg_import("jgatt.utils.Dictionary");

		this.MethodTween = jg_extend(Tween, function(MethodTween, base)
		{

			// Private Static Constants

			var _DEFAULT_INTERPOLATOR = new NumberInterpolator();

			// Private Static Properties

			var _runningTargets = new Dictionary();

			// Public Properties

			this.target = new Property("target", Object, null)
				.onWrite(function()
				{
					this.endTween();
				});

			this.getter = new Property("getter", Function, null)
				.onWrite(function()
				{
					this.endTween();
				});

			this.setter = new Property("setter", Function, null)
				.onWrite(function()
				{
					this.endTween();
				});

			this.startValue = new Property("startValue", Object, null)
				.onWrite(function()
				{
					this.endTween();
				});

			this.endValue = new Property("endValue", Object, null)
				.onWrite(function()
				{
					this.endTween();
				});

			this.interpolator = new Property("interpolator", Interpolator, null)
				.onWrite(function()
				{
					this.endTween();
				});

			// Private Properties

			this._runningTarget = null;
			this._runningGetter = null;
			this._runningSetter = null;
			this._runningStartValue = null;
			this._runningEndValue = null;
			this._runningInterpolator= null;

			// Constructor

			this.constructor = function(target, getter, setter, startValue, endValue, easer, interpolator)
			{
				base.constructor.call(this, easer);

				if (target != null)
					this.set(this.target, target);
				if (getter != null)
					this.set(this.getter, getter);
				if (setter != null)
					this.set(this.setter, setter);
				if (startValue != null)
					this.set(this.startValue, startValue);
				if (endValue != null)
					this.set(this.endValue, endValue);
				if (interpolator != null)
					this.set(this.interpolator, interpolator);
			};

			// Protected Methods

			this.beginTweenOverride = function()
			{
				var target = this.getInternal(this.target);
				if (target == null)
					return false;

				var getter = this.getInternal(this.getter);
				if (getter == null)
					return false;

				var setter = this.getInternal(this.setter);
				if (setter == null)
					return false;

				var endValue = this.getInternal(this.endValue);
				if (endValue == null)
					return false;

				var startValue = this.getInternal(this.startValue);
				if (startValue == null)
				{
					try
					{
						startValue = getter.call(target);
					}
					catch (e)
					{
						return false;
					}
				}

				var interpolator = this.getInternal(this.interpolator);
				if (!interpolator)
					interpolator = _DEFAULT_INTERPOLATOR;

				this._runningTarget = target;
				this._runningGetter = getter;
				this._runningSetter = setter;
				this._runningStartValue = startValue;
				this._runningEndValue = endValue;
				this._runningInterpolator = interpolator;

				var runningSetters = _runningTargets.get(target);
				if (!runningSetters)
					runningSetters = _runningTargets.set(target, new Dictionary());

				var runningTween = runningSetters.get(setter);
				runningSetters.set(setter, this);

				if (runningTween)
					runningTween.endTween();

				return true;
			};

			this.endTweenOverride = function()
			{
				var target = this._runningTarget;
				var setter = this._runningSetter;

				this._runningTarget = null;
				this._runningGetter = null;
				this._runningSetter = null;
				this._runningStartValue = null;
				this._runningEndValue = null;
				this._runningInterpolator = null;

				var runningSetters = _runningTargets.get(target);
				if (runningSetters.get(setter) !== this)
					return;

				runningSetters.del(setter);

				if (runningSetters.size() > 0)
					return;

				_runningTargets.del(target);
			};

			this.updateTweenOverride = function(position)
			{
				var value = this._runningInterpolator.interpolate(this._runningStartValue, this._runningEndValue, position);

				try
				{
					this._runningSetter.call(this._runningTarget, value);
				}
				catch (e)
				{
					return false;
				}

				return true;
			};

		});

	});
	});

	jg_import.define("jgatt.motion.PropertyTween", function()
	{
	jg_namespace("jgatt.motion", function()
	{

		var Tween = jg_import("jgatt.motion.Tween");
		var Interpolator = jg_import("jgatt.motion.interpolators.Interpolator");
		var NumberInterpolator = jg_import("jgatt.motion.interpolators.NumberInterpolator");
		var MPropertyTarget = jg_import("jgatt.properties.MPropertyTarget");
		var Property = jg_import("jgatt.properties.Property");
		var Dictionary = jg_import("jgatt.utils.Dictionary");

		this.PropertyTween = jg_extend(Tween, function(PropertyTween, base)
		{

			// Private Static Constants

			var _DEFAULT_INTERPOLATOR = new NumberInterpolator();

			// Private Static Properties

			var _runningTargets = new Dictionary();

			// Public Properties

			this.target = new Property("target", Object, null)
				.writeFilter(function(value)
				{
					if ((value != null) && !jg_has_mixin(value, MPropertyTarget))
						throw new Error("Parameter target must have the mixin jgatt.properties.MPropertyTarget.");
					return value;
				})
				.onWrite(function()
				{
					this.endTween();
				});

			this.property = new Property("property", Object, null)
				.writeFilter(function(value)
				{
					if ((value != null) && (typeof value !== "string") && !(value instanceof Property))
						throw new Error("Parameter property must be a string or an instance of jgatt.properties.Property.");
					return value;
				})
				.onWrite(function()
				{
					this.endTween();
				});

			this.startValue = new Property("startValue", Object, null)
				.onWrite(function()
				{
					this.endTween();
				});

			this.endValue = new Property("endValue", Object, null)
				.onWrite(function()
				{
					this.endTween();
				});

			this.interpolator = new Property("interpolator", Interpolator, null)
				.onWrite(function()
				{
					this.endTween();
				});

			// Private Properties

			this._runningTarget = null;
			this._runningProperty = null;
			this._runningStartValue = null;
			this._runningEndValue = null;
			this._runningInterpolator= null;

			// Constructor

			this.constructor = function(target, property, startValue, endValue, easer, interpolator)
			{
				base.constructor.call(this, easer);

				if (target != null)
					this.set(this.target, target);
				if (property != null)
					this.set(this.property, property);
				if (startValue != null)
					this.set(this.startValue, startValue);
				if (endValue != null)
					this.set(this.endValue, endValue);
				if (interpolator != null)
					this.set(this.interpolator, interpolator);
			};

			// Protected Methods

			this.beginTweenOverride = function()
			{
				var target = this.getInternal(this.target);
				if (target == null)
					return false;

				var property = this.getInternal(this.property);
				if (property == null)
					return false;

				if (typeof property === "string")
				{
					property = target[property];
					if (!(property instanceof Property))
						return false;
				}

				var endValue = this.getInternal(this.endValue);
				if (endValue == null)
					return false;

				var startValue = this.getInternal(this.startValue);
				if (startValue == null)
				{
					try
					{
						startValue = target.get(property);
					}
					catch (e)
					{
						return false;
					}
				}

				var interpolator = this.getInternal(this.interpolator);
				if (!interpolator)
					interpolator = _DEFAULT_INTERPOLATOR;

				this._runningTarget = target;
				this._runningProperty = property;
				this._runningStartValue = startValue;
				this._runningEndValue = endValue;
				this._runningInterpolator = interpolator;

				var runningProperties = _runningTargets.get(target);
				if (!runningProperties)
					runningProperties = _runningTargets.set(target, new Dictionary());

				var runningTween = runningProperties.get(property);
				runningProperties.set(property, this);

				if (runningTween)
					runningTween.endTween();

				return true;
			};

			this.endTweenOverride = function()
			{
				var target = this._runningTarget;
				var property = this._runningProperty;

				this._runningTarget = null;
				this._runningProperty = null;
				this._runningStartValue = null;
				this._runningEndValue = null;
				this._runningInterpolator = null;

				var runningProperties = _runningTargets.get(target);
				if (runningProperties.get(property) !== this)
					return;

				runningProperties.del(property);

				if (runningProperties.size() > 0)
					return;

				_runningTargets.del(target);
			};

			this.updateTweenOverride = function(position)
			{
				var value = this._runningInterpolator.interpolate(this._runningStartValue, this._runningEndValue, position);

				try
				{
					this._runningTarget.set(this._runningProperty, value);
				}
				catch (e)
				{
					return false;
				}

				return true;
			};

		});

	});
	});

	jg_import.define("jgatt.motion.TweenRunner", function()
	{
	jg_namespace("jgatt.motion", function()
	{

		var Tween = jg_import("jgatt.motion.Tween");
		var Dictionary = jg_import("jgatt.utils.Dictionary");

		this.TweenRunner = jg_static(function(TweenRunner)
		{

			// Private Static Properties

			var _tweenRunInfo = new Dictionary();
			var _tweenInterval = 0;
			var _tweenTime = 0;

			// Private Static Methods

			var _tweenStep = function()
			{
				var tweenTime = (new Date()).getTime() / 1000;

				var time = tweenTime - _tweenTime;
				if (time < 0)
					time = 0;
				else if (time > 0.1)
					time = 0.1;
				_tweenTime = tweenTime;

				var runInfos = _tweenRunInfo.values();
				var runInfo;
				var position;
				for (var i = 0, l = runInfos.length; i < l; i++)
				{
					runInfo = runInfos[i];

					runInfo.time += time;

					position = runInfo.time / runInfo.duration;
					if (position > 1)
						position = 1;

					if (!runInfo.tween.updateTween(position))
						position = 1;

					if (position == 1)
						TweenRunner.stop(runInfo.tween);
				}
			};

			// Public Static Methods

			TweenRunner.start = function(tween, duration)
			{
				if (tween == null)
					throw new Error("Parameter tween must be non-null.");
				if (!(tween instanceof Tween))
					throw new Error("Parameter tween must be an instance of jgatt.motion.Tween.");

				TweenRunner.stop(tween);

				if (!tween.beginTween())
					return false;

				if (!tween.updateTween(0))
				{
					tween.endTween();
				}
				else if (duration > 0)
				{
					var runInfo = _tweenRunInfo.set(tween, { tween: tween, duration: duration, time: 0 });
					if (_tweenRunInfo.size() == 1)
					{
						_tweenInterval = setInterval(_tweenStep, 1000 / 30);
						_tweenTime = (new Date()).getTime() / 1000;
					}
				}
				else
				{
					tween.updateTween(1);
					tween.endTween();
				}

				return true;
			};

			TweenRunner.stop = function(tween)
			{
				if (tween == null)
					throw new Error("Parameter tween must be non-null.");
				if (!(tween instanceof Tween))
					throw new Error("Parameter tween must be an instance of jgatt.motion.Tween.");

				var runInfo = _tweenRunInfo.get(tween);
				if (!runInfo)
					return false;

				_tweenRunInfo.del(tween);

				if (_tweenRunInfo.size() == 0)
					clearInterval(_tweenInterval);

				tween.endTween();

				return true;
			};

		});

	});
	});

	jg_import.define("jgatt.motion.easers.CubicEaser", function()
	{
	jg_namespace("jgatt.motion.easers", function()
	{

		var Easer = jg_import("jgatt.motion.easers.Easer");

		this.CubicEaser = jg_extend(Easer, function(CubicEaser, base)
		{

			// Constructor

			this.constructor = function(direction)
			{
				base.constructor.call(this, direction);
			};

			// Protected Methods

			this.easeOverride = function(position)
			{
				return position * position * position;
			};

		});

	});
	});

	jg_import.define("jgatt.motion.easers.EaseDirection", function()
	{
	jg_namespace("jgatt.motion.easers", function()
	{

		this.EaseDirection = jg_static(function(EaseDirection)
		{

			// Public Static Constants

			EaseDirection.IN = 1;
			EaseDirection.OUT = -1;
			EaseDirection.IN_OUT = 0;

		});

	});
	});

	jg_import.define("jgatt.utils.Comparator", function()
	{
	jg_namespace("jgatt.utils", function()
	{

		this.Comparator = jg_extend(Object, function(Comparator, base)
		{

			// Public Methods

			this.compare = function(value1, value2)
			{
				return 0;
			};

		});

	});
	});

	jg_import.define("jgatt.utils.AlphabeticComparator", function()
	{
	jg_namespace("jgatt.utils", function()
	{

		var Comparator = jg_import("jgatt.utils.Comparator");

		this.AlphabeticComparator = jg_extend(Comparator, function(AlphabeticComparator, base)
		{

			// Public Methods

			this.compare = function(value1, value2)
			{
				var str1 = String(value1).toLowerCase();
				var str2 = String(value2).toLowerCase();
				if (str1 < str2)
					return -1;
				if (str1 > str2)
					return 1;
				return 0;
			};

		});

	});
	});

	jg_import.define("jgatt.utils.NaturalComparator", function()
	{
	jg_namespace("jgatt.utils", function()
	{

		var Comparator = jg_import("jgatt.utils.Comparator");

		this.NaturalComparator = jg_extend(Comparator, function(NaturalComparator, base)
		{

			// Public Methods

			this.compare = function(value1, value2)
			{
				if (value1 < value2)
					return -1;
				if (value1 > value2)
					return 1;
				return 0;
			};

		});

	});
	});

	jg_import.define("jgatt.utils.ArrayUtils", function()
	{
	jg_namespace("jgatt.utils", function()
	{

		var Comparator = jg_import("jgatt.utils.Comparator");
		var NaturalComparator = jg_import("jgatt.utils.NaturalComparator");

		this.ArrayUtils = jg_static(function(ArrayUtils)
		{

			// Private Static Constants

			var _NATURAL_COMPARATOR = new NaturalComparator();

			// Public Static Methods

			ArrayUtils.indexOf = function(a, value)
			{
				if (a == null)
					throw new Error("Parameter a must be non-null.");
				if (!(a instanceof Array))
					throw new Error("Parameter a must be an array.");

				for (var i = 0, l = a.length; i < l; i++)
				{
					if (a[i] === value)
						return i;
				}

				return -1;
			};

			ArrayUtils.lastIndexOf = function(a, value)
			{
				if (a == null)
					throw new Error("Parameter a must be non-null.");
				if (!(a instanceof Array))
					throw new Error("Parameter a must be an array.");

				for (var i = a.length - 1; i >= 0; i--)
				{
					if (a[i] === value)
						return i;
				}

				return -1;
			};

			ArrayUtils.sort = function(a, comparator)
			{
				if (a == null)
					throw new Error("Parameter a must be non-null.");
				if (!(a instanceof Array))
					throw new Error("Parameter a must be an array.");
				if ((comparator != null) && !(comparator instanceof Comparator))
					throw new Error("Parameter comparator must be an instance of jgatt.utils.Comparator.");

				if (!comparator)
					comparator = _NATURAL_COMPARATOR;

				// use delegate so comparator has scope
				var compare = function(value1, value2)
				{
					return comparator.compare(value1, value2);
				};

				a.sort(compare);
			};

			ArrayUtils.binarySearch = function(a, value, comparator)
			{
				if (a == null)
					throw new Error("Parameter a must be non-null.");
				if (!(a instanceof Array))
					throw new Error("Parameter a must be an array.");
				if ((comparator != null) && !(comparator instanceof Comparator))
					throw new Error("Parameter comparator must be an instance of jgatt.utils.Comparator.");

				var high = a.length - 1;
				if (high < 0)
					return -1;

				if (!comparator)
					comparator = _NATURAL_COMPARATOR;

				var low = 0;
				var mid;
				var comp;

				while (low <= high)
				{
					mid = low + Math.floor((high - low) / 2);
					comp = comparator.compare(value, a[mid]);
					if (comp < 0)
						high = mid - 1;
					else if (comp > 0)
						low = mid + 1;
					else
						return mid;
				}

				return -low - 1;
			};

		});

	});
	});

	jg_import.define("jgatt.utils.FunctionComparator", function()
	{
	jg_namespace("jgatt.utils", function()
	{

		var Comparator = jg_import("jgatt.utils.Comparator");

		this.FunctionComparator = jg_extend(Comparator, function(FunctionComparator, base)
		{

			// Private Properties

			this._f = null;

			// Constructor

			this.constructor = function(f)
			{
				if (f == null)
					throw new Error("Parameter f must be non-null.");
				if (typeof f !== "function")
					throw new Error("Parameter f must be a function.");

				this._f = f;
			};

			// Public Methods

			this.compare = function(value1, value2)
			{
				return this._f(value1, value2);
			};

		});

	});
	});

	jg_import.define("jgatt.utils.GroupComparator", function()
	{
	jg_namespace("jgatt.utils", function()
	{

		var Comparator = jg_import("jgatt.utils.Comparator");

		this.GroupComparator = jg_extend(Comparator, function(GroupComparator, base)
		{

			// Private Properties

			this._comparators = null;

			// Constructor

			this.constructor = function(comparators)
			{
				if (comparators == null)
					throw new Error("Parameter comparators must be non-null.");
				if (!(comparators instanceof Array))
					throw new Error("Parameter comparators must be an array.");

				var comparatorsCopy = [];
				var comparator;
				for (var i = 0, l = comparators.length; i < l; i++)
				{
					comparator = comparators[i];
					if (comparator != null)
					{
						if (!(comparator instanceof Comparator))
							throw new Error("Parameter comparators must be an array containing only instances of jgatt.utils.Comparator.");
						comparatorsCopy.push(comparator);
					}
				}

				this._comparators = comparatorsCopy;
			};

			// Public Methods

			this.compare = function(value1, value2)
			{
				var comparators = this._comparators;
				var comparator;
				var result;
				for (var i = 0, l = comparators.length; i < l; i++)
				{
					comparator = comparators[i];
					result = comparator.compare(value1, value2);
					if (result != 0)
						return result;
				}
				return 0;
			};

		});

	});
	});

	jg_import.define("jgatt.utils.NumericComparator", function()
	{
	jg_namespace("jgatt.utils", function()
	{

		var Comparator = jg_import("jgatt.utils.Comparator");
		var NumberUtils = jg_import("jgatt.utils.NumberUtils");

		this.NumericComparator = jg_extend(Comparator, function(NumericComparator, base)
		{

			// Public Methods

			this.compare = function(value1, value2)
			{
				var num1 = NumberUtils.parseNumber(value1);
				var num2 = NumberUtils.parseNumber(value2);
				if (num1 < num2)
					return -1;
				if (num1 > num2)
					return 1;
				return 0;
			};

		});

	});
	});

	jg_import.define("jgatt.utils.PropertyComparator", function()
	{
	jg_namespace("jgatt.utils", function()
	{

		var MPropertyTarget = jg_import("jgatt.properties.MPropertyTarget");
		var Property = jg_import("jgatt.properties.Property");
		var Comparator = jg_import("jgatt.utils.Comparator");
		var NaturalComparator = jg_import("jgatt.utils.NaturalComparator");

		this.PropertyComparator = jg_extend(Comparator, function(PropertyComparator, base)
		{

			// Private Static Methods

			var _getValue = function(target, property)
			{
				if (target == null)
					return undefined;

				if (typeof property === "string")
				{
					var value = target[property];
					if (value instanceof Property)
						property = value;
					else
						return value;
				}

				if (jg_has_mixin(target, MPropertyTarget))
					return target.get(property);

				return undefined;
			};

			// Private Properties

			this._property = null;
			this._comparator = null;

			// Constructor

			this.constructor = function(property, comparator)
			{
				if (property == null)
					throw new Error("Parameter property must be non-null.");
				if ((typeof property !== "string") && !(property instanceof Property))
					throw new Error("Parameter property must be a string or an instance of jgatt.properties.Property.");
				if ((comparator != null) && !(comparator instanceof Comparator))
					throw new Error("Parameter comparator must be an instance of jgatt.utils.Comparator.");

				this._property = property;
				this._comparator = comparator || new NaturalComparator();
			};

			// Public Methods

			this.compare = function(value1, value2)
			{
				var property = this._property;
				value1 = _getValue(value1, property);
				value2 = _getValue(value2, property);
				return this._comparator.compare(value1, value2);
			};

		});

	});
	});

	jg_import.define("jgatt.utils.ReverseComparator", function()
	{
	jg_namespace("jgatt.utils", function()
	{

		var Comparator = jg_import("jgatt.utils.Comparator");
		var NaturalComparator = jg_import("jgatt.utils.NaturalComparator");

		this.ReverseComparator = jg_extend(Comparator, function(ReverseComparator, base)
		{

			// Private Properties

			this._comparator = null;

			// Constructor

			this.constructor = function(comparator)
			{
				if ((comparator != null) && !(comparator instanceof Comparator))
					throw new Error("Parameter comparator must be an instance of jgatt.utils.Comparator.");

				this._comparator = comparator || new NaturalComparator();
			};

			// Public Methods

			this.compare = function(value1, value2)
			{
				return -this._comparator.compare(value1, value2);
			};

		});

	});
	});

	jg_import.define("jgatt.utils.SequentialNumericComparator", function()
	{
	jg_namespace("jgatt.utils", function()
	{

		var Comparator = jg_import("jgatt.utils.Comparator");

		this.SequentialNumericComparator = jg_extend(Comparator, function(SequentialNumericComparator, base)
		{

			// Private Static Constants

			var _NUMERIC_PATTERN = /\d+/g;

			// Public Methods

			this.compare = function(value1, value2)
			{
				var str1 = String(value1);
				var str2 = String(value2);
				var arr1 = str1.match(_NUMERIC_PATTERN);
				var arr2 = str2.match(_NUMERIC_PATTERN);
				var len1 = arr1.length;
				var len2 = arr2.length;
				var len = (len1 < len2) ? len1 : len2;
				var num1;
				var num2;
				for (var i = 0; i < len; i++)
				{
					num1 = Number(arr1[i]);
					num2 = Number(arr2[i]);
					if (num1 < num2)
						return -1;
					if (num1 > num2)
						return 1;
				}
				if (len1 < len2)
					return -1;
				if (len1 > len2)
					return 1;
				return 0;
			};

		});

	});
	});

	jg_import.define("jgatt.utils.StringUtils", function()
	{
	jg_namespace("jgatt.utils", function()
	{

		this.StringUtils = jg_static(function(StringUtils)
		{

			// Public Static Methods

			StringUtils.escapeHTML = function(str)
			{
				if (str == null)
					return str;

				str = String(str);

				return str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
			};

		});

	});
	});

	jg_import.define("jgatt.validation.ValidateEventData", function()
	{
	jg_namespace("jgatt.validation", function()
	{

		var EventData = jg_import("jgatt.events.EventData");

		this.ValidateEventData = jg_extend(EventData, function(ValidateEventData, base)
		{

			// Private Properties

			this.pass = null;

			// Constructor

			this.constructor = function(pass)
			{
				this.pass = pass;
			};

		});

	});
	});

	jg_import.define("jgatt.validation.ValidatePass", function()
	{
	jg_namespace("jgatt.validation", function(ns)
	{

		var ChainedEvent = jg_import("jgatt.events.ChainedEvent");
		var Event = jg_import("jgatt.events.Event");
		var Comparator = jg_import("jgatt.utils.Comparator");
		var ValidateEventData = jg_import("jgatt.validation.ValidateEventData");

		this.ValidatePass = jg_extend(Object, function(ValidatePass, base)
		{

			// Public Events

			this.invalidated = null;
			this.validated = null;

			// Private Properties

			this._methodName = null;
			this._priority = 0;
			this._targetComparator = null;

			// Constructor

			this.constructor = function(methodName, priority, targetComparator)
			{
				if (methodName == null)
					throw new Error("Parameter methodName must be non-null.");
				if (typeof methodName !== "string")
					throw new Error("Parameter methodName must be a string.");
				if (priority == null)
					throw new Error("Parameter priority must be non-null.");
				if (typeof priority !== "number")
					throw new Error("Parameter priority must be a number.");
				if (isNaN(priority))
					throw new Error("Parameter priority must be a valid number.");
				if ((targetComparator != null) && !(targetComparator instanceof Comparator))
					throw new Error("Parameter targetComparator must be an instance of jgatt.utils.Comparator.");

				this._methodName = methodName;
				this._priority = priority;
				this._targetComparator = targetComparator ? targetComparator : null;

				this.invalidated = ns.MValidateTarget ? new ChainedEvent("invalidated", ns.MValidateTarget.invalidated) : new Event("invalidated", ValidateEventData);
				this.validated = ns.MValidateTarget ? new ChainedEvent("validated", ns.MValidateTarget.validated) : new Event("validated", ValidateEventData);
			};

			// Public Getters/Setters

			this.methodName = function()
			{
				return this._methodName;
			};

			this.priority = function()
			{
				return this._priority;
			};

			this.targetComparator = function()
			{
				return this._targetComparator;
			};

		});

	});
	});

	jg_import.define("jgatt.validation.ValidateQueue", function()
	{
	jg_namespace("jgatt.validation", function()
	{

		var ArrayUtils = jg_import("jgatt.utils.ArrayUtils");
		var Dictionary = jg_import("jgatt.utils.Dictionary");
		var ErrorUtils = jg_import("jgatt.utils.ErrorUtils");

		this.ValidateQueue = jg_static(function(ValidateQueue)
		{

			// Private Static Properties

			var _passesMap = new Dictionary();
			var _passesList = [];
			var _validateInterval = 0;
			var _validateIndex = -1;
			var _isValidating = false;

			// Public Static Methods

			ValidateQueue.enqueue = function(target, pass)
			{
				var targetsMap = _passesMap.get(pass);
				if (!targetsMap)
				{
					targetsMap = _passesMap.set(pass, new Dictionary());

					var passPriority = pass.priority();
					var passAdded = false;
					var pass2;
					for (var i = 0, l = _passesList.length; i < l; i++)
					{
						pass2 = _passesList[i];
						if (passPriority < pass2.priority())
						{
							_passesList.splice(i, 0, pass);
							if (i <= _validateIndex)
								_validateIndex++;
							passAdded = true;
							break;
						}
					}
					if (!passAdded)
						_passesList.push(pass);

					if (!_validateInterval)
						_validateInterval = setInterval(ValidateQueue.validateAll, 1);
				}

				targetsMap.set(target, true);
			};

			ValidateQueue.dequeue = function(target, pass)
			{
				var targetsMap = _passesMap.get(pass);
				if (!targetsMap)
					return;

				targetsMap.del(target);
			};

			ValidateQueue.contains = function(target, pass)
			{
				var targetsMap = _passesMap.get(pass);
				if (!targetsMap)
					return false;

				return targetsMap.has(target);
			};

			ValidateQueue.validateAll = function()
			{
				if (_isValidating)
					return false;

				try
				{
					_isValidating = true;

					var targetsMap;
					var targetsList;
					var target;
					var targetComparator;
					var pass;
					var i;
					var l;

					// validate passes
					for (_validateIndex = 0; _validateIndex < _passesList.length; _validateIndex++)
					{
						pass = _passesList[_validateIndex];
						targetsMap = _passesMap.get(pass);
						targetsList = targetsMap.keys();

						targetComparator = pass.targetComparator();
						if (targetComparator)
							ArrayUtils.sort(targetsList, targetComparator);

						for (i = 0, l = targetsList.length; i < l; i++)
						{
							try
							{
								targetsList[i].validate(pass);
							}
							catch (e)
							{
								ErrorUtils.asyncThrow(e);
							}
						}
					}
					_validateIndex = -1;

					// dequeue passes that contain no targets
					for (i = _passesList.length - 1; i >= 0; i--)
					{
						pass = _passesList[i];
						targetsMap = _passesMap.get(pass);
						if (!targetsMap || (targetsMap.size() == 0))
						{
							_passesMap.del(pass);
							_passesList.splice(i, 1);
						}
					}

					// stop validating if no passes are enqueued
					if (_passesList.length == 0)
					{
						clearInterval(_validateInterval);
						_validateInterval = 0;
					}
				}
				catch (e)
				{
					clearInterval(_validateInterval);
					_validateInterval = 0;
					throw e;
				}
				finally
				{
					_isValidating = false;
				}

				return true;
			};

			ValidateQueue.isValidating = function()
			{
				return _isValidating;
			};

		});

	});
	});

	jg_import.define("jgatt.validation.MValidateTarget", function()
	{
	jg_namespace("jgatt.validation", function()
	{

		var Event = jg_import("jgatt.events.Event");
		var MEventTarget = jg_import("jgatt.events.MEventTarget");
		var Dictionary = jg_import("jgatt.utils.Dictionary");
		var ErrorUtils = jg_import("jgatt.utils.ErrorUtils");
		var ValidateEventData = jg_import("jgatt.validation.ValidateEventData");
		var ValidatePass = jg_import("jgatt.validation.ValidatePass");
		var ValidateQueue = jg_import("jgatt.validation.ValidateQueue");

		this.MValidateTarget = jg_static(function(MValidateTarget)
		{

			// Mixin

			this.mixin = function(base)
			{
				base = jg_mixin(this, MEventTarget, base);
			};

			// Private Static Methods

			var _resolvePass = function(target, pass)
			{
				if (pass == null)
					throw new Error("Parameter pass must be non-null.");

				if (pass instanceof ValidatePass)
					return pass;

				if (typeof pass !== "string")
					throw new Error("Parameter pass must be a string or an instance of jgatt.validation.ValidatePass.");

				var targetPass = target[pass];
				if (!(targetPass instanceof ValidatePass))
					throw new Error("Unknown pass \"" + pass + "\".");

				return targetPass;
			};

			var _passComparator = function(pass1, pass2)
			{
				var priority1 = pass1.priority();
				var priority2 = pass2.priority();
				if (priority1 < priority2)
					return -1;
				if (priority1 > priority2)
					return 1;
				return 0;
			};

			var _batchValidate = function(target, endPass)
			{
				if (target._batchValidateList)
					return false;

				var invalidPasses = target._invalidPasses;
				if (invalidPasses.size() == 0)
					return false;

				var result = false;

				try
				{
					target._batchValidateEndPass = endPass;

					var passesList = target._batchValidateList = invalidPasses.keys();
					var pass;
					var i;

					// remove passes with priorities greater than or equal to endPass priority
					if (endPass)
					{
						var endPassPriority = endPass.priority();
						for (i = passesList.length - 1; i >= 0; i--)
						{
							pass = passesList[i];
							if (pass.priority() >= endPassPriority)
								passesList.splice(i, 1);
						}
					}

					// sort passes by priority
					passesList.sort(_passComparator);

					// validate passes
					i = target._batchValidateIndex = 0;
					while (i < passesList.length)
					{
						pass = passesList[i];
						if (invalidPasses.has(pass))
						{
							try
							{
								result = target.validate(pass) || result;
							}
							catch (e)
							{
								ErrorUtils.asyncThrow(e);
							}
						}
						i = ++target._batchValidateIndex;
					}
				}
				finally
				{
					target._batchValidateList = null;
					target._batchValidateIndex = -1;
					target._batchValidateEndPass = null;
				}

				return result;
			};

			// Public Events

			this.invalidated = new Event("invalidated", ValidateEventData);
			this.validated = new Event("validated", ValidateEventData);

			// Private Properties

			this._invalidPasses = null;
			this._validatingPasses = null;
			this._batchValidateList = null;
			this._batchValidateIndex = -1;
			this._batchValidateEndPass = null;

			// Constructor

			this.constructor = function()
			{
				this._invalidPasses = new Dictionary();
				this._validatingPasses = new Dictionary();
			};

			// Public Methods

			this.invalidate = function(pass)
			{
				pass = _resolvePass(this, pass);

				if (this._invalidPasses.has(pass))
					return false;

				if (this._batchValidateList)
				{
					var passPriority = pass.priority();
					var pass2 = this._batchValidateEndPass;
					if (!pass2 || (passPriority < pass2.priority()))
					{
						var passesList = this._batchValidateList;
						var validateIndex = this._batchValidateIndex;
						var needsAppend = true;
						for (var i = validateIndex, l = passesList.length; i < l; i++)
						{
							pass2 = passesList[i];
							if (passPriority < pass2.priority())
							{
								if (i > validateIndex)
									passesList.splice(i, 0, pass);
								needsAppend = false;
								break;
							}
						}
						if (needsAppend)
							passesList.push(pass);
					}
				}

				this._invalidPasses.set(pass, true);
				ValidateQueue.enqueue(this, pass);
				this.dispatchEvent(pass.invalidated, new ValidateEventData(pass));

				return true;
			};

			this.validate = function(pass)
			{
				if (pass == null)
					return _batchValidate(this);

				pass = _resolvePass(this, pass);

				if (this._validatingPasses.has(pass))
					return false;

				this.validatePreceding(pass);

				if (!this._invalidPasses.has(pass))
					return false;

				this._validatingPasses.set(pass, true);

				var result = false;
				try
				{
					var methodName = pass.methodName();
					var method = this[methodName];
					if (typeof method !== "function")
						throw new Error("Unknown method \"" + methodName + "\".");

					method.call(this);
					result = true;
				}
				catch (e)
				{
					ErrorUtils.asyncThrow(e);
				}

				this.setValid(pass);

				return result;
			};

			this.validatePreceding = function(pass)
			{
				pass = _resolvePass(this, pass);

				if (ValidateQueue.isValidating() || this._batchValidateList)
					return false;

				return _batchValidate(this, pass);
			};

			this.setValid = function(pass)
			{
				if (pass == null)
				{
					var passesList = this._invalidPasses.keys();
					passesList.sort(_passComparator);

					var result = false;
					for (var i = 0, l = passesList.length; i < l; i++)
					{
						pass = passesList[i];
						if (invalidPasses.has(pass))
							result = this.setValid(pass) || result;
					}
					return result;
				}

				pass = _resolvePass(this, pass);

				if (!this._invalidPasses.has(pass))
					return false;

				this._invalidPasses.del(pass);
				this._validatingPasses.del(pass);
				ValidateQueue.dequeue(this, pass);
				this.dispatchEvent(pass.validated, new ValidateEventData(pass));

				return true;
			};

			this.isValid = function(pass)
			{
				if (pass == null)
					return (this._invalidPasses.size() == 0);

				pass = _resolvePass(this, pass);

				return !this._invalidPasses.has(pass);
			};

		});

	});
	});


/***/ }),

/***/ "splunk_time":
/***/ (function(module, exports) {

	/**
	 * Requires:
	 * jg_global
	 * jg_library
	 */

	jg_import.define("splunk.time.TimeZone", function()
	{
	jg_namespace("splunk.time", function()
	{

		this.TimeZone = jg_extend(Object, function(TimeZone, base)
		{

			// Public Methods

			this.getStandardOffset = function()
			{
				return 0;
			};

			this.getOffset = function(time)
			{
				return 0;
			};

		});

	});
	});

	jg_import.define("splunk.time.SimpleTimeZone", function()
	{
	jg_namespace("splunk.time", function()
	{

		var TimeZone = jg_import("splunk.time.TimeZone");

		this.SimpleTimeZone = jg_extend(TimeZone, function(SimpleTimeZone, base)
		{

			// Private Properties

			this._offset = 0;

			// Constructor

			this.constructor = function(offset)
			{
				this._offset = (offset !== undefined) ? offset : 0;
			};

			// Public Methods

			this.getStandardOffset = function()
			{
				return this._offset;
			};

			this.getOffset = function(time)
			{
				return this._offset;
			};

		});

	});
	});

	jg_import.define("splunk.time.LocalTimeZone", function()
	{
	jg_namespace("splunk.time", function()
	{

		var TimeZone = jg_import("splunk.time.TimeZone");

		this.LocalTimeZone = jg_extend(TimeZone, function(LocalTimeZone, base)
		{

			// Public Methods

			this.getStandardOffset = function()
			{
				var date = new Date(0);
				return -date.getTimezoneOffset() * 60;
			};

			this.getOffset = function(time)
			{
				var date = new Date(time * 1000);
				return -date.getTimezoneOffset() * 60;
			};

		});

	});
	});

	jg_import.define("splunk.time.TimeZones", function()
	{
	jg_namespace("splunk.time", function()
	{

		var LocalTimeZone = jg_import("splunk.time.LocalTimeZone");
		var SimpleTimeZone = jg_import("splunk.time.SimpleTimeZone");

		this.TimeZones = jg_static(function(TimeZones)
		{

			// Public Static Constants

			TimeZones.LOCAL = new LocalTimeZone();
			TimeZones.UTC = new SimpleTimeZone(0);

		});

	});
	});

	jg_import.define("splunk.time.DateTime", function()
	{
	jg_namespace("splunk.time", function()
	{

		var SimpleTimeZone = jg_import("splunk.time.SimpleTimeZone");
		var TimeZone = jg_import("splunk.time.TimeZone");
		var TimeZones = jg_import("splunk.time.TimeZones");

		this.DateTime = jg_extend(Object, function(DateTime, base)
		{

			// Private Static Constants

			var _ISO_DATE_TIME_PATTERN = /([\+\-])?(\d{4,})(?:(?:\-(\d{2}))(?:(?:\-(\d{2}))(?:(?:[T ](\d{2}))(?:(?:\:(\d{2}))(?:(?:\:(\d{2}(?:\.\d+)?)))?)?(?:(Z)|([\+\-])(\d{2})(?:\:(\d{2}))?)?)?)?)?/;

			// Private Static Methods

			var _normalizePrecision = function(value)
			{
				return Number(value.toFixed(6));
			};

			var _pad = function(value, digits, fractionDigits)
			{
				/*jsl:ignore*/
				// this comparison triggers the 'useless comparison' error
				if (value != value)
					return "NaN";
				/*jsl:end*/
				if (value == Infinity)
					return "Infinity";
				if (value == -Infinity)
					return "-Infinity";

				digits = (digits !== undefined) ? digits : 0;
				fractionDigits = (fractionDigits !== undefined) ? fractionDigits : 0;

				var str = value.toFixed(20);

				var decimalIndex = str.indexOf(".");
				if (decimalIndex < 0)
					decimalIndex = str.length;
				else if (fractionDigits < 1)
					str = str.substring(0, decimalIndex);
				else
					str = str.substring(0, decimalIndex) + "." + str.substring(decimalIndex + 1, decimalIndex + fractionDigits + 1);

				for (var i = decimalIndex; i < digits; i++)
					str = "0" + str;

				return str;
			};

			// Private Properties

			this._year = 0;
			this._month = 1;
			this._day = 1;
			this._weekday = 0;
			this._hours = 0;
			this._minutes = 0;
			this._seconds = 0;
			this._timeZone = TimeZones.LOCAL;
			this._timeZoneOffset = 0;
			this._time = 0;

			this._isValid = true;

			// Constructor

			this.constructor = function(yearOrTimevalue, month, day, hours, minutes, seconds, timeZone)
			{
				switch (arguments.length)
				{
					case 0:
						var now = new Date();
						this._time = now.getTime() / 1000;
						this._updateProperties();
						break;
					case 1:
						if (typeof yearOrTimevalue === "number")
						{
							this._time = yearOrTimevalue;
							this._updateProperties();
						}
						else if (typeof yearOrTimevalue === "string")
						{
							var matches = _ISO_DATE_TIME_PATTERN.exec(yearOrTimevalue);
							var numMatches = matches ? matches.length : 0;
							var match;

							match = (numMatches > 1) ? matches[1] : null;
							var yearSign = (match == "-") ? -1 : 1;

							match = (numMatches > 2) ? matches[2] : null;
							this._year = match ? yearSign * Number(match) : 0;

							match = (numMatches > 3) ? matches[3] : null;
							this._month = match ? Number(match) : 1;

							match = (numMatches > 4) ? matches[4] : null;
							this._day = match ? Number(match) : 1;

							match = (numMatches > 5) ? matches[5] : null;
							this._hours = match ? Number(match) : 0;

							match = (numMatches > 6) ? matches[6] : null;
							this._minutes = match ? Number(match) : 0;

							match = (numMatches > 7) ? matches[7] : null;
							this._seconds = match ? Number(match) : 0;

							match = (numMatches > 8) ? matches[8] : null;
							var timeZoneUTC = (match == "Z");

							match = (numMatches > 9) ? matches[9] : null;
							var timeZoneSign = (match == "-") ? -1 : 1;

							match = (numMatches > 10) ? matches[10] : null;
							var timeZoneHours = match ? Number(match) : NaN;

							match = (numMatches > 11) ? matches[11] : null;
							var timeZoneMinutes = match ? Number(match) : NaN;

							if (timeZoneUTC)
								this._timeZone = TimeZones.UTC;
							else if (!isNaN(timeZoneHours) && !isNaN(timeZoneMinutes))
								this._timeZone = new SimpleTimeZone(timeZoneSign * (timeZoneHours * 60 + timeZoneMinutes) * 60);
							else
								this._timeZone = TimeZones.LOCAL;

							this._updateTime();
						}
						else
						{
							this._time = NaN;
							this._updateProperties();
						}
						break;
					default:
						if (typeof yearOrTimevalue === "number")
						{
							this._year = yearOrTimevalue;
							this._month = (month !== undefined) ? month : 1;
							this._day = (day !== undefined) ? day : 1;
							this._hours = (hours !== undefined) ? hours : 0;
							this._minutes = (minutes !== undefined) ? minutes : 0;
							this._seconds = (seconds !== undefined) ? seconds : 0;
							this._timeZone = (timeZone instanceof TimeZone) ? timeZone : TimeZones.LOCAL;
							this._updateTime();
						}
						else
						{
							this._time = NaN;
							this._updateProperties();
						}
						break;
				}
			};

			// Public Getters/Setters

			this.getYear = function()
			{
				return this._year;
			};
			this.setYear = function(value)
			{
				this._year = value;
				this._updateTime();
			};

			this.getMonth = function()
			{
				return this._month;
			};
			this.setMonth = function(value)
			{
				this._month = value;
				this._updateTime();
			};

			this.getDay = function()
			{
				return this._day;
			};
			this.setDay = function(value)
			{
				this._day = value;
				this._updateTime();
			};

			this.getWeekday = function()
			{
				return this._weekday;
			};

			this.getHours = function()
			{
				return this._hours;
			};
			this.setHours = function(value)
			{
				this._hours = value;
				this._updateTime();
			};

			this.getMinutes = function()
			{
				return this._minutes;
			};
			this.setMinutes = function(value)
			{
				this._minutes = value;
				this._updateTime();
			};

			this.getSeconds = function()
			{
				return this._seconds;
			};
			this.setSeconds = function(value)
			{
				this._seconds = value;
				this._updateTime();
			};

			this.getTimeZone = function()
			{
				return this._timeZone;
			};
			this.setTimeZone = function(value)
			{
				this._timeZone = (value instanceof TimeZone) ? value : TimeZones.LOCAL;
				this._updateTime();
			};

			this.getTimeZoneOffset = function()
			{
				return this._timeZoneOffset;
			};

			this.getTime = function()
			{
				return this._time;
			};
			this.setTime = function(value)
			{
				this._time = value;
				this._updateProperties();
			};

			// Public Methods

			this.toUTC = function()
			{
				return this.toTimeZone(TimeZones.UTC);
			};

			this.toLocal = function()
			{
				return this.toTimeZone(TimeZones.LOCAL);
			};

			this.toTimeZone = function(timeZone)
			{
				var date = new DateTime();
				date.setTimeZone(timeZone);
				date.setTime(this._time);
				return date;
			};

			this.clone = function()
			{
				var date = new DateTime();
				date.setTimeZone(this._timeZone);
				date.setTime(this._time);
				return date;
			};

			this.equals = function(toCompare)
			{
				return ((this._time === toCompare._time) && (this._timeZoneOffset === toCompare._timeZoneOffset));
			};

			this.toString = function()
			{
				if (!this._isValid)
					return "Invalid Date";

				var str = "";
				if (this._year < 0)
					str += "-" + _pad(-this._year, 4);
				else
					str += _pad(this._year, 4);
				str += "-" + _pad(this._month, 2) + "-" + _pad(this._day, 2);
				str += "T" + _pad(this._hours, 2) + ":" + _pad(this._minutes, 2) + ":" + _pad(this._seconds, 2, 3);

				var timeZoneOffset = this._timeZoneOffset / 60;
				if (timeZoneOffset == 0)
				{
					str += "Z";
				}
				else
				{
					if (timeZoneOffset < 0)
						str += "-";
					else
						str += "+";
					if (timeZoneOffset < 0)
						timeZoneOffset = -timeZoneOffset;
					var timeZoneHours = Math.floor(timeZoneOffset / 60);
					var timeZoneMinutes = Math.floor(timeZoneOffset % 60);
					str += _pad(timeZoneHours, 2) + ":" + _pad(timeZoneMinutes, 2);
				}

				return str;
			};

			this.valueOf = function()
			{
				return this._time;
			};

			// Private Methods

			this._updateTime = function()
			{
				if (this._validate())
				{
					var years = this._year;
					var months = this._month - 1;
					var days = this._day - 1;
					var hours = this._hours;
					var minutes = this._minutes;
					var seconds = this._seconds;

					var secondsPerMinute = 60;
					var secondsPerHour = secondsPerMinute * 60;
					var secondsPerDay = secondsPerHour * 24;

					var totalMonths = months + years * 12;
					var wholeMonths = Math.floor(totalMonths);
					var subMonths = totalMonths - wholeMonths;

					var totalSeconds = seconds + (minutes * secondsPerMinute) + (hours * secondsPerHour) + (days * secondsPerDay);
					var wholeSeconds = Math.floor(totalSeconds);
					var subSeconds = totalSeconds - wholeSeconds;

					var date = new Date(0);
					date.setUTCFullYear(0);
					date.setUTCMonth(wholeMonths);

					if (subMonths != 0)
					{
						date.setUTCMonth(date.getUTCMonth() + 1);
						date.setUTCDate(0);

						var monthsTotalSeconds = date.getUTCDate() * subMonths * secondsPerDay;
						var monthsWholeSeconds = Math.floor(monthsTotalSeconds);
						var monthsSubSeconds = monthsTotalSeconds - monthsWholeSeconds;

						wholeSeconds += monthsWholeSeconds;
						subSeconds += monthsSubSeconds;
						if (subSeconds >= 1)
						{
							subSeconds--;
							wholeSeconds++;
						}

						date.setUTCDate(1);
					}

					date.setUTCSeconds(wholeSeconds);

					var time = (date.getTime() / 1000) + subSeconds;
					var timeZone = this._timeZone;

					this._time = time - timeZone.getOffset(time - timeZone.getStandardOffset());

					this._updateProperties();
				}
			};

			this._updateProperties = function()
			{
				if (this._validate())
				{
					var time = _normalizePrecision(this._time);
					var timeZoneOffset = _normalizePrecision(this._timeZone.getOffset(time));

					var totalSeconds = time + timeZoneOffset;
					var wholeSeconds = Math.floor(totalSeconds);
					var subSeconds = _normalizePrecision(totalSeconds - wholeSeconds);
					if (subSeconds >= 1)
					{
						subSeconds = 0;
						wholeSeconds++;
					}

					var date = new Date(wholeSeconds * 1000);

					this._year = date.getUTCFullYear();
					this._month = date.getUTCMonth() + 1;
					this._day = date.getUTCDate();
					this._weekday = date.getUTCDay();
					this._hours = date.getUTCHours();
					this._minutes = date.getUTCMinutes();
					this._seconds = date.getUTCSeconds() + subSeconds;

					this._time = time;
					this._timeZoneOffset = timeZoneOffset;

					this._validate();
				}
			};

			this._validate = function()
			{
				if (this._isValid)
				{
					this._year *= 1;
					this._month *= 1;
					this._day *= 1;
					this._weekday *= 1;
					this._hours *= 1;
					this._minutes *= 1;
					this._seconds *= 1;
					this._timeZoneOffset *= 1;
					this._time *= 1;
					var checksum = this._year + this._month + this._day + this._weekday + this._hours + this._minutes + this._seconds + this._timeZoneOffset + this._time;
					if (isNaN(checksum) || (checksum == Infinity) || (checksum == -Infinity) || !this._timeZone)
						this._isValid = false;
				}
				else
				{
					this._year *= 1;
					this._time *= 1;
					if ((this._year > -Infinity) && (this._year < Infinity))
					{
						this._month = 1;
						this._day = 1;
						this._hours = 0;
						this._minutes = 0;
						this._seconds = 0;
						this._isValid = true;
					}
					else if ((this._time > -Infinity) && (this._time < Infinity))
					{
						this._isValid = true;
					}
				}

				if (!this._isValid)
				{
					this._year = NaN;
					this._month = NaN;
					this._day = NaN;
					this._weekday = NaN;
					this._hours = NaN;
					this._minutes = NaN;
					this._seconds = NaN;
					this._timeZoneOffset = NaN;
					this._time = NaN;
				}

				return this._isValid;
			};

		});

	});
	});

	jg_import.define("splunk.time.Duration", function()
	{
	jg_namespace("splunk.time", function()
	{

		this.Duration = jg_extend(Object, function(Duration, base)
		{

			// Private Static Constants

			var _ISO_DURATION_PATTERN = /P(?:(\-?\d+(?:\.\d+)?)Y)?(?:(\-?\d+(?:\.\d+)?)M)?(?:(\-?\d+(?:\.\d+)?)D)?(?:T(?:(\-?\d+(?:\.\d+)?)H)?(?:(\-?\d+(?:\.\d+)?)M)?(?:(\-?\d+(?:\.\d+)?)S)?)?/;

			// Public Properties

			this.years = 0;
			this.months = 0;
			this.days = 0;
			this.hours = 0;
			this.minutes = 0;
			this.seconds = 0;

			// Constructor

			this.constructor = function(yearsOrTimestring, months, days, hours, minutes, seconds)
			{
				if ((arguments.length == 1) && (typeof yearsOrTimestring === "string"))
				{
					var matches = _ISO_DURATION_PATTERN.exec(yearsOrTimestring);
					var numMatches = matches ? matches.length : 0;
					var match;

					match = (numMatches > 1) ? matches[1] : null;
					this.years = match ? Number(match) : 0;

					match = (numMatches > 2) ? matches[2] : null;
					this.months = match ? Number(match) : 0;

					match = (numMatches > 3) ? matches[3] : null;
					this.days = match ? Number(match) : 0;

					match = (numMatches > 4) ? matches[4] : null;
					this.hours = match ? Number(match) : 0;

					match = (numMatches > 5) ? matches[5] : null;
					this.minutes = match ? Number(match) : 0;

					match = (numMatches > 6) ? matches[6] : null;
					this.seconds = match ? Number(match) : 0;
				}
				else
				{
					this.years = (typeof yearsOrTimestring === "number") ? yearsOrTimestring : 0;
					this.months = (months !== undefined) ? months : 0;
					this.days = (days !== undefined) ? days : 0;
					this.hours = (hours !== undefined) ? hours : 0;
					this.minutes = (minutes !== undefined) ? minutes : 0;
					this.seconds = (seconds !== undefined) ? seconds : 0;
				}
			};

			// Public Methods

			this.clone = function()
			{
				return new Duration(this.years, this.months, this.days, this.hours, this.minutes, this.seconds);
			};

			this.equals = function(toCompare)
			{
				return ((this.years == toCompare.years) &&
				        (this.months == toCompare.months) &&
				        (this.days == toCompare.days) &&
				        (this.hours == toCompare.hours) &&
				        (this.minutes == toCompare.minutes) &&
				        (this.seconds == toCompare.seconds));
			};

			this.toString = function()
			{
				var str = "";
				str += "P" + this.years + "Y" + this.months + "M" + this.days + "D";
				str += "T" + this.hours + "H" + this.minutes + "M" + this.seconds + "S";
				return str;
			};

		});

	});
	});

	jg_import.define("splunk.time.SplunkTimeZone", function()
	{
	jg_namespace("splunk.time", function()
	{

		var ArrayUtils = jg_import("jgatt.utils.ArrayUtils");
		var TimeZone = jg_import("splunk.time.TimeZone");

		this.SplunkTimeZone = jg_extend(TimeZone, function(SplunkTimeZone, base)
		{

			// Private Properties

			this._standardOffset = 0;
			this._serializedTimeZone = null;

			this._isConstant = false;
			this._offsetList = null;
			this._timeList = null;
			this._indexList = null;

			// Constructor

			this.constructor = function(serializedTimeZone)
			{
				if (serializedTimeZone == null)
					throw new Error("Parameter serializedTimeZone must be non-null.");
				if (typeof serializedTimeZone !== "string")
					throw new Error("Parameter serializedTimeZone must be a string.");

				this._serializedTimeZone = serializedTimeZone;

				this._offsetList = [];
				this._timeList = [];
				this._indexList = [];

				this._parseSerializedTimeZone(serializedTimeZone);
			};

			// Public Methods

			this.getSerializedTimeZone = function()
			{
				return this._serializedTimeZone;
			};

			this.getStandardOffset = function()
			{
				return this._standardOffset;
			};

			this.getOffset = function(time)
			{
				if (this._isConstant)
					return this._standardOffset;

				var offsetList = this._offsetList;
				var numOffsets = offsetList.length;
				if (numOffsets == 0)
					return 0;

				if (numOffsets == 1)
					return offsetList[0];

				var timeList = this._timeList;
				var numTimes = timeList.length;
				if (numTimes == 0)
					return 0;

				var timeIndex;
				if (numTimes == 1)
				{
					timeIndex = 0;
				}
				else
				{
					timeIndex = ArrayUtils.binarySearch(timeList, time);
					if (timeIndex < -1)
						timeIndex = -timeIndex - 2;
					else if (timeIndex == -1)
						timeIndex = 0;
				}

				var offsetIndex = this._indexList[timeIndex];
				return offsetList[offsetIndex];
			};

			// Private Methods

			this._parseSerializedTimeZone = function(serializedTimeZone)
			{
				// ### SERIALIZED TIMEZONE FORMAT 1.0
				// Y-25200 YW 50 44 54
				// Y-28800 NW 50 53 54
				// Y-25200 YW 50 57 54
				// Y-25200 YG 50 50 54
				// @-1633269600 0
				// @-1615129200 1
				// @-1601820000 0
				// @-1583679600 1

				// ### SERIALIZED TIMEZONE FORMAT 1.0
				// C0
				// Y0 NW 47 4D 54

				if (!serializedTimeZone)
					return;

				var entries = serializedTimeZone.split(";");
				var entry;
				for (var i = 0, l = entries.length; i < l; i++)
				{
					entry = entries[i];
					if (entry)
					{
						switch (entry.charAt(0))
						{
							case "C":
								if (this._parseC(entry.substring(1, entry.length)))
									return;
								break;
							case "Y":
								this._parseY(entry.substring(1, entry.length));
								break;
							case "@":
								this._parseAt(entry.substring(1, entry.length));
								break;
						}
					}
				}

				this._standardOffset = this.getOffset(0);
			};

			this._parseC = function(entry)
			{
				// 0

				if (!entry)
					return false;

				var time = Number(entry);
				if (isNaN(time))
					return false;

				this._standardOffset = time;
				this._isConstant = true;

				return true;
			};

			this._parseY = function(entry)
			{
				// -25200 YW 50 44 54

				if (!entry)
					return;

				var elements = entry.split(" ");
				if (elements.length < 1)
					return;

				var element = elements[0];
				if (!element)
					return;

				var offset = Number(element);
				if (isNaN(offset))
					return;

				this._offsetList.push(offset);
			};

			this._parseAt = function(entry)
			{
				// -1633269600 0

				if (!entry)
					return;

				var elements = entry.split(" ");
				if (elements.length < 2)
					return;

				var element = elements[0];
				if (!element)
					return;

				var time = Number(element);
				if (isNaN(time))
					return;

				element = elements[1];
				if (!element)
					return;

				var index = Number(element);
				if (isNaN(index))
					return;

				index = Math.floor(index);
				if ((index < 0) || (index >= this._offsetList.length))
					return;

				this._timeList.push(time);
				this._indexList.push(index);
			};

		});

	});
	});

	jg_import.define("splunk.time.TimeUtils", function()
	{
	jg_namespace("splunk.time", function()
	{

		var DateTime = jg_import("splunk.time.DateTime");
		var Duration = jg_import("splunk.time.Duration");
		var SimpleTimeZone = jg_import("splunk.time.SimpleTimeZone");
		var TimeZones = jg_import("splunk.time.TimeZones");

		this.TimeUtils = jg_static(function(TimeUtils)
		{

			// Public Static Constants

			TimeUtils.EPOCH = new DateTime(0).toUTC();

			// Public Static Methods

			TimeUtils.daysInMonth = function(date)
			{
				date = new DateTime(date.getYear(), date.getMonth() + 1, 0, 0, 0, 0, TimeZones.UTC);
				return date.getDay();
			};

			TimeUtils.addDurations = function(duration1, duration2)
			{
				return new Duration(duration1.years + duration2.years, duration1.months + duration2.months, duration1.days + duration2.days, duration1.hours + duration2.hours, duration1.minutes + duration2.minutes, duration1.seconds + duration2.seconds);
			};

			TimeUtils.addDateDuration = function(date, duration)
			{
				if ((duration.years == 0) && (duration.months == 0) && (duration.days == 0))
					date = date.clone();
				else
					date = new DateTime(date.getYear() + duration.years, date.getMonth() + duration.months, date.getDay() + duration.days, date.getHours(), date.getMinutes(), date.getSeconds(), date.getTimeZone());
				date.setTime(date.getTime() + (duration.hours * 3600 + duration.minutes * 60 + duration.seconds));
				return date;
			};

			TimeUtils.subtractDates = function(date1, date2)
			{
				date2 = date2.toTimeZone(date1.getTimeZone());

				var isNegative = (date1.getTime() < date2.getTime());
				if (isNegative)
				{
					var temp = date1;
					date1 = date2;
					date2 = temp;
				}

				var sameTimeZoneOffset = (date1.getTimeZoneOffset() == date2.getTimeZoneOffset());

				var years;
				var months;
				var days;
				var hours;
				var minutes;
				var seconds;

				var date3;
				if (sameTimeZoneOffset)
				{
					date3 = date1;
				}
				else if ((date1.getYear() == date2.getYear()) && (date1.getMonth() == date2.getMonth()) && (date1.getDay() == date2.getDay()))
				{
					date3 = date2;
				}
				else
				{
					date3 = new DateTime(date1.getYear(), date1.getMonth(), date1.getDay(), date2.getHours(), date2.getMinutes(), date2.getSeconds(), date2.getTimeZone());
					if (date3.getTime() > date1.getTime())
					{
						date3 = new DateTime(date1.getYear(), date1.getMonth(), date1.getDay() - 1, date2.getHours(), date2.getMinutes(), date2.getSeconds(), date2.getTimeZone());
						if ((date3.getTime() < date2.getTime()) || ((date3.getYear() == date2.getYear()) && (date3.getMonth() == date2.getMonth()) && (date3.getDay() == date2.getDay())))
							date3 = date2;
					}
				}

				years = date3.getYear() - date2.getYear();
				months = date3.getMonth() - date2.getMonth();
				days = date3.getDay() - date2.getDay();

				if (sameTimeZoneOffset)
				{
					hours = date3.getHours() - date2.getHours();
					minutes = date3.getMinutes() - date2.getMinutes();
					seconds = date3.getSeconds() - date2.getSeconds();

					if (seconds < 0)
					{
						seconds += 60;
						minutes--;
					}

					if (minutes < 0)
					{
						minutes += 60;
						hours--;
					}

					if (hours < 0)
					{
						hours += 24;
						days--;
					}

					seconds = _normalizePrecision(seconds);
				}
				else
				{
					seconds = date1.getTime() - date3.getTime();
					var wholeSeconds = Math.floor(seconds);
					var subSeconds = _normalizePrecision(seconds - wholeSeconds);
					if (subSeconds >= 1)
					{
						subSeconds = 0;
						wholeSeconds++;
					}

					minutes = Math.floor(wholeSeconds / 60);
					seconds = (wholeSeconds % 60) + subSeconds;

					hours = Math.floor(minutes / 60);
					minutes %= 60;
				}

				if (days < 0)
				{
					date3 = new DateTime(date2.getYear(), date2.getMonth() + 1, 0, 0, 0, 0, TimeZones.UTC);
					days += date3.getDay();
					months--;
				}

				if (months < 0)
				{
					months += 12;
					years--;
				}

				if (isNegative)
				{
					years = -years;
					months = -months;
					days = -days;
					hours = -hours;
					minutes = -minutes;
					seconds = -seconds;
				}

				return new Duration(years, months, days, hours, minutes, seconds);
			};

			TimeUtils.subtractDurations = function(duration1, duration2)
			{
				return new Duration(duration1.years - duration2.years, duration1.months - duration2.months, duration1.days - duration2.days, duration1.hours - duration2.hours, duration1.minutes - duration2.minutes, duration1.seconds - duration2.seconds);
			};

			TimeUtils.subtractDateDuration = function(date, duration)
			{
				if ((duration.years == 0) && (duration.months == 0) && (duration.days == 0))
					date = date.clone();
				else
					date = new DateTime(date.getYear() - duration.years, date.getMonth() - duration.months, date.getDay() - duration.days, date.getHours(), date.getMinutes(), date.getSeconds(), date.getTimeZone());
				date.setTime(date.getTime() - (duration.hours * 3600 + duration.minutes * 60 + duration.seconds));
				return date;
			};

			TimeUtils.multiplyDuration = function(duration, scalar)
			{
				return new Duration(duration.years * scalar, duration.months * scalar, duration.days * scalar, duration.hours * scalar, duration.minutes * scalar, duration.seconds * scalar);
			};

			TimeUtils.divideDuration = function(duration, scalar)
			{
				return new Duration(duration.years / scalar, duration.months / scalar, duration.days / scalar, duration.hours / scalar, duration.minutes / scalar, duration.seconds / scalar);
			};

			TimeUtils.ceilDate = function(date, units)
			{
				var date2 = date.toTimeZone(new SimpleTimeZone(date.getTimeZoneOffset()));
				_ceilDateInternal(date2, units);
				return _toTimeZoneStable(date2, date.getTimeZone());
			};

			TimeUtils.ceilDuration = function(duration, units, referenceDate)
			{
				if (!referenceDate)
					referenceDate = TimeUtils.EPOCH;

				var date = TimeUtils.addDateDuration(referenceDate, duration);
				var isNegative = (date.getTime() < referenceDate.getTime());
				duration = isNegative ? TimeUtils.subtractDates(referenceDate, date) : TimeUtils.subtractDates(date, referenceDate);

				if (!units)
				{
					units = new Duration();
					if (duration.years > 0)
						units.years = 1;
					else if (duration.months > 0)
						units.months = 1;
					else if (duration.days > 0)
						units.days = 1;
					else if (duration.hours > 0)
						units.hours = 1;
					else if (duration.minutes > 0)
						units.minutes = 1;
					else if (duration.seconds > 0)
						units.seconds = 1;
				}

				if (isNegative)
				{
					_floorDurationInternal(duration, units, date);
					return TimeUtils.multiplyDuration(duration, -1);
				}

				_ceilDurationInternal(duration, units, referenceDate);
				return duration;
			};

			TimeUtils.floorDate = function(date, units)
			{
				var date2 = date.toTimeZone(new SimpleTimeZone(date.getTimeZoneOffset()));
				_floorDateInternal(date2, units);
				return _toTimeZoneStable(date2, date.getTimeZone());
			};

			TimeUtils.floorDuration = function(duration, units, referenceDate)
			{
				if (!referenceDate)
					referenceDate = TimeUtils.EPOCH;

				var date = TimeUtils.addDateDuration(referenceDate, duration);
				var isNegative = (date.getTime() < referenceDate.getTime());
				duration = isNegative ? TimeUtils.subtractDates(referenceDate, date) : TimeUtils.subtractDates(date, referenceDate);

				if (!units)
				{
					units = new Duration();
					if (duration.years > 0)
						units.years = 1;
					else if (duration.months > 0)
						units.months = 1;
					else if (duration.days > 0)
						units.days = 1;
					else if (duration.hours > 0)
						units.hours = 1;
					else if (duration.minutes > 0)
						units.minutes = 1;
					else if (duration.seconds > 0)
						units.seconds = 1;
				}

				if (isNegative)
				{
					_ceilDurationInternal(duration, units, date);
					return TimeUtils.multiplyDuration(duration, -1);
				}

				_floorDurationInternal(duration, units, referenceDate);
				return duration;
			};

			TimeUtils.roundDate = function(date, units)
			{
				var date2 = date.toTimeZone(new SimpleTimeZone(date.getTimeZoneOffset()));
				_roundDateInternal(date2, units);
				return _toTimeZoneStable(date2, date.getTimeZone());
			};

			TimeUtils.roundDuration = function(duration, units, referenceDate)
			{
				if (!referenceDate)
					referenceDate = TimeUtils.EPOCH;

				var date = TimeUtils.addDateDuration(referenceDate, duration);
				var isNegative = (date.getTime() < referenceDate.getTime());
				duration = isNegative ? TimeUtils.subtractDates(referenceDate, date) : TimeUtils.subtractDates(date, referenceDate);

				if (!units)
				{
					units = new Duration();
					if (duration.years > 0)
						units.years = 1;
					else if (duration.months > 0)
						units.months = 1;
					else if (duration.days > 0)
						units.days = 1;
					else if (duration.hours > 0)
						units.hours = 1;
					else if (duration.minutes > 0)
						units.minutes = 1;
					else if (duration.seconds > 0)
						units.seconds = 1;
				}

				if (isNegative)
				{
					_roundDurationInternal(duration, units, date);
					return TimeUtils.multiplyDuration(duration, -1);
				}

				_roundDurationInternal(duration, units, referenceDate);
				return duration;
			};

			TimeUtils.normalizeDuration = function(duration, referenceDate)
			{
				if (!referenceDate)
					referenceDate = TimeUtils.EPOCH;

				var date = TimeUtils.addDateDuration(referenceDate, duration);
				return TimeUtils.subtractDates(date, referenceDate);
			};

			TimeUtils.durationToSeconds = function(duration, referenceDate)
			{
				if (!referenceDate)
					referenceDate = TimeUtils.EPOCH;

				var date = TimeUtils.addDateDuration(referenceDate, duration);
				return _normalizePrecision(date.getTime() - referenceDate.getTime());
			};

			TimeUtils.secondsToDuration = function(seconds, referenceDate)
			{
				if (!referenceDate)
					referenceDate = TimeUtils.EPOCH;

				var date = new DateTime(referenceDate.getTime() + seconds).toTimeZone(referenceDate.getTimeZone());
				return TimeUtils.subtractDates(date, referenceDate);
			};

			// Private Static Methods

			var _ceilDateInternal = function(date, units)
			{
				var ceilYear = (units.years > 0);
				var ceilMonth = ceilYear || (units.months > 0);
				var ceilDay = ceilMonth || (units.days > 0);
				var ceilHours = ceilDay || (units.hours > 0);
				var ceilMinutes = ceilHours || (units.minutes > 0);
				var ceilSeconds = ceilMinutes || (units.seconds > 0);

				if (!ceilSeconds)
					return;

				if (date.getSeconds() > 0)
				{
					if (units.seconds > 0)
						date.setSeconds(Math.min(Math.ceil(date.getSeconds() / units.seconds) * units.seconds, 60));
					else
						date.setSeconds(60);
				}

				if (!ceilMinutes)
					return;

				if (date.getMinutes() > 0)
				{
					if (units.minutes > 0)
						date.setMinutes(Math.min(Math.ceil(date.getMinutes() / units.minutes) * units.minutes, 60));
					else
						date.setMinutes(60);
				}

				if (!ceilHours)
					return;

				if (date.getHours() > 0)
				{
					if (units.hours > 0)
						date.setHours(Math.min(Math.ceil(date.getHours() / units.hours) * units.hours, 24));
					else
						date.setHours(24);
				}

				if (!ceilDay)
					return;

				if (date.getDay() > 1)
				{
					var daysInMonth = TimeUtils.daysInMonth(date);
					if (units.days > 0)
						date.setDay(Math.min(Math.ceil((date.getDay() - 1) / units.days) * units.days, daysInMonth) + 1);
					else
						date.setDay(daysInMonth + 1);
				}

				if (!ceilMonth)
					return;

				if (date.getMonth() > 1)
				{
					if (units.months > 0)
						date.setMonth(Math.min(Math.ceil((date.getMonth() - 1) / units.months) * units.months, 12) + 1);
					else
						date.setMonth(12 + 1);
				}

				if (!ceilYear)
					return;

				if (units.years > 0)
					date.setYear(Math.ceil(date.getYear() / units.years) * units.years);
			};

			var _ceilDurationInternal = function(duration, units, referenceDate)
			{
				var ceilYears = (units.years > 0);
				var ceilMonths = ceilYears || (units.months > 0);
				var ceilDays = ceilMonths || (units.days > 0);
				var ceilHours = ceilDays || (units.hours > 0);
				var ceilMinutes = ceilHours || (units.minutes > 0);
				var ceilSeconds = ceilMinutes || (units.seconds > 0);

				var daysInMonth = TimeUtils.daysInMonth(referenceDate);

				if (!ceilSeconds)
					return;

				if (duration.seconds > 0)
				{
					if (units.seconds > 0)
						duration.seconds = Math.min(Math.ceil(duration.seconds / units.seconds) * units.seconds, 60);
					else
						duration.seconds = 60;
					_normalizeDuration(duration, daysInMonth);
				}

				if (!ceilMinutes)
					return;

				if (duration.minutes > 0)
				{
					if (units.minutes > 0)
						duration.minutes = Math.min(Math.ceil(duration.minutes / units.minutes) * units.minutes, 60);
					else
						duration.minutes = 60;
					_normalizeDuration(duration, daysInMonth);
				}

				if (!ceilHours)
					return;

				if (duration.hours > 0)
				{
					if (units.hours > 0)
						duration.hours = Math.min(Math.ceil(duration.hours / units.hours) * units.hours, 24);
					else
						duration.hours = 24;
					_normalizeDuration(duration, daysInMonth);
				}

				if (!ceilDays)
					return;

				if (duration.days > 0)
				{
					if (units.days > 0)
						duration.days = Math.min(Math.ceil(duration.days / units.days) * units.days, daysInMonth);
					else
						duration.days = daysInMonth;
					_normalizeDuration(duration, daysInMonth);
				}

				if (!ceilMonths)
					return;

				if (duration.months > 0)
				{
					if (units.months > 0)
						duration.months = Math.min(Math.ceil(duration.months / units.months) * units.months, 12);
					else
						duration.months = 12;
					_normalizeDuration(duration, daysInMonth);
				}

				if (!ceilYears)
					return;

				if (units.years > 0)
				{
					duration.years = Math.ceil(duration.years / units.years) * units.years;
					_normalizeDuration(duration, daysInMonth);
				}
			};

			var _floorDateInternal = function(date, units)
			{
				var floorYear = (units.years > 0);
				var floorMonth = floorYear || (units.months > 0);
				var floorDay = floorMonth || (units.days > 0);
				var floorHours = floorDay || (units.hours > 0);
				var floorMinutes = floorHours || (units.minutes > 0);
				var floorSeconds = floorMinutes || (units.seconds > 0);

				if (!floorSeconds)
					return;

				if (date.getSeconds() > 0)
				{
					if (units.seconds > 0)
						date.setSeconds(Math.floor(date.getSeconds() / units.seconds) * units.seconds);
					else
						date.setSeconds(0);
				}

				if (!floorMinutes)
					return;

				if (date.getMinutes() > 0)
				{
					if (units.minutes > 0)
						date.setMinutes(Math.floor(date.getMinutes() / units.minutes) * units.minutes);
					else
						date.setMinutes(0);
				}

				if (!floorHours)
					return;

				if (date.getHours() > 0)
				{
					if (units.hours > 0)
						date.setHours(Math.floor(date.getHours() / units.hours) * units.hours);
					else
						date.setHours(0);
				}

				if (!floorDay)
					return;

				if (date.getDay() > 1)
				{
					if (units.days > 0)
						date.setDay(Math.floor((date.getDay() - 1) / units.days) * units.days + 1);
					else
						date.setDay(1);
				}

				if (!floorMonth)
					return;

				if (date.getMonth() > 1)
				{
					if (units.months > 0)
						date.setMonth(Math.floor((date.getMonth() - 1) / units.months) * units.months + 1);
					else
						date.setMonth(1);
				}

				if (!floorYear)
					return;

				if (units.years > 0)
					date.setYear(Math.floor(date.getYear() / units.years) * units.years);
			};

			var _floorDurationInternal = function(duration, units, referenceDate)
			{
				var floorYears = (units.years > 0);
				var floorMonths = floorYears || (units.months > 0);
				var floorDays = floorMonths || (units.days > 0);
				var floorHours = floorDays || (units.hours > 0);
				var floorMinutes = floorHours || (units.minutes > 0);
				var floorSeconds = floorMinutes || (units.seconds > 0);

				var daysInMonth = TimeUtils.daysInMonth(referenceDate);

				if (!floorSeconds)
					return;

				if (duration.seconds > 0)
				{
					if (units.seconds > 0)
						duration.seconds = Math.floor(duration.seconds / units.seconds) * units.seconds;
					else
						duration.seconds = 0;
					_normalizeDuration(duration, daysInMonth);
				}

				if (!floorMinutes)
					return;

				if (duration.minutes > 0)
				{
					if (units.minutes > 0)
						duration.minutes = Math.floor(duration.minutes / units.minutes) * units.minutes;
					else
						duration.minutes = 0;
					_normalizeDuration(duration, daysInMonth);
				}

				if (!floorHours)
					return;

				if (duration.hours > 0)
				{
					if (units.hours > 0)
						duration.hours = Math.floor(duration.hours / units.hours) * units.hours;
					else
						duration.hours = 0;
					_normalizeDuration(duration, daysInMonth);
				}

				if (!floorDays)
					return;

				if (duration.days > 0)
				{
					if (units.days > 0)
						duration.days = Math.floor(duration.days / units.days) * units.days;
					else
						duration.days = 0;
					_normalizeDuration(duration, daysInMonth);
				}

				if (!floorMonths)
					return;

				if (duration.months > 0)
				{
					if (units.months > 0)
						duration.months = Math.floor(duration.months / units.months) * units.months;
					else
						duration.months = 0;
					_normalizeDuration(duration, daysInMonth);
				}

				if (!floorYears)
					return;

				if (units.years > 0)
				{
					duration.years = Math.floor(duration.years / units.years) * units.years;
					_normalizeDuration(duration, daysInMonth);
				}
			};

			var _roundDateInternal = function(date, units)
			{
				var roundYear = (units.years > 0);
				var roundMonth = roundYear || (units.months > 0);
				var roundDay = roundMonth || (units.days > 0);
				var roundHours = roundDay || (units.hours > 0);
				var roundMinutes = roundHours || (units.minutes > 0);
				var roundSeconds = roundMinutes || (units.seconds > 0);

				if (!roundSeconds)
					return;

				if (date.getSeconds() > 0)
				{
					if (units.seconds > 0)
						date.setSeconds(Math.min(Math.round(date.getSeconds() / units.seconds) * units.seconds, 60));
					else if (date.getSeconds() >= 30)
						date.setSeconds(60);
					else
						date.setSeconds(0);
				}

				if (!roundMinutes)
					return;

				if (date.getMinutes() > 0)
				{
					if (units.minutes > 0)
						date.setMinutes(Math.min(Math.round(date.getMinutes() / units.minutes) * units.minutes, 60));
					else if (date.getMinutes() >= 30)
						date.setMinutes(60);
					else
						date.setMinutes(0);
				}

				if (!roundHours)
					return;

				if (date.getHours() > 0)
				{
					if (units.hours > 0)
						date.setHours(Math.min(Math.round(date.getHours() / units.hours) * units.hours, 24));
					else if (date.getHours() >= 12)
						date.setHours(24);
					else
						date.setHours(0);
				}

				if (!roundDay)
					return;

				if (date.getDay() > 1)
				{
					var daysInMonth = TimeUtils.daysInMonth(date);
					if (units.days > 0)
						date.setDay(Math.min(Math.round((date.getDay() - 1) / units.days) * units.days, daysInMonth) + 1);
					else if (date.getDay() >= Math.floor(daysInMonth / 2 + 1))
						date.setDay(daysInMonth + 1);
					else
						date.setDay(1);
				}

				if (!roundMonth)
					return;

				if (date.getMonth() > 1)
				{
					if (units.months > 0)
						date.setMonth(Math.min(Math.round((date.getMonth() - 1) / units.months) * units.months, 12) + 1);
					else if (date.getMonth() >= (6 + 1))
						date.setMonth(12 + 1);
					else
						date.setMonth(1);
				}

				if (!roundYear)
					return;

				if (units.years > 0)
					date.setYear(Math.round(date.getYear() / units.years) * units.years);
			};

			var _roundDurationInternal = function(duration, units, referenceDate)
			{
				var roundYears = (units.years > 0);
				var roundMonths = roundYears || (units.months > 0);
				var roundDays = roundMonths || (units.days > 0);
				var roundHours = roundDays || (units.hours > 0);
				var roundMinutes = roundHours || (units.minutes > 0);
				var roundSeconds = roundMinutes || (units.seconds > 0);

				var daysInMonth = TimeUtils.daysInMonth(referenceDate);

				if (!roundSeconds)
					return;

				if (duration.seconds > 0)
				{
					if (units.seconds > 0)
						duration.seconds = Math.min(Math.round(duration.seconds / units.seconds) * units.seconds, 60);
					else if (duration.seconds >= 30)
						duration.seconds = 60;
					else
						duration.seconds = 0;
					_normalizeDuration(duration, daysInMonth);
				}

				if (!roundMinutes)
					return;

				if (duration.minutes > 0)
				{
					if (units.minutes > 0)
						duration.minutes = Math.min(Math.round(duration.minutes / units.minutes) * units.minutes, 60);
					else if (duration.minutes >= 30)
						duration.minutes = 60;
					else
						duration.minutes = 0;
					_normalizeDuration(duration, daysInMonth);
				}

				if (!roundHours)
					return;

				if (duration.hours > 0)
				{
					if (units.hours > 0)
						duration.hours = Math.min(Math.round(duration.hours / units.hours) * units.hours, 24);
					else if (duration.hours >= 12)
						duration.hours = 24;
					else
						duration.hours = 0;
					_normalizeDuration(duration, daysInMonth);
				}

				if (!roundDays)
					return;

				if (duration.days > 0)
				{
					if (units.days > 0)
						duration.days = Math.min(Math.round(duration.days / units.days) * units.days, daysInMonth);
					else if (duration.days >= Math.floor(daysInMonth / 2))
						duration.days = daysInMonth;
					else
						duration.days = 0;
					_normalizeDuration(duration, daysInMonth);
				}

				if (!roundMonths)
					return;

				if (duration.months > 0)
				{
					if (units.months > 0)
						duration.months = Math.min(Math.round(duration.months / units.months) * units.months, 12);
					else if (duration.months >= 6)
						duration.months = 12;
					else
						duration.months = 0;
					_normalizeDuration(duration, daysInMonth);
				}

				if (!roundYears)
					return;

				if (units.years > 0)
				{
					duration.years = Math.round(duration.years / units.years) * units.years;
					_normalizeDuration(duration, daysInMonth);
				}
			};

			var _toTimeZoneStable = function(date, timeZone)
			{
				var date2 = date.toTimeZone(timeZone);
				if ((date2.getYear() == date.getYear()) && (date2.getMonth() == date.getMonth()) && (date2.getDay() == date.getDay()) &&
				    (date2.getHours() == date.getHours()) && (date2.getMinutes() == date.getMinutes()) && (date2.getSeconds() == date.getSeconds()))
					return date2;

				var date3 = date.clone();
				date3.setTimeZone(timeZone);
				if ((date3.getYear() == date.getYear()) && (date3.getMonth() == date.getMonth()) && (date3.getDay() == date.getDay()) &&
				    (date3.getHours() == date.getHours()) && (date3.getMinutes() == date.getMinutes()) && (date3.getSeconds() == date.getSeconds()))
					return date3;

				return date2;
			};

			var _normalizeDuration = function(duration, daysInMonth)
			{
				var years = duration.years;
				var wholeYears = Math.floor(years);
				var subYears = years - wholeYears;

				var months = duration.months + subYears * 12;
				var wholeMonths = Math.floor(months);
				var subMonths = months - wholeMonths;

				var days = duration.days + subMonths * daysInMonth;
				var wholeDays = Math.floor(days);
				var subDays = days - wholeDays;

				var hours = duration.hours + subDays * 24;
				var wholeHours = Math.floor(hours);
				var subHours = hours - wholeHours;

				var minutes = duration.minutes + subHours * 60;
				var wholeMinutes = Math.floor(minutes);
				var subMinutes = minutes - wholeMinutes;

				var seconds = duration.seconds + subMinutes * 60;
				var wholeSeconds = Math.floor(seconds);
				var subSeconds = _normalizePrecision(seconds - wholeSeconds);
				if (subSeconds >= 1)
				{
					subSeconds = 0;
					wholeSeconds++;
				}

				wholeMinutes += Math.floor(wholeSeconds / 60);
				wholeSeconds %= 60;

				wholeHours += Math.floor(wholeMinutes / 60);
				wholeMinutes %= 60;

				wholeDays += Math.floor(wholeHours / 24);
				wholeHours %= 24;

				wholeMonths += Math.floor(wholeDays / daysInMonth);
				wholeDays %= daysInMonth;

				wholeYears += Math.floor(wholeMonths / 12);
				wholeMonths %= 12;

				duration.years = wholeYears;
				duration.months = wholeMonths;
				duration.days = wholeDays;
				duration.hours = wholeHours;
				duration.minutes = wholeMinutes;
				duration.seconds = wholeSeconds + subSeconds;
			};

			var _normalizePrecision = function(value)
			{
				return Number(value.toFixed(6));
			};

		});

	});
	});


/***/ }),

/***/ "util/htmlcleaner":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("require/underscore"), __webpack_require__("shim/jquery")], __WEBPACK_AMD_DEFINE_RESULT__ = function (_, $) {

	    var HTML_COMMENTS_PATTERN = /<!--.+?-->/gmi;
	    var BAD_NODE_SELECTOR = 'script,link,meta,head,*[type="text/javascript"]';
	    //var ALLOWED_URLS = /^(?:\/[^\/]|https?:|#)/g;
	    var BAD_URL_SCHEMES = /^(?:javascript|jscript|livescript|vbscript|data|about|mocha):/i;
	    var EVENT_HANDLER_ATTRIBUTE_PREFIX = "on";
	    var CSS_NODE_SELECTOR = 'style';
	    var CSS_EXPRESSION_PATTERN = /(^|[\s\W])expression(\s*\()/gmi;
	    var CSS_EXPRESSION_REPLACE = '$1no-xpr$2';
	    var URL_ATTRIBUTES = {
	        link: ['href'],
	        applet: ['code', 'object'],
	        iframe: ['src'],
	        img: ['src'],
	        embed: ['src'],
	        layer: ['src'],
	        a: ['href']
	    };

	    function removeBadNodes($root) {
	        if($root.is(BAD_NODE_SELECTOR)) {
	            return $([]);
	        }
	        $root.find(BAD_NODE_SELECTOR).remove();
	        return $root;
	    }

	    function cleanupUrl(url) {
	        return decodeURIComponent(_.unescape($.trim(url || ''))).replace(/\s/gmi, '');
	    }

	    function isBadUrl(url) {
	        return BAD_URL_SCHEMES.test(cleanupUrl(url));
	    }

	    function cleanAttributes($root) {
	        _($root).each(function (node) {
	            var $node = $(node),
	                nodeName = (node.tagName||'').toLowerCase(),
	                attrs = node.attributes,
	                badNodes= [];
	            _.each(attrs, function (attr) {
	                if (attr) {
	                    var attrName = attr.name.toLowerCase();
	                    if (attrName.indexOf(EVENT_HANDLER_ATTRIBUTE_PREFIX) === 0) {
	                        badNodes.push(attr.name);
	                    } else {
	                        var urlAttrs = URL_ATTRIBUTES[nodeName];
	                        if (urlAttrs && _(urlAttrs).contains(attrName)) {
	                            if (isBadUrl(attr.value)) {
	                                $node.attr(attr.name, '#');
	                            }
	                        }
	                    }
	                }
	            });

	            // removal of nodes needs to happen after the node check occurs
	            _.each(badNodes, function (attr) {
	                $node.removeAttr(attr);
	            });

	            _($node.children()).chain().map($).each(cleanAttributes);
	        });
	    }

	    function stripComments(txt) {
	        return txt.replace(HTML_COMMENTS_PATTERN, '');
	    }

	    function cleanStylesheets($root) {
	        _($('<div />').append($root).find(CSS_NODE_SELECTOR)).each(cleanStylesheet);
	    }
	    
	    function cleanStylesheet(styleNode) {
	        var $style = $(styleNode);
	        var cssText = $style.html();
	        var newText = cleanCssText(cssText);
	        if (cssText != newText) {
	            $style.text(newText);
	        }
	    }

	    function cleanCssText(cssText) {
	        CSS_EXPRESSION_PATTERN.lastIndex = 0;
	        return cssText.replace(CSS_EXPRESSION_PATTERN, CSS_EXPRESSION_REPLACE);
	    }

	    function cleanInlineStyles($html) {
	        $html.find('[style]').removeAttr('style');
	    }

	    /**
	     *
	     * @param htmlText {string}
	     * @param options {object}
	     * @param options.allowInlineStyles {boolean}
	     * @returns {*}
	     */
	    function cleanHtml(htmlText, options) {
	        options || (options = {});
	        // debugger
	        var $html = $(stripComments("<div>" + htmlText + "</div>"));
	        $html = removeBadNodes($html);
	        cleanAttributes($html);
	        cleanStylesheets($html);
	        if (options.allowInlineStyles === false) {
	            cleanInlineStyles($html);
	        }
	        return $html.html();
	    }

	    return {
	        clean: cleanHtml,
	        isBadUrl: isBadUrl,
	        _stripComments: stripComments,
	        _cleanAttributes: cleanAttributes,
	        _removeScripts: removeBadNodes,
	        _cleanStylesheets: cleanStylesheets,
	        _cleanCssText: cleanCssText
	    };

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/controls/TextControl":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	            __webpack_require__("require/underscore"),
	            module,
	            __webpack_require__("views/shared/controls/Control"),
	            __webpack_require__("views/shared/Icon"),
	            __webpack_require__("views/shared/controls/TextControl.pcssm"),
	            __webpack_require__("util/keyboard"),
	            __webpack_require__("helpers/user_agent")
	        ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	            _,
	            module,
	            Control,
	            IconView,
	            css,
	            keyboardUtil,
	            userAgent
	        ) {
	    /**
	     * @constructor
	     * @memberOf views
	     * @name TextControl
	     * @description Text Input with Bootstrap markup
	     * @extends {views.Control}
	     *
	     * @param {Object} options Hash of options
	     * @param {String} options.modelAttribute The attribute on the model to observe and update on selection
	     * @param {Backbone.Model} options.model The model to operate on
	     * @param {String} [options.inputClassName] Class attribute for the input
	     * @param {String} [options.placeholder] Placeholder text to display in the input if browser supports
	     * @param {String} [options.useSyntheticPlaceholder] If true, use the placeholder value
	     * @param {Object} [options.defaultValue] If the modelAttribute in the model is undefined, then
	     *                                        use this value to populate the text input
	     * @param {String} [options.additionalClassNames] Class attribute(s) to add to control
	     * @param {Boolean|Integer} [options.updateOnKeyUp] Update the model with the value on any key-up event. If integer
	     *                                                  then the wait interval in milliseconds for updating the model.
	     * @param {Boolean} [options.canClear] show a clear button
	     * @param {Boolean} [options.autocomplete] the input allows native autocomplete,
	     * @param {Boolean} [options.updateOnAutofill] Should the input update the model in response to browser autofill events,
	     *                                             used for username/password inputs, default is false
	     * @param {String} [options.elementId] Element id attribute(s) to add to control input
	     * @param {String} [options.size] size of the control and it's text, currently only supports 'default' and 'small'.
	     * @param {Boolean} [options.useLocalClassNames] enable css modules and hashed classnames
	     *
	     * @todo [JCS] Do we use prepend and append?
	     */
	    return Control.extend(/** @lends views.TextControl.prototype */{
	        moduleId: module.id,
	        useLocalClassNames: false,
	        constructor: function(options) {
	            _.extend(this, _.pick(options || {}, 'useLocalClassNames'));

	            // switch out the global classnames for local ones if it hasn't already been overridden.
	            if (this.useLocalClassNames && this.css === undefined) {
	                this.css = css;
	            } else if (!this.css) {
	                this.css = this.defaultCSS;
	            }

	            // remove inheritted 'control' className
	            if (this.useLocalClassNames) {
	                this.className = '';
	            }

	            Control.apply(this, arguments);
	        },
	        initialize: function() {
	            var defaults = {
	                inputClassName: '',
	                placeholder: '',
	                prepend: false,
	                append: false,
	                useSyntheticPlaceholder: false,
	                trimLeadingSpace: true,
	                trimTrailingSpace: true,
	                password: false,
	                updateOnKeyUp: false,
	                canClear: false,
	                autocomplete: false,
	                style: 'default',
	                elementId: '',
	                clearOnEsc: true,
	                required: false,
	                pattern: null
	            };
	            _.defaults(this.options, defaults);

	            if (this.options.placeholder && !this.supportsNativePlaceholder()) {
	                this.options.useSyntheticPlaceholder = true;
	            }

	            if (this.options.canClear && this.useLocalClassNames) {
	                this.children.clearIcon = new IconView({icon: 'xCircle'});
	            }

	            Control.prototype.initialize.apply(this, arguments);
	        },
	        events: {
	            'change input[type=password], input[type=text]': function(e) {
	                this.updateClear();
	                this.onInputChange();
	            },
	            'click [data-role=placeholder]': function(e) {
	                this.$input.focus();
	            },
	            'keyup input[type=password], input[type=text]': function(e) {
	                if (e.which === keyboardUtil.KEYS["ESCAPE"] && 
	                    this.options.clearOnEsc) {
	                    
	                    this.clear();
	                }
	                this.updateClear();
	                this.updatePlaceholder();
	                this.trigger("keyup", e, this.$input.val());
	                if (this.options.updateOnKeyUp === true || e.keyCode === keyboardUtil.KEYS['ENTER']) {
	                    this.onInputChange();
	                } else if (_.isNumber(this.options.updateOnKeyUp)) {
	                    if (!this._debouncedOnInputChange) {
	                        this._debouncedOnInputChange = _.debounce(this.onInputChange, this.options.updateOnKeyUp);
	                    }
	                    this._debouncedOnInputChange();
	                }
	            },
	            
	            // SPL-104353 in IE11 and IE10 the text area does not get focus when clicked with a popdown open.
	            // This forces the focus. 
	            'mousedown input[type=password], input[type=text]': function(e) {
	                if (userAgent.isIE()) {
	                    this.$input.focus();
	                }
	            },

	            'mouseup input[type=password], input[type=text]': function(e) { //could result in pasted text
	                this.updateClear();
	                this.updatePlaceholder();
	            },
	            'click [data-role=clear]': function(e) {
	                e.preventDefault();
	                this.clear();
	                this.updateClear();
	                this.updatePlaceholder();
	            },
	            // The input event is fired by Firefox when auto-filling a text box.
	            // This is also fired whenever you right-click and paste text
	            'input input': function() {
	                if (this.options.updateOnAutofill) {
	                    this.updateClear();
	                    this.onInputChange();
	                }
	            }
	        },
	        focus: function() {
	            this.$("input").focus();
	        },
	        onInputChange: function() {
	            var inputValue = this.$input.val();
	            if(this.options.trimLeadingSpace) {
	                inputValue = inputValue.replace(/^\s+/g, '');
	            }
	            if(this.options.trimTrailingSpace) {
	                inputValue = inputValue.replace(/\s+$/g, '');
	            }
	            this.setValue(inputValue, false);
	            this.updatePlaceholder();
	        },

	        updatePlaceholder: function() {
	           if (this.options.useSyntheticPlaceholder)
	               this.$placeholder[this.$input.val() === '' ? 'show' : 'hide']();
	        },
	        supportsNativePlaceholder: function() {
	            return ('placeholder' in document.createElement('input'));
	        },
	        disable: function(){
	            if (this.$input) {
	                this.$input.hide();
	            }
	            if (this.$disabledInput) {
	                this.$disabledInput.css('display', 'inline-block');
	            }
	        },
	        enable: function(){
	            if (this.$input) {
	                this.$input.show();
	            }
	            if (this.$disabledInput) {
	                this.$disabledInput.hide();
	            }
	        },
	        updateClear: function(){
	            this.$clear[this.$input.val() ? 'show' : 'hide']();
	        },
	        clear: function(){
	            this.$input.val('');
	            this.setValue('');
	        },
	        render: function() {
	            this.useLocalClassNames && this.$el.attr('class', this.css.view);

	            if (!this.el.innerHTML) {
	                var template = _.template(this.template, {
	                        options: this.options,
	                        value: (_.isUndefined(this._value) || _.isNull(this._value)) ? '' : this._value,
	                        css: this.css
	                    });

	                this.$el.html(template);
	                this.$input = this.$('input');
	                this.$disabledInput = this.$('[data-role=uneditable-input]');
	                if (this.options.useSyntheticPlaceholder)
	                    this.$placeholder = this.$('[data-role=placeholder]');
	                if (this.options.prepend)
	                    this.$el.addClass(this.css.prepend).prepend(this.options.prepend);
	                if (this.options.append)
	                    this.$el.addClass(this.css.append).append(this.options.append);

	                // Black magic to listen for changes due to auto-filling of the text input by the browser.
	                // In IE, the "change" and "input" events are not fired in this case.
	                if (this.options.updateOnAutofill && userAgent.isIE()) {
	                    this.$input[0].onpropertychange = _.debounce(function() {
	                        if (this.$clear) {
	                            this.updateClear();
	                        }
	                        this.onInputChange();
	                    }.bind(this), 50);
	                }

	                if (this.options.canClear && this.useLocalClassNames) {
	                    this.children.clearIcon.render().replaceAll(this.$('.icon-x-circle'));
	                }
	            } else {
	                if (this.$input.val() !== this._value) {
	                    this.$input.val(this._value);
	                }
	                this.$disabledInput.text(this._value);
	            }
	            this.updatePlaceholder();

	            var additionalClassNames = this.options.additionalClassNames;
	            if(additionalClassNames) {
	                this.$el.addClass(additionalClassNames);
	            }

	            this.$clear = this.$('[data-role=clear]');
	            this.updateClear();

	            return this;
	        },
	        remove: function() {
	            if (this.$input && this.$input.length > 0) {
	                this.$input[0].onpropertychange = null;
	            }
	            return Control.prototype.remove.apply(this, arguments);
	        },
	        defaultCSS: {
	            uneditableInput: 'uneditable-input',
	            input: '',
	            inputCanClear: 'text-clear',
	            inputSearch: 'search-query',
	            prepend: 'input-prepend',
	            append: 'input-append',
	            clear: 'control-clear',
	            placeholder: 'placeholder'
	        },
	        // TODO: the `for` control-controlCid needs to be hooked up to the input with same `id`
	        template: '\
	        <span class="<%- css.uneditableInput %> <%= options.inputClassName %>" data-role="uneditable-input" \
	            <% if(options.enabled){ %>style="display:none"<%}%>><%- value %></span>\
	        <input type="<% if (options.password){%>password<%}else{%>text<%}%>" \
	               name="<%- options.modelAttribute || "" %>" \
	               class="<%- options.style == "search" ? css.inputSearch : css.input %> <%- options.canClear ? css.inputCanClear : "" %> <%- options.inputClassName%>"\
	               value="<%- value %>" \
	               <% if(options.required){ %> required <%}%>\
	               <% if(options.pattern){ %> pattern="<%- options.pattern %>" <%}%>\
	               autocomplete="<% if (options.autocomplete){ %>on<% } else { %>off<% } %>" \
	               <% if(options.elementId){ %>id="<%- options.elementId %>"<%}%> \
	               <% if(options.placeholder && !options.useSyntheticPlaceholder){ %>placeholder="<%- options.placeholder %>"<%}%> \
	               <% if(!options.enabled){ %>style="display:none"<%}%>>\
	            <% if (options.useSyntheticPlaceholder) { %> <span class="<%- css.placeholder %>" data-role="placeholder"><%- options.placeholder %></span><% } %>\
	            <% if (options.canClear) { %><a href="#" class="<%- css.clear %>" data-role="clear" style="display:none"><i class="icon-x-circle"></i></a><% } %>\
	        '
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/controls/Control":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__("require/backbone"),
	    module,
	    __webpack_require__("views/Base")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    Backbone,
	    module,
	    Base
	){
	    /**
	     * @constructor
	     * @memberOf views
	     * @name Control
	     * @description The base Control class for all controls.
	     * @extends {views.Base}
	     */
	    return Base.extend(/** @lends views.Control.prototype */{
	        moduleId: module.id,
	        className: 'control',
	        initialize: function(){
	            Base.prototype.initialize.apply(this, arguments);

	            var defaults = {
	                    defaultValue: '',
	                    enabled: true,
	                    validate: false,
	                    forceUpdate: false,
	                    updateModel: true,
	                    size: 'default'
	            };
	            _.defaults(this.options, defaults);

	            this._setValue(this.options.defaultValue, false);
	            if (this.options.modelAttribute) {
	                this.$el.attr('data-name', this.options.modelAttribute);
	            }

	            if (this.model) {
	                this.activate({skipSetValueRender: true});
	            }

	            this.$el.addClass('control-' + this.options.size);

	            return this;
	        },
	        startListening: function() {
	            if (this.model) {
	                this.listenTo(this.model, 'change:'+this.options.modelAttribute, this.setValueFromModel);
	            }
	        },
	        activate: function(options) {
	            options = options || {};
	            if (this.active) {
	                return Base.prototype.activate.apply(this, arguments);
	            }
	            if (this.model) {
	                this.setValueFromModel(options.skipSetValueRender ? false : true);
	            }
	            return Base.prototype.activate.apply(this, arguments);
	        },
	        /**
	         * Public value accessor
	         */
	        getValue: function(){
	            return this._value;
	        },
	        getModelAttribute: function() {
	            return this.options.modelAttribute;
	        },
	        /**
	         * Set Value and Update Model,
	         * @param {Any} value the new value to assign to the control. If the updateModel flag was
	         * set to true in the constructor, then this will also update the model's value
	         * @param {Boolean} render if true, then render the control to display the updated value
	         * @param {Object} options additional options to control behavior
	         *     @param {Boolean} [options.silent = false]  if true, then don't trigger a change event
	         *     from the model or control
	         */
	        setValue: function(value, render, options){
	            options = options || {};
	            var returnValue = this._setValue(value, render, options.silent);
	            if (this.options.updateModel) {
	                this.updateModel(options);
	            }
	            return returnValue;
	        },
	        /**
	         * Set Value. Does not update model.
	         */
	        _setValue: function(value, render, suppressEvent){
	            value = this.normalizeValue(value);
	            if (this._value !== value) {
	                var oldValue = this._value;

	                this._value = value;

	                (render === false) || this.render(); // if render is undefined, render anyway.

	                if (!suppressEvent) {
	                    this.trigger('change', value, oldValue, this);
	                }
	            } else {
	                if (render) {
	                    this.render();
	                }
	            }
	            return this;
	        },
	        /**
	         * Override this method if the value needs to be normalized before being used. No options are passed by the base control.
	         */
	        normalizeValue: function(value, options) {
	            return value;
	        },
	        /**
	         * Unsets value from the model
	         */
	        unsetValue: function() {
	            this.model.unset(this.getModelAttribute());
	        },
	        /**
	         * Gets the value to use in the control from the model. The default behavior is to return the value
	         * of the modelAttribute. Render is called except on initialize.
	         */
	        setValueFromModel: function(render) {
	            this._setValue(this.model.get(this.options.modelAttribute), render);
	            return this;
	        },
	        /**
	         * Applies the value from the control to the model. Subclasses should call this in response to user
	         * interaction
	         */
	        updateModel: function(options) {
	            options = options || {};
	            var updateOptions = {
	                validate: this.options.validate,
	                forceUpdate: this.options.forceUpdate
	            };
	            $.extend(true, updateOptions, options);

	            if (this.model) {
	                return (this.model[this.options.save ? 'save' : 'set']
	                    (this.getUpdatedModelAttributes(), updateOptions));
	            }
	            return true;
	        },
	        /**
	         * Returns a dictionary of attribute key-value pairs to apply when updating the model.
	         * Can be overridden by subclasses as needed.
	         */
	        getUpdatedModelAttributes: function() {
	            var updatedAttrs = {};
	            updatedAttrs[this.options.modelAttribute] = this._value;
	            return updatedAttrs;
	        },
	        enable: function() {
	            this.$el.removeClass('disabled');
	        },
	        disable: function() {
	            this.$el.addClass('disabled');
	        }
	    });

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/controls/TextControl.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(297);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./TextControl.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./TextControl.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "util/splunkd_utils":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/splunk.util"),
	        __webpack_require__("stubs/splunk.config"),
	        __webpack_require__("util/general_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, splunkUtils, splunkConfig, generalUtils) {
	        
	        var SYSTEM = "system",
	            GLOBAL = "global",
	            APP = "app",
	            USER = "user",
	            NOBODY = "nobody",
	            WILDCARD = "-",
	            VERBOSE = "verbose",
	            FAST = "fast",
	            SMART = "smart",
	            RISKY_COMMAND = 'risky_command',
	            FATAL = 'fatal',
	            ERROR = 'error',
	            WARNING = 'warn',
	            INFO = 'info',
	            NETWORK_ERROR = 'network_error',
	            NOT_FOUND = '404',
	            DEFAULT_LOCALE = 'en-US';
	        
	        var fullpath = function(path, options) {
	            options = options || {};
	            var isServicesPath = /^\/services/.test(path),
	                isAbsolute = /^\/.*/.test(path),
	                isFullPath = /^http[s]?:\/\//.test(path);

	            //return if it is already a full path
	            if (isFullPath) {
	                return path;
	            }

	            //return if not a relative path
	            if (isAbsolute && !isServicesPath){
	                return path;
	            } else if (isAbsolute && isServicesPath) {
	                return splunkConfig.SPLUNKD_PATH + path;
	            }

	            // If we don't have an app name (explicitly or implicitly), we default to /services/
	            if (!options.app && !options.owner) {
	                return splunkConfig.SPLUNKD_PATH + "/services/" + path;
	            }

	            // Get the app and owner, first from the passed in namespace or
	            // default to wild cards
	            var owner = options.owner || WILDCARD;
	            var app   = options.app || WILDCARD;

	            options.sharing = (options.sharing || "").toLowerCase();
	             
	            // Modify the owner and app appropriately based on the sharing parameter
	            if (options.sharing === APP || options.sharing === GLOBAL) {
	                owner = NOBODY;
	            } else if (options.sharing === SYSTEM) {
	                owner = NOBODY;
	                app = SYSTEM;
	            }
	            return splunkConfig.SPLUNKD_PATH + "/servicesNS/" + encodeURIComponent(owner) + "/" + encodeURIComponent(app) + "/" + path;
	        };
	        
	        var xhrErrorResponseParser = function(response, id) {
	            var responseData = {}, 
	                isValidJSON = true,
	                messages = [];
	            id = id || _("object from SplunkD").t();
	                        
	            if(response.hasOwnProperty('responseText') && response.hasOwnProperty('getResponseHeader')) {
	               var contentType = response.getResponseHeader('Content-Type');
	               if (contentType && (contentType.indexOf('application/json') > -1) && response.responseText) {
	                    try {
	                        responseData = JSON.parse(response.responseText);
	                    }
	                    catch(e) {
	                        isValidJSON = false;
	                    }
	                }
	            }
	                        
	            // have to maintain compatibility with older models that have the response wrapped in a "data" attribute
	            if(response.hasOwnProperty('data')) {
	                responseData = responseData.data;
	            }
	            
	            if (response.hasOwnProperty('status')) {
	                if (response.status == 404 && $.isEmptyObject(responseData)) {
	                    messages.push(createMessageObject(
	                        NOT_FOUND,
	                        splunkUtils.sprintf(
	                            _('Could not retrieve %s. Make sure that this resource exists and has the correct permissions.').t(),
	                            id
	                        )
	                    ));
	                } else if (response.status == 0 || response.status == 12029) {
	                    messages.push(createMessageObject(NETWORK_ERROR, _('Your network connection may have been lost or Splunk may be down.').t()));
	                }
	            }
	            
	            if (!isValidJSON) {
	                messages.push(createMessageObject(ERROR, splunkUtils.sprintf(_('Invalid JSON from: %s.').t(), id)));
	            } else if (responseData.messages) {
	                messages = messages.concat(parseMessagesObject(responseData.messages));
	            } else if (response.messages) {
	                var responseMessages = parseMessagesObject(response.messages);
	                if (responseMessages.length) {
	                    messages = messages.concat(responseMessages);
	                } else {
	                    messages.push(createMessageObject(ERROR, _('Server error').t()));
	                }
	            } else if (_.isString(response)) {
	                messages.push(createMessageObject(ERROR, response));
	            }
	            
	            if (!messages.length) {
	                messages.push(createMessageObject(ERROR, _('Server error').t()));
	            }
	            
	            return messages;
	        };

	        var prepareSyncOptions = function(options, baseUrl) {
	            var appOwner = {},
	                defaults = {data: {output_mode: 'json'}};

	            if (options && options.data){
	                appOwner = $.extend(appOwner, { //JQuery purges undefined
	                    app: options.data.app || undefined,
	                    owner: options.data.owner || undefined,
	                    sharing: options.data.sharing || undefined
	                });
	                delete options.data.app;
	                delete options.data.owner;
	                delete options.data.sharing;
	            }
	            defaults.url = fullpath(baseUrl, appOwner);
	            return $.extend(true, defaults, options || {});
	        };
	        
	        var nameFromString = function(str) {
	            str = str || "";
	            return str.toLowerCase().replace(/\s/g, "_").replace(/\W/g, "");
	        };

	        var quoteSearchFilterValue = function(value) {
	            // Reusing string-quoting semantics of JSON.stringify()
	            // Backslash-escapes quotes and backslashes in the value
	            // 'foo\bar "baz"' -> '"foo\\bar \"baz\"'
	            return JSON.stringify(String(value));
	        };

	        var createSearchFilterString = function(value, keys, options) {
	            var values = (value) ? (value.match(generalUtils.VALUES_REGEX) || []): [];
	            options = options || {};
	            return _(keys).map(function(key) {
	                if (values.length) {
	                    var result = '(' + _.chain(values)
	                            .map(function(value) {
	                                // if value has quote around it remove quotes
	                                if (value.match(generalUtils.QUOTES_REGEX)) {
	                                    var len = value.length;
	                                    value = value.substring(1, len-1);
	                                }
	                                //escape quotes
	                                return [key, '="*', value.replace(/'/g,"\\'").replace(/"/g,'\\"'), '*"'].join('');
	                            },this)
	                            .join(' AND ')
	                            .value();
	                    // If we have a conditional filter to add, AND it with the current key
	                    if (options.conditions && options.conditions[key]) {
	                        result += " AND " + options.conditions[key];
	                    }
	                    return result  + ")";
	                } else {
	                    return [key, '=*'].join('');
	                }
	            },this).join(' OR ');
	        };

	        var createSearchFilterObj = function(value, keys) {
	            var values = (value) ? (value.match(generalUtils.VALUES_REGEX) || []): [],
	            filterObj = {}; 

	            if (values.length) {
	                var matches = [];
	                _(values).each(function(value){
	                    if (value.match(generalUtils.QUOTES_REGEX)) {
	                        var len = value.length;
	                        value = value.substring(1, len-1);
	                    }
	                    matches.push(value.replace(/'/g,"\\'").replace(/"/g,'\"'));
	                },this);   

	                _(keys).each(function(key) {
	                    filterObj[key] = matches;
	                }, this);
	            }
	            return filterObj;
	        };

	        var parseError = function(error) {
	            var passedErrors = {},
	                parsedError;

	            if (error.responseText) {
	                try {
	                    parsedError = JSON.parse(error.responseText);
	                }
	                catch(e) {
	                    parsedError = {};
	                }
	                if (parsedError.messages) {
	                    _.each(parsedError.messages, function(value) {
	                        passedErrors['splunkD:' + value.type] = value.text;
	                    });
	                }
	            } else {
	                passedErrors = error;
	            }
	            return passedErrors;
	        };

	        var createMessageObject = function(type, message, help) {
	            type = type.toLowerCase();

	            var jsonStart = message.indexOf("~!~{");
	            var jsonEnd = message.lastIndexOf("}~!~");
	            var jsonMsg;
	            var messageText = message;

	            if (jsonStart != -1 && jsonEnd != -1) {
	                try
	                {
	                    var jsonBlock = message.slice(jsonStart+3, jsonEnd+1);
	                    jsonMsg = JSON.parse(jsonBlock);
	                    messageText = jsonMsg.errorMessageEnglish;
	                }
	                catch (e) {
	                }
	            }
	            // Handle structured message
	            return ({
	                key: _.uniqueId('splunkd_' + type),
	                type: type,
	                message: messageText,
	                text: messageText,
	                help: help
	            });

	        };
	        
	        var parseMessagesObject = function(messages) {
	            if(!messages) {
	                return [];
	            }
	            return _(messages).map(function(message) {
	                return createMessageObject(message.type, message.text, message.help || "");
	            });
	        };

	        
	        var messagesContainsOneOfTypes = function(messages, types){
	            if (messages) {
	                for(var i = 0; i < messages.length; i++) {
	                    if (_.indexOf(types, messages[i].type) != -1) {
	                        return true;
	                    }
	                }
	            }
	            return false;
	        };
	        
	        var filterMessagesByTypes = function(messages, types) {
	            var filteredMessages = [];
	            if (messages) {
	                for(var i = 0; i < messages.length; i++) {
	                    if (_.indexOf(types, messages[i].type) != -1) {
	                        filteredMessages.push(messages[i]);
	                    }
	                }
	            }
	            return filteredMessages;
	        };
	        
	        /**
	         * Munge the difference between what splunkd outputs and what the renderer expects for message type.
	         *
	         * Namely splunkd has a 'fatal' type that we re-map to 'error', and splunkd uses 'warn' where the renderer
	         * wants 'warning'.
	         */
	        var normalizeType = function(type) {
	            if(type === FATAL) {
	                return ERROR;
	            }
	            if(type === WARNING) {
	                return 'warning';
	            }
	            return type;
	        };
	        
	        var addAnchorsToWildcardArray = function(wildcardArray) {
	            return _.map(wildcardArray, function(wildcard){
	                if (!/^\^/.test(wildcard)){
	                    return "^" + wildcard;
	                }
	                return wildcard;
	            });
	        };
	        
	        var createSplunkDMessage = function(type, text) {
	            return {
	                messages: [{
	                    type: type,
	                    text: text
	                }]
	            };
	        };

	        var getSharingLabel = function(sharing) {
	            switch (sharing) {
	                case USER:
	                    return _("Private").t();
	                case APP:
	                    return _("App").t();
	                case GLOBAL:
	                    return _("Global").t();
	                case SYSTEM:
	                    return _("Global").t();
	            }
	        };

	        var getPermissionLabel = function(sharing, owner) {
	            switch (sharing) {
	                case USER:
	                    return splunkUtils.sprintf(_("Private. Owned by %s.").t(), owner);
	                case APP:
	                    return splunkUtils.sprintf(_("Shared in App. Owned by %s.").t(), owner);
	                case GLOBAL:
	                case SYSTEM:
	                    return splunkUtils.sprintf(_("Shared Globally. Owned by %s.").t(), owner);
	            }
	            return "";
	        };
	        
	        var normalizeValuesForPOST = function(values) {
	            var valuesCopy = $.extend(true, {}, values);
	            _.each(valuesCopy, function(value, key) {
	                if (typeof(value) === "boolean") {
	                    if (value) {
	                        valuesCopy[key] = "1";
	                    } else {
	                        valuesCopy[key] = "0";
	                    }
	                }              
	            });
	            return valuesCopy;
	        };
	        
	        var normalizeBooleanTo01String = function(value) {
	            var bool = splunkUtils.normalizeBoolean(value);
	            if (bool) {
	                return "1";
	            }
	            return "0";
	        };
	        
	        var isExistingEntity = function(payload) {
	            if (
	        		payload && 
	        		payload.entry && 
	        		_.isArray(payload.entry) && 
	        		payload.entry[0].links && 
	        		payload.entry[0].links.alternate && 
	        		!/.\/_new$/.test(payload.entry[0].links.alternate)
	            ) {
	                return true;
	            }
	            return false;
	        };
	         
	        var getHeaders = function(headersString) {
	            var headers = {};
	            var headerLines = headersString.split("\n");
	            for(var i = 0; i < headerLines.length; i++) {
	                if (headerLines[i].trim() !== "") {
	                    var headerParts = headerLines[i].split(": ");
	                    headers[headerParts[0]] = headerParts[1];
	                }
	            }
	            return headers;
	        };

	        /**
	         * A utility function for translating a jquery response object (jqXHR) to the format expected
	         * by consumers of the sdk.
	         * @param  {jqXHR} response
	         * @return {Object} formatted response data
	         */
	        var convertToSDKResponse = function(response) {
	            return {
	                status: response.status,
	                // If the response is successful, 'error' will be 'success' to conform with sdk api
	                error: response.statusText,
	                data: response.responseJSON,
	                response: {
	                    statusCode: response.status,
	                    headers: getHeaders(response.getAllResponseHeaders())
	                }
	            };
	        };

	        return {
	            // constants for splunkd message types
	            RISKY_COMMAND: RISKY_COMMAND,
	            FATAL: FATAL,
	            ERROR: ERROR,
	            WARNING: WARNING,
	            INFO: INFO,
	            NOT_FOUND: NOT_FOUND,
	            NETWORK_ERROR: NETWORK_ERROR,
	            
	            //constants for ACL
	            SYSTEM: SYSTEM,
	            GLOBAL: GLOBAL,
	            APP: APP,
	            USER: USER,
	            NOBODY: NOBODY,
	            WILDCARD:  WILDCARD,
	            
	            //constants for the adhoc search level
	            VERBOSE: VERBOSE,
	            FAST: FAST,
	            SMART: SMART,

	            //constans for filters
	            VALUES_REGEX: generalUtils.VALUES_REGEX,
	            QUOTES_REGEX: generalUtils.QUOTES_REGEX,

	            DEFAULT_LOCALE: DEFAULT_LOCALE,

	            fullpath: fullpath,
	            prepareSyncOptions: prepareSyncOptions,
	            nameFromString: nameFromString,
	            quoteSearchFilterValue: quoteSearchFilterValue,
	            createSearchFilterString: createSearchFilterString,
	            createSearchFilterObj: createSearchFilterObj,
	            parseError: parseError,
	            parseMessagesObject: parseMessagesObject,
	            createMessageObject: createMessageObject,
	            messagesContainsOneOfTypes: messagesContainsOneOfTypes,
	            addAnchorsToWildcardArray: addAnchorsToWildcardArray,
	            createSplunkDMessage: createSplunkDMessage,
	            getSharingLabel: getSharingLabel,
	            getPermissionLabel: getPermissionLabel,
	            normalizeType: normalizeType,
	            filterMessagesByTypes: filterMessagesByTypes,
	            xhrErrorResponseParser: xhrErrorResponseParser,
	            normalizeValuesForPOST: normalizeValuesForPOST,
	            normalizeBooleanTo01String: normalizeBooleanTo01String,
	            isExistingEntity: isExistingEntity,
	            getHeaders: getHeaders,
	            convertToSDKResponse: convertToSDKResponse
	        };
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "helpers/user_agent":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("require/underscore")], __WEBPACK_AMD_DEFINE_RESULT__ = function(_) {

	    /*
	     * Based on following browsers supported by Splunk and sample user agent strings:
	     *
	     * Chrome 26 - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537.31"
	     * Firefox 21 - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:21.0) Gecko/20100101 Firefox/21.0"
	     * Safari 6 - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8) AppleWebKit/536.25 (KHTML, like Gecko) Version/6.0 Safari/536.25"
	     * IE 10 - "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"
	     * IE 9 - "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
	     * IE 8 - "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)"
	     * IE 7 - "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"
	     *
	     * (not officially supported)
	     *
	     * Safari (iOS iPhone) - "Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"
	     * Safari (iOS iPad) - "Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"
	     */

	    var TESTS = {
	        Chrome: /chrome/i,
	        Firefox: /firefox/i,
	        Safari: /safari/i,
	        //User-agent string has been changed for IE11
	        //Here is the sample user-agent string: "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko"
	        IE: /(?=.*msie ([\d.]+))|(?=.*trident)(?=.*rv\:([\d.]+))/i,
	        IE11: /(?=.*trident)(?=.*rv\:11)/i,
	        IE10: /msie 10\.0/i,
	        IE9: /msie 9\.0/i,
	        IE8: /msie 8\.0/i,
	        IE7: /msie 7\.0/i,
	        SafariiPhone: /iPhone/,
	        SafariiPad: /iPad/
	    };

	    var IE_URL_LIMIT = 2048;

	    var helper = {

	        // put this here so it can be mocked in unit tests
	        agentString: window.navigator.userAgent,

	        // add methods for each of the test regexes
	        isChrome: function() { return TESTS.Chrome.test(helper.agentString); },
	        isFirefox: function() { return TESTS.Firefox.test(helper.agentString); },
	        isIE: function() { return TESTS.IE.test(helper.agentString); },
	        isIE11: function() { return TESTS.IE11.test(helper.agentString); },
	        isIE10: function() { return TESTS.IE10.test(helper.agentString); },
	        isIE9: function() { return TESTS.IE9.test(helper.agentString); },
	        isIE8: function() { return TESTS.IE8.test(helper.agentString); },
	        isIE7: function() { return TESTS.IE7.test(helper.agentString); },
	        // Safari is a little more complicated
	        isSafari: function() { return !helper.isChrome() && !helper.isSafariiPhone() && !helper.isSafariiPad() && TESTS.Safari.test(helper.agentString); },
	        isSafariiPhone: function() { return TESTS.SafariiPhone.test(helper.agentString); },
	        isSafariiPad: function() { return TESTS.SafariiPad.test(helper.agentString); },
	        isiOS: function() { return helper.isSafariiPhone() || helper.isSafariiPad(); },

	        isIELessThan: function(testVersion) {
	            return helper.isIE() && parseFloat((TESTS.IE.exec(helper.agentString).sort(function(a, b) {return b - a;}))[0]) < testVersion;
	        },

	        isInIE7DocumentMode: function() {
	            return document.documentMode == 7 ? true : false;
	        },

	        hasUrlLimit: function() {
	            return helper.isIE() ? true : false;
	        },
	        getUrlLimit: function() {
	            return helper.hasUrlLimit() ? IE_URL_LIMIT : Infinity;
	        },

	        getChromeVersion: function() {
	            return parseFloat(helper.agentString.split(" Chrome/")[1]) || undefined;
	        }

	    };

	    // memoize all of the things
	    _(_.functions(helper)).chain().each(function(fnName) { helper[fnName] = _(helper[fnName]).memoize(); });

	    return helper;

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "validation/ValidationMixin":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    __webpack_require__("require/backbone"),
	    __webpack_require__("contrib/backbone-validation-amd")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        Backbone
	        // backbone-validation
	        ){
	        /**
	         * Custom Validator Example:
	         *
	         *     _.extend(Backbone.Validation.validators, {
	         *         myValidator: function(value, attr, customValue, model) {
	         *             if(value !== customValue){
	         *                 return 'error';
	         *             }
	         *         }
	         *     });
	         *
	         *  Custom Patterns Example:
	         *
	         *     _.extend(Backbone.Validation.patterns, {
	         *         myPattern: /my-pattern/,
	         *         email: /my-much-better-email-regex/
	         *     });
	         *      
	         * Custom Messages
	         * Replace the existing error messages with ones that use the
	         * ControlGroup's label as the placeholder instead of the model attribute name
	         * @mixin validation
	         */
	        _.extend(Backbone.Validation.messages, {
	            required: '{label} is required',
	            acceptance: '{label} must be accepted',
	            min: '{label} must be greater than or equal to {1}',
	            max: '{label} must be less than or equal to {1}',
	            range: '{label} must be between {1} and {2}',
	            length: '{label} must be {1} characters',
	            minLength: '{label} must be at least {1} characters',
	            maxLength: '{label} must be at most {1} characters',
	            rangeLength: '{label} must be between {1} and {2} characters',
	            oneOf: '{label} must be one of: {1}',
	            equalTo: '{label} must be the same as {1}',
	            pattern: '{label} must be a valid {1}'
	        });

	        return Backbone.Validation.mixin;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));



/***/ }),

/***/ "views/shared/splunkbar/help/MenuContents.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(299);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuContents.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuContents.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "contrib/backbone-validation-amd":
/***/ (function(module, exports, __webpack_require__) {

	// Backbone.Validation v0.9.1
	//
	// Copyright (c) 2011-2014 Thomas Pedersen
	// Distributed under MIT License
	//
	// Documentation and full license available at:
	// http://thedersen.com/projects/backbone-validation
	(function (factory) {
	  if (true) {
	    module.exports = factory(__webpack_require__("require/backbone"), __webpack_require__("require/underscore"));
	  } else if (typeof define === 'function' && define.amd) {
	    define(['backbone', 'underscore'], factory);
	  }
	}(function (Backbone, _) {
	  Backbone.Validation = (function(_){
	    'use strict';
	  
	    // Default options
	    // ---------------
	  
	    var defaultOptions = {
	      forceUpdate: false,
	      selector: 'name',
	      labelFormatter: 'sentenceCase',
	      valid: Function.prototype,
	      invalid: Function.prototype
	    };
	  
	  
	    // Helper functions
	    // ----------------
	  
	    // Formatting functions used for formatting error messages
	    var formatFunctions = {
	      // Uses the configured label formatter to format the attribute name
	      // to make it more readable for the user
	      formatLabel: function(attrName, model) {
	        return defaultLabelFormatters[defaultOptions.labelFormatter](attrName, model);
	      },
	  
	      // Replaces nummeric placeholders like {0} in a string with arguments
	      // passed to the function
	      format: function() {
	        var args = Array.prototype.slice.call(arguments),
	            text = args.shift();
	        return text.replace(/\{(\d+)\}/g, function(match, number) {
	          return typeof args[number] !== 'undefined' ? args[number] : match;
	        });
	      }
	    };
	  
	    // Flattens an object
	    // eg:
	    //
	    //     var o = {
	    //       address: {
	    //         street: 'Street',
	    //         zip: 1234
	    //       }
	    //     };
	    //
	    // becomes:
	    //
	    //     var o = {
	    //       'address.street': 'Street',
	    //       'address.zip': 1234
	    //     };
	    var flatten = function (obj, into, prefix) {
	      into = into || {};
	      prefix = prefix || '';
	  
	      _.each(obj, function(val, key) {
	        if(obj.hasOwnProperty(key)) {
	          if (val && typeof val === 'object' && !(
	            val instanceof Array ||
	            val instanceof Date ||
	            val instanceof RegExp ||
	            val instanceof Backbone.Model ||
	            val instanceof Backbone.Collection)
	          ) {
	            flatten(val, into, prefix + key + '.');
	          }
	          else {
	            into[prefix + key] = val;
	          }
	        }
	      });
	  
	      return into;
	    };
	  
	    // Validation
	    // ----------
	  
	    var Validation = (function(){
	  
	      // Returns an object with undefined properties for all
	      // attributes on the model that has defined one or more
	      // validation rules.
	      var getValidatedAttrs = function(model) {
	        return _.reduce(_.keys(_.result(model, 'validation') || {}), function(memo, key) {
	          memo[key] = void 0;
	          return memo;
	        }, {});
	      };
	  
	      // Looks on the model for validations for a specified
	      // attribute. Returns an array of any validators defined,
	      // or an empty array if none is defined.
	      var getValidators = function(model, attr) {
	        var attrValidationSet = model.validation ? _.result(model, 'validation')[attr] || {} : {};
	  
	        // If the validator is a function or a string, wrap it in a function validator
	        if (_.isFunction(attrValidationSet) || _.isString(attrValidationSet)) {
	          attrValidationSet = {
	            fn: attrValidationSet
	          };
	        }
	  
	        // Stick the validator object into an array
	        if(!_.isArray(attrValidationSet)) {
	          attrValidationSet = [attrValidationSet];
	        }
	  
	        // Reduces the array of validators into a new array with objects
	        // with a validation method to call, the value to validate against
	        // and the specified error message, if any
	        return _.reduce(attrValidationSet, function(memo, attrValidation) {
	          _.each(_.without(_.keys(attrValidation), 'msg'), function(validator) {
	            memo.push({
	              fn: defaultValidators[validator],
	              val: attrValidation[validator],
	              msg: attrValidation.msg
	            });
	          });
	          return memo;
	        }, []);
	      };
	  
	      // Validates an attribute against all validators defined
	      // for that attribute. If one or more errors are found,
	      // the first error message is returned.
	      // If the attribute is valid, an empty string is returned.
	      var validateAttr = function(model, attr, value, computed) {
	        // Reduces the array of validators to an error message by
	        // applying all the validators and returning the first error
	        // message, if any.
	        return _.reduce(getValidators(model, attr), function(memo, validator){
	          // Pass the format functions plus the default
	          // validators as the context to the validator
	          var ctx = _.extend({}, formatFunctions, defaultValidators),
	              result = validator.fn.call(ctx, value, attr, validator.val, model, computed);
	  
	          if(result === false || memo === false) {
	            return false;
	          }
	          if (result && !memo) {
	            return _.result(validator, 'msg') || result;
	          }
	          return memo;
	        }, '');
	      };
	  
	      // Loops through the model's attributes and validates them all.
	      // Returns and object containing names of invalid attributes
	      // as well as error messages.
	      var validateModel = function(model, attrs) {
	        var error,
	            invalidAttrs = {},
	            isValid = true,
	            computed = _.clone(attrs),
	            flattened = flatten(attrs);
	  
	        _.each(flattened, function(val, attr) {
	          error = validateAttr(model, attr, val, computed);
	          if (error) {
	            invalidAttrs[attr] = error;
	            isValid = false;
	          }
	        });
	  
	        return {
	          invalidAttrs: invalidAttrs,
	          isValid: isValid
	        };
	      };
	  
	      // Contains the methods that are mixed in on the model when binding
	      var mixin = function(view, options) {
	        return {
	  
	          // Check whether or not a value, or a hash of values
	          // passes validation without updating the model
	          preValidate: function(attr, value) {
	            var self = this,
	                result = {},
	                error;
	  
	            if(_.isObject(attr)){
	              _.each(attr, function(value, key) {
	                error = self.preValidate(key, value);
	                if(error){
	                  result[key] = error;
	                }
	              });
	  
	              return _.isEmpty(result) ? undefined : result;
	            }
	            else {
	              return validateAttr(this, attr, value, _.extend({}, this.attributes));
	            }
	          },
	  
	          // Check to see if an attribute, an array of attributes or the
	          // entire model is valid. Passing true will force a validation
	          // of the model.
	          isValid: function(option) {
	            var flattened = flatten(this.attributes);
	  
	            if(_.isString(option)){
	              return !validateAttr(this, option, flattened[option], _.extend({}, this.attributes));
	            }
	            if(_.isArray(option)){
	              return _.reduce(option, function(memo, attr) {
	                return memo && !validateAttr(this, attr, flattened[attr], _.extend({}, this.attributes));
	              }, true, this);
	            }
	            if(option === true) {
	              this.validate();
	            }
	            return this.validation ? this._isValid : true;
	          },
	  
	          // This is called by Backbone when it needs to perform validation.
	          // You can call it manually without any parameters to validate the
	          // entire model.
	          validate: function(attrs, setOptions){
	            var model = this,
	                validateAll = !attrs,
	                opt = _.extend({}, options, setOptions),
	                validatedAttrs = getValidatedAttrs(model),
	                allAttrs = _.extend({}, validatedAttrs, model.attributes, attrs),
	                changedAttrs = flatten(attrs || allAttrs),
	  
	                result = validateModel(model, allAttrs);
	  
	            model._isValid = result.isValid;
	  
	            // After validation is performed, loop through all validated attributes
	            // and call the valid callbacks so the view is updated.
	            _.each(validatedAttrs, function(val, attr){
	              var invalid = result.invalidAttrs.hasOwnProperty(attr);
	              if(!invalid){
	                opt.valid(view, attr, opt.selector);
	              }
	            });
	  
	            // After validation is performed, loop through all validated and changed attributes
	            // and call the invalid callback so the view is updated.
	            _.each(validatedAttrs, function(val, attr){
	              var invalid = result.invalidAttrs.hasOwnProperty(attr),
	                  changed = changedAttrs.hasOwnProperty(attr);
	  
	              if(invalid && (changed || validateAll)){
	                opt.invalid(view, attr, result.invalidAttrs[attr], opt.selector);
	              }
	            });
	  
	            // Trigger validated events.
	            // Need to defer this so the model is actually updated before
	            // the event is triggered.
	            _.defer(function() {
	              model.trigger('validated', model._isValid, model, result.invalidAttrs);
	              model.trigger('validated:' + (model._isValid ? 'valid' : 'invalid'), model, result.invalidAttrs);
	            });
	  
	            // Return any error messages to Backbone, unless the forceUpdate flag is set.
	            // Then we do not return anything and fools Backbone to believe the validation was
	            // a success. That way Backbone will update the model regardless.
	            if (!opt.forceUpdate && _.intersection(_.keys(result.invalidAttrs), _.keys(changedAttrs)).length > 0) {
	              return result.invalidAttrs;
	            }
	          }
	        };
	      };
	  
	      // Helper to mix in validation on a model
	      var bindModel = function(view, model, options) {
	        _.extend(model, mixin(view, options));
	      };
	  
	      // Removes the methods added to a model
	      var unbindModel = function(model) {
	        delete model.validate;
	        delete model.preValidate;
	        delete model.isValid;
	      };
	  
	      // Mix in validation on a model whenever a model is
	      // added to a collection
	      var collectionAdd = function(model) {
	        bindModel(this.view, model, this.options);
	      };
	  
	      // Remove validation from a model whenever a model is
	      // removed from a collection
	      var collectionRemove = function(model) {
	        unbindModel(model);
	      };
	  
	      // Returns the public methods on Backbone.Validation
	      return {
	  
	        // Current version of the library
	        version: '0.9.1',
	  
	        // Called to configure the default options
	        configure: function(options) {
	          _.extend(defaultOptions, options);
	        },
	  
	        // Hooks up validation on a view with a model
	        // or collection
	        bind: function(view, options) {
	          options = _.extend({}, defaultOptions, defaultCallbacks, options);
	  
	          var model = options.model || view.model,
	              collection = options.collection || view.collection;
	  
	          if(typeof model === 'undefined' && typeof collection === 'undefined'){
	            throw 'Before you execute the binding your view must have a model or a collection.\n' +
	                  'See http://thedersen.com/projects/backbone-validation/#using-form-model-validation for more information.';
	          }
	  
	          if(model) {
	            bindModel(view, model, options);
	          }
	          else if(collection) {
	            collection.each(function(model){
	              bindModel(view, model, options);
	            });
	            collection.bind('add', collectionAdd, {view: view, options: options});
	            collection.bind('remove', collectionRemove);
	          }
	        },
	  
	        // Removes validation from a view with a model
	        // or collection
	        unbind: function(view, options) {
	          options = _.extend({}, options);
	          var model = options.model || view.model,
	              collection = options.collection || view.collection;
	  
	          if(model) {
	            unbindModel(model);
	          }
	          else if(collection) {
	            collection.each(function(model){
	              unbindModel(model);
	            });
	            collection.unbind('add', collectionAdd);
	            collection.unbind('remove', collectionRemove);
	          }
	        },
	  
	        // Used to extend the Backbone.Model.prototype
	        // with validation
	        mixin: mixin(null, defaultOptions)
	      };
	    }());
	  
	  
	    // Callbacks
	    // ---------
	  
	    var defaultCallbacks = Validation.callbacks = {
	  
	      // Gets called when a previously invalid field in the
	      // view becomes valid. Removes any error message.
	      // Should be overridden with custom functionality.
	      valid: function(view, attr, selector) {
	        view.$('[' + selector + '~="' + attr + '"]')
	            .removeClass('invalid')
	            .removeAttr('data-error');
	      },
	  
	      // Gets called when a field in the view becomes invalid.
	      // Adds a error message.
	      // Should be overridden with custom functionality.
	      invalid: function(view, attr, error, selector) {
	        view.$('[' + selector + '~="' + attr + '"]')
	            .addClass('invalid')
	            .attr('data-error', error);
	      }
	    };
	  
	  
	    // Patterns
	    // --------
	  
	    var defaultPatterns = Validation.patterns = {
	      // Matches any digit(s) (i.e. 0-9)
	      digits: /^\d+$/,
	  
	      // Matches any number (e.g. 100.000)
	      number: /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/,
	  
	      // Matches a valid email address (e.g. mail@example.com)
	      email: /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,
	  
	      // Mathes any valid url (e.g. http://www.xample.com)
	      url: /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i
	    };
	  
	  
	    // Error messages
	    // --------------
	  
	    // Error message for the build in validators.
	    // {x} gets swapped out with arguments form the validator.
	    var defaultMessages = Validation.messages = {
	      required: '{0} is required',
	      acceptance: '{0} must be accepted',
	      min: '{0} must be greater than or equal to {1}',
	      max: '{0} must be less than or equal to {1}',
	      range: '{0} must be between {1} and {2}',
	      length: '{0} must be {1} characters',
	      minLength: '{0} must be at least {1} characters',
	      maxLength: '{0} must be at most {1} characters',
	      rangeLength: '{0} must be between {1} and {2} characters',
	      oneOf: '{0} must be one of: {1}',
	      equalTo: '{0} must be the same as {1}',
	      digits: '{0} must only contain digits',
	      number: '{0} must be a number',
	      email: '{0} must be a valid email',
	      url: '{0} must be a valid url',
	      inlinePattern: '{0} is invalid'
	    };
	  
	    // Label formatters
	    // ----------------
	  
	    // Label formatters are used to convert the attribute name
	    // to a more human friendly label when using the built in
	    // error messages.
	    // Configure which one to use with a call to
	    //
	    //     Backbone.Validation.configure({
	    //       labelFormatter: 'label'
	    //     });
	    var defaultLabelFormatters = Validation.labelFormatters = {
	  
	      // Returns the attribute name with applying any formatting
	      none: function(attrName) {
	        return attrName;
	      },
	  
	      // Converts attributeName or attribute_name to Attribute name
	      sentenceCase: function(attrName) {
	        return attrName.replace(/(?:^\w|[A-Z]|\b\w)/g, function(match, index) {
	          return index === 0 ? match.toUpperCase() : ' ' + match.toLowerCase();
	        }).replace(/_/g, ' ');
	      },
	  
	      // Looks for a label configured on the model and returns it
	      //
	      //      var Model = Backbone.Model.extend({
	      //        validation: {
	      //          someAttribute: {
	      //            required: true
	      //          }
	      //        },
	      //
	      //        labels: {
	      //          someAttribute: 'Custom label'
	      //        }
	      //      });
	      label: function(attrName, model) {
	        return (model.labels && model.labels[attrName]) || defaultLabelFormatters.sentenceCase(attrName, model);
	      }
	    };
	  
	  
	    // Built in validators
	    // -------------------
	  
	    var defaultValidators = Validation.validators = (function(){
	      // Use native trim when defined
	      var trim = String.prototype.trim ?
	        function(text) {
	          return text === null ? '' : String.prototype.trim.call(text);
	        } :
	        function(text) {
	          var trimLeft = /^\s+/,
	              trimRight = /\s+$/;
	  
	          return text === null ? '' : text.toString().replace(trimLeft, '').replace(trimRight, '');
	        };
	  
	      // Determines whether or not a value is a number
	      var isNumber = function(value){
	        return _.isNumber(value) || (_.isString(value) && value.match(defaultPatterns.number));
	      };
	  
	      // Determines whether or not a value is empty
	      var hasValue = function(value) {
	        return !(_.isNull(value) || _.isUndefined(value) || (_.isString(value) && trim(value) === '') || (_.isArray(value) && _.isEmpty(value)));
	      };
	  
	      return {
	        // Function validator
	        // Lets you implement a custom function used for validation
	        fn: function(value, attr, fn, model, computed) {
	          if(_.isString(fn)){
	            fn = model[fn];
	          }
	          return fn.call(model, value, attr, computed);
	        },
	  
	        // Required validator
	        // Validates if the attribute is required or not
	        // This can be specified as either a boolean value or a function that returns a boolean value
	        required: function(value, attr, required, model, computed) {
	          var isRequired = _.isFunction(required) ? required.call(model, value, attr, computed) : required;
	          if(!isRequired && !hasValue(value)) {
	            return false; // overrides all other validators
	          }
	          if (isRequired && !hasValue(value)) {
	            return this.format(defaultMessages.required, this.formatLabel(attr, model));
	          }
	        },
	  
	        // Acceptance validator
	        // Validates that something has to be accepted, e.g. terms of use
	        // `true` or 'true' are valid
	        acceptance: function(value, attr, accept, model) {
	          if(value !== 'true' && (!_.isBoolean(value) || value === false)) {
	            return this.format(defaultMessages.acceptance, this.formatLabel(attr, model));
	          }
	        },
	  
	        // Min validator
	        // Validates that the value has to be a number and equal to or greater than
	        // the min value specified
	        min: function(value, attr, minValue, model) {
	          if (!isNumber(value) || value < minValue) {
	            return this.format(defaultMessages.min, this.formatLabel(attr, model), minValue);
	          }
	        },
	  
	        // Max validator
	        // Validates that the value has to be a number and equal to or less than
	        // the max value specified
	        max: function(value, attr, maxValue, model) {
	          if (!isNumber(value) || value > maxValue) {
	            return this.format(defaultMessages.max, this.formatLabel(attr, model), maxValue);
	          }
	        },
	  
	        // Range validator
	        // Validates that the value has to be a number and equal to or between
	        // the two numbers specified
	        range: function(value, attr, range, model) {
	          if(!isNumber(value) || value < range[0] || value > range[1]) {
	            return this.format(defaultMessages.range, this.formatLabel(attr, model), range[0], range[1]);
	          }
	        },
	  
	        // Length validator
	        // Validates that the value has to be a string with length equal to
	        // the length value specified
	        length: function(value, attr, length, model) {
	          if (!_.isString(value) || value.length !== length) {
	            return this.format(defaultMessages.length, this.formatLabel(attr, model), length);
	          }
	        },
	  
	        // Min length validator
	        // Validates that the value has to be a string with length equal to or greater than
	        // the min length value specified
	        minLength: function(value, attr, minLength, model) {
	          if (!_.isString(value) || value.length < minLength) {
	            return this.format(defaultMessages.minLength, this.formatLabel(attr, model), minLength);
	          }
	        },
	  
	        // Max length validator
	        // Validates that the value has to be a string with length equal to or less than
	        // the max length value specified
	        maxLength: function(value, attr, maxLength, model) {
	          if (!_.isString(value) || value.length > maxLength) {
	            return this.format(defaultMessages.maxLength, this.formatLabel(attr, model), maxLength);
	          }
	        },
	  
	        // Range length validator
	        // Validates that the value has to be a string and equal to or between
	        // the two numbers specified
	        rangeLength: function(value, attr, range, model) {
	          if (!_.isString(value) || value.length < range[0] || value.length > range[1]) {
	            return this.format(defaultMessages.rangeLength, this.formatLabel(attr, model), range[0], range[1]);
	          }
	        },
	  
	        // One of validator
	        // Validates that the value has to be equal to one of the elements in
	        // the specified array. Case sensitive matching
	        oneOf: function(value, attr, values, model) {
	          if(!_.include(values, value)){
	            return this.format(defaultMessages.oneOf, this.formatLabel(attr, model), values.join(', '));
	          }
	        },
	  
	        // Equal to validator
	        // Validates that the value has to be equal to the value of the attribute
	        // with the name specified
	        equalTo: function(value, attr, equalTo, model, computed) {
	          if(value !== computed[equalTo]) {
	            return this.format(defaultMessages.equalTo, this.formatLabel(attr, model), this.formatLabel(equalTo, model));
	          }
	        },
	  
	        // Pattern validator
	        // Validates that the value has to match the pattern specified.
	        // Can be a regular expression or the name of one of the built in patterns
	        pattern: function(value, attr, pattern, model) {
	          if (!hasValue(value) || !value.toString().match(defaultPatterns[pattern] || pattern)) {
	            return this.format(defaultMessages[pattern] || defaultMessages.inlinePattern, this.formatLabel(attr, model), pattern);
	          }
	        }
	      };
	    }());
	  
	    // Set the correct context for all validators
	    // when used from within a method validator
	    _.each(defaultValidators, function(validator, key){
	      defaultValidators[key] = _.bind(defaultValidators[key], _.extend({}, formatFunctions, defaultValidators));
	    });
	  
	    return Validation;
	  }(_));
	  return Backbone.Validation;
	}));

/***/ }),

/***/ "views/shared/splunkbar/find/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("models/Base"),
	    __webpack_require__("views/shared/splunkbar/find/results/Master"),
	    __webpack_require__("views/shared/splunkbar/find/FindProgress"),
	    __webpack_require__("views/shared/splunkbar/find/Input"),
	    __webpack_require__("collections/shared/Dashboards"),
	    __webpack_require__("collections/search/Reports"),
	    __webpack_require__("collections/search/Alerts"),
	    __webpack_require__("collections/datasets/Datasets"),
	    __webpack_require__("collections/services/datamodel/DataModels"),
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/splunkbar/find/Master.pcssm"),
	    __webpack_require__("util/splunkd_utils")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    module,
	    BaseModel,
	    FindBarResults,
	    FindProgress,
	    InputView,
	    DashboardsCollection,
	    ReportsCollection,
	    AlertsCollection,
	    DatasetsCollection,
	    DataModelsCollection,
	    BaseView,
	    css,
	    splunkdUtils
	) {
	    return BaseView.extend({
	        moduleId: module.id,
	        css: css,
	        initialize: function() {
	            BaseView.prototype.initialize.apply(this, arguments);
	            //models
	            this.stateModel = new BaseModel();
	            this.rawSearch = new BaseModel();
	            //collections
	            this.initializeCollections();
	            //deferreds
	            this.initializeDeferreds();

	            this.children.findProgress = new FindProgress({
	                model: {
	                    application: this.model.application,
	                    state: this.stateModel,
	                    rawSearch: this.rawSearch
	                },
	                mode: 'menu',
	                onHiddenRemove: true
	            });

	            this.stateModel.on('change:search',
	                _.debounce(function() {
	                    var rawSearch = this.rawSearch.get('rawSearch'),
	                        $target =  this.$el,
	                        $focus = this.$('input');
	                    if (!rawSearch || rawSearch === '') {
	                        if (this.children.findbarResults) {
	                            this.children.findbarResults.hide();
	                        }
	                        this.resetCollections();
	                        return;
	                    }

	                    // Show find progress while waiting for results to return.
	                    if (this.children.findbarResults) {
	                        this.children.findbarResults.hide();
	                    }

	                    $($target).append(this.children.findProgress.render().el);
	                    this.children.findProgress.show($target, {$onOpenFocus: $focus});

	                    this.initializeDeferreds();
	                    this.resolveDeferredsOnSync();
	                    this.fetchReportBasedCollection(this.collection.reports, {
	                        excludeAlerts: true,
	                        excludeDatasets: true
	                    });
	                    this.fetchReportBasedCollection(this.collection.alerts);
	                    this.fetchDatasetCollection();
	                    this.fetchDashboardCollection();
	                    this.fetchDataModelCollection();

	                    $.when(
	                        this.deferreds.dashboardDeferred,
	                        this.deferreds.reportDeferred,
	                        this.deferreds.alertDeferred,
	                        this.deferreds.datasetDeferred,
	                        this.deferreds.datamodelDeferred
	                    ).then(function() {
	                            this.showFindBarResults($target);
	                        }.bind(this));
	                }.bind(this), 250),
	                this
	            );
	        },
	        events: {
	            'click': function(e){
	                var rawSearch = this.rawSearch.get('rawSearch');
	                if (rawSearch && rawSearch !== '') {
	                    var $target = $(e.currentTarget);
	                    this.showFindBarResults($target);
	                }
	            }
	        },
	        initializeCollections: function() {
	            this.collection = _.extend({}, this.collection || {}, {
	                dashboards: new DashboardsCollection(),
	                reports: new ReportsCollection(),
	                alerts: new AlertsCollection(),
	                datasets: new DatasetsCollection(),
	                datamodels: new DataModelsCollection()
	            });
	        },
	        resetCollections: function() {
	            this.collection.dashboards.reset();
	            this.collection.reports.reset();
	            this.collection.alerts.reset();
	            this.collection.datasets.reset();
	            this.collection.datamodels.reset();
	        },
	        initializeDeferreds: function() {
	            this.deferreds = {
	                dashboardDeferred: $.Deferred(),
	                reportDeferred: $.Deferred(),
	                alertDeferred: $.Deferred(),
	                datasetDeferred: $.Deferred(),
	                datamodelDeferred: $.Deferred()
	            };
	        },
	        resolveDeferredsOnSync: function() {
	            this.collection.dashboards.on('sync', function() {
	                this.deferreds.dashboardDeferred.resolve();
	            }.bind(this));

	            this.collection.reports.on('sync', function() {
	                this.deferreds.reportDeferred.resolve();
	            }.bind(this));

	            this.collection.alerts.on('sync', function() {
	                this.deferreds.alertDeferred.resolve();
	            }.bind(this));

	            this.collection.datasets.on('sync', function() {
	                this.deferreds.datasetDeferred.resolve();
	            }.bind(this));

	            this.collection.datamodels.on('sync', function() {
	                this.deferreds.datamodelDeferred.resolve();
	            }.bind(this));
	        },
	        showFindBarResults: function($target) {
	            var $focus = this.$('input');
	            this.children.findProgress.hide();
	            //return;
	            if (this.children.findbarResults && this.children.findbarResults.shown) {
	                this.children.findbarResults.render();
	                return;
	            }
	            this.children.findbarResults = new FindBarResults({
	                collection: {
	                    dashboards: this.collection.dashboards,
	                    reports: this.collection.reports,
	                    alerts: this.collection.alerts,
	                    datasets: this.collection.datasets,
	                    datamodels: this.collection.datamodels,
	                    apps: this.collection.apps
	                },
	                model: {
	                    application: this.model.application,
	                    state: this.stateModel,
	                    rawSearch: this.rawSearch
	                },
	                mode: 'menu',
	                onHiddenRemove: true
	            });
	            $($target).append(this.children.findbarResults.render().el);
	            this.children.findbarResults.show($target, {$onOpenFocus: $focus});
	        },
	        fetchReportBasedCollection: function(collection, options) {
	            options = options || {};
	            var search = this.stateModel.get('search') || '';
	            if (search) {
	                search += ' AND ';
	            }
	            search += ReportsCollection.availableWithUserWildCardSearchString(this.model.application.get('owner')) +
	                ' AND is_visible=1';

	            var fetchOptions = _.extend({}, {
	                data: {
	                    app: '-',
	                    owner: '-',
	                    search: search,
	                    count: 3,
	                    offset: 0
	                }
	            }, options);
	            collection.safeFetch(fetchOptions);
	        },
	        fetchDashboardCollection: function() {
	            var dashboards = this.collection.dashboards,
	                search = '';
	            if (this.rawSearch.get('rawSearch')) {
	                search = splunkdUtils.createSearchFilterString(this.rawSearch.get('rawSearch'), ['label','eai:data']);

	            }
	            if (search) {
	                search += ' AND ';
	            }
	            search += DashboardsCollection.availableWithUserWildCardSearchString(this.model.application.get('owner'));

	            dashboards.safeFetch({
	                data : {
	                    app: '-',
	                    owner: '-',
	                    search: search,
	                    count: 3,
	                    offset: 0
	                }
	            });
	        },
	        fetchDataModelCollection: function() {
	            var datamodels = this.collection.datamodels,
	                search = this.rawSearch.get('rawSearch') || '';
	            if (search) {
	                search += ' AND ';
	            }
	            search += '(eai:acl.owner="*")';

	            datamodels.safeFetch({
	                data : {
	                    app: '-',
	                    owner: '-',
	                    sort_mode: ['auto', 'auto'],
	                    search: search,
	                    count: 3,
	                    offset: 0,
	                    concise: true
	                },
	                success: function(response) {
	                }.bind(this)
	            });
	        },
	        fetchDatasetCollection: function() {
	            var datasets = this.collection.datasets,
	                search = this.rawSearch.get('rawSearch') || '';
	            if (search) {
	                search += ' AND ';
	            }
	            search += '(eai:acl.owner="*")';

	            datasets.safeFetch({
	                data : {
	                    app: '-',
	                    owner: '-',
	                    sort_mode: ['auto', 'auto'],
	                    search: search,
	                    count: 3,
	                    offset: 0
	                }
	            });
	        },
	        render: function() {
	            this.$el.html('');
	            this.children.findbar = new InputView({
	                model: this.stateModel,
	                rawSearch: this.rawSearch,
	                placeholder: _("Find").t(),
	                canClear: true
	            });
	            this.children.findbar.render().appendTo(this.$el);
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "collections/search/Reports":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("models/search/Report"),
	        __webpack_require__("collections/services/saved/Searches")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(ReportModel, SavedSearchCollection) {
	        return SavedSearchCollection.extend({
	            model: ReportModel,
	            initialize: function() {
	                SavedSearchCollection.prototype.initialize.apply(this, arguments);
	            },
	            sync: function(method, model, options) {
	                switch (method) {
	                    case 'read' :
	                        options = options || {};
	                        if (options.excludeAlerts) {
	                            options.data = options.data || {};
	                            var search = 'NOT (' + this.constructor.ALERT_SEARCH_STRING + ')';
	                            if (options.data.search) {
	                                search += ' AND ' + options.data.search;
	                            }
	                            options.data.search = search; 
	                        }
	                        break;
	                }
	                return SavedSearchCollection.prototype.sync.apply(this, arguments);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/search/Report":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/services/saved/Search"),
	        __webpack_require__("models/services/data/ui/Viewstate"),
	        __webpack_require__("models/shared/Cron"),
	        __webpack_require__("collections/search/Jobs"),
	        __webpack_require__("collections/services/saved/searches/Histories"),
	        __webpack_require__("util/time"),
	        __webpack_require__("util/splunkd_utils"),
	        __webpack_require__("util/general_utils"),
	        __webpack_require__("shim/splunk.util"),
	        __webpack_require__("stubs/i18n"),
	        __webpack_require__("uri/route"),
	        __webpack_require__("util/math_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, SavedSearch, Viewstate, Cron, JobsCollection, HistoriesCollection, time_utils, splunkd_utils, general_utils, splunkUtil, i18n, route, math_utils) {
	        /**
	         * @constructor
	         * @memberOf models
	         * @name Report
	         * @extends models.SavedSearch
	         */
	        var ReportModel = SavedSearch.extend({
	            initialize: function() {
	                SavedSearch.prototype.initialize.apply(this, arguments);

	                //associated
	                this.jobs = new JobsCollection();
	                this.associated.jobs = this.jobs;
	            },
	            sync: function(method, model, options) {
	                options = options || {};
	                _.defaults(options, {migrateViewState: true});

	                if (!options.migrateViewState || method !== 'read') {
	                    return SavedSearch.prototype.sync.apply(this, arguments);
	                }

	                var deferredResponse = $.Deferred(),
	                    viewstateDeferred = $.Deferred(),
	                    savedSearchProxy = new SavedSearch({id: this.id}),
	                    bbXHR;

	                model.trigger('request', model, deferredResponse, options);

	                bbXHR = savedSearchProxy.fetch($.extend(true, {}, options, {
	                    success: function(model, savedSearchResponse) {
	                        this.setFromSplunkD(savedSearchProxy.toSplunkD());

	                        var vsid = this.entry.content.get("vsid"),
	                            displayview = this.entry.content.get("displayview"),
	                            hasBeenMigrated = splunkUtil.normalizeBoolean(this.entry.content.get("display.general.migratedFromViewState")),
	                            name, viewstate;

	                        if (vsid && displayview && !hasBeenMigrated) {
	                            name = /.*:/.test(vsid) ? vsid : (displayview + ":" + vsid);
	                            viewstate = new Viewstate();

	                            viewstate.fetch({
	                                url: splunkd_utils.fullpath(
	                                    viewstate.url + "/" + encodeURIComponent(name),
	                                    {
	                                        app: options.data.app,
	                                        owner: options.data.owner
	                                    }
	                                 ),
	                                 success: function(model, response) {
	                                     var viewstateConversionAttrs = viewstate.convertToReportPoperties();
	                                     viewstateConversionAttrs["display.general.migratedFromViewState"] = "1";

	                                     //layer in the viewstate properties
	                                     this.entry.content.set(viewstateConversionAttrs);

	                                     options.success(savedSearchResponse);
	                                     viewstateDeferred.resolve();
	                                 }.bind(this),
	                                 error: function(model, response) {
	                                     //the viewstate could not be found. Party on, but make sure if they save we never lookup the viewstate again.
	                                     this.entry.content.set("display.general.migratedFromViewState", "1");

	                                     options.success(savedSearchResponse);
	                                     viewstateDeferred.resolve();
	                                 }.bind(this)
	                            });
	                        } else {
	                            options.success(savedSearchResponse);
	                            viewstateDeferred.resolve();
	                        }
	                    }.bind(this),
	                    error: function(model, savedSearchResponse) {
	                        options.error(savedSearchResponse);
	                    }.bind(this)
	                }));

	                $.when(viewstateDeferred).then(function() {
	                    bbXHR.done(function(){
	                        deferredResponse.resolve.apply(deferredResponse, arguments);
	                    }.bind(this));
	                }.bind(this));

	                bbXHR.fail(function() {
	                    deferredResponse.reject.apply(deferredResponse, arguments);
	                }.bind(this));

	                return deferredResponse.promise();
	            },
	            parse: function(response) {
	                var parsedResponse = SavedSearch.prototype.parse.apply(this, arguments),
	                    contentModel = this.entry.content;

	                // SPL-78883 unfortunately due to some case inconsistencies there are some reports in the wild with
	                // display.visualizations.type "singleValue" instead of "singlevalue"
	                // to deal with this, normalize to all lower case here
	                if(contentModel.has('display.visualizations.type')) {
	                    contentModel.set({
	                        'display.visualizations.type': contentModel.get('display.visualizations.type').toLowerCase()
	                    });
	                }
	                return parsedResponse;
	            },
	            fetchJobs: function(options) {
	                var label = this.entry.get('name');
	                if (!label) {
	                    throw "Report must have a name to associate it with Jobs";
	                }

	                options = options || {};
	                options.data = options.data || {};
	                options.data.app = this.entry.acl.get('app');
	                options.data.owner = this.entry.acl.get('owner');
	                options.data.label = label;

	                return this.jobs.fetchNonAutoSummaryJobs(options);
	            },
	            /**
	             * Fetch historic jobs, and return a deferred object,
	             * which will be resolved later with the latest scheduled job id if it exists
	             */
	            getLatestHistoricJobId: function() {
	                var historiesCollection = new HistoriesCollection(),
	                    deferred = $.Deferred();
	                historiesCollection.url = splunkd_utils.fullpath(this.entry.links.get('history'));
	                historiesCollection.fetch({
	                    data: {
	                        search: "isScheduled=true",
	                        sort_key: "start",
	                        sort_dir: "desc"
	                    },
	                    success: function() {
	                        if (historiesCollection.length > 0) {
	                            deferred.resolve(historiesCollection.at(0).entry.get('name'));
	                        } else {
	                            deferred.resolve();
	                        }
	                    }.bind(this),
	                    error: function() {
	                        deferred.resolve();
	                    }.bind(this)
	                });
	                return deferred.promise();
	            },
	            // view in which to open the report to edit the search
	            openInView: function (userModel) {
	                if (this.isPivotReport()) {
	                    if (userModel && !userModel.canPivot()) {
	                        return 'search';
	                    }
	                    return 'pivot';
	                } else {
	                    return 'search';
	                }
	            },

	                /**
	                 * Sets the visualization and statistics .show values that will persist to the backend
	                 * from the compound key 'display.general.reports.show
	                 * 'chartandtable' : visualizations = 1, statistics = 1,
	                 * 'chart; : visualizations = 1, statistics = 0,
	                 * 'table : visualizations = 0, statistics = 1
	                 * This must be called when using display.general.reports.show in memory attr
	                 * @memberOf models#Report
	                 */
	            setVizType: function(){
	                var displayType = this.entry.content.get('display.general.reports.show');
	                if (displayType === 'chart'){
	                    this.entry.content.set({'display.visualizations.show': '1'});
	                    this.entry.content.set({'display.statistics.show': '0'});

	                } else if (displayType === 'table'){
	                    this.entry.content.set({'display.visualizations.show': '0'});
	                    this.entry.content.set({'display.statistics.show': '1'});

	                } else {
	                    this.entry.content.set({'display.visualizations.show': '1'});
	                    this.entry.content.set({'display.statistics.show': '1'});
	                }
	            },

	                /**
	                 * Called to set the in memory attribute display.general.reports.show based on the backend
	                 * values for display.statistics.show and display.visualizations.show
	                 * @memberOf models#Report
	                 */
	            setInmemVizType: function(){
	                var viz = splunkUtil.normalizeBoolean(this.entry.content.get('display.visualizations.show'));
	                var stats = splunkUtil.normalizeBoolean(this.entry.content.get('display.statistics.show'));

	                if (viz && stats){
	                    this.entry.content.set({'display.general.reports.show': 'chartandtable'});

	                } else if (viz){
	                    this.entry.content.set({'display.general.reports.show': 'chart'});

	                } else {
	                    this.entry.content.set({'display.general.reports.show': 'table'});
	                }
	            },

	            isAlert: function () {
	                var is_scheduled = this.entry.content.get('is_scheduled'),
	                    alert_type = this.entry.content.get('alert_type'),
	                    alert_track = this.entry.content.get('alert.track'),
	                    actions = this.entry.content.get('actions'),
	                    isRealTime = this.isRealTime();

	                return is_scheduled &&
	                        (alert_type !== 'always' ||
	                            alert_track ||
	                            (isRealTime && actions)
	                        );
	            },
	            isRealTime: function() {
	                var isEarliestRealtime = time_utils.isRealtime(this.entry.content.get('dispatch.earliest_time')),
	                    isLatestRealtime = time_utils.isRealtime(this.entry.content.get('dispatch.latest_time'));

	                return (isEarliestRealtime && isLatestRealtime);
	            },
	            // see documentation of isValidPivotSearch, this is not an exhaustive check, just a quick guess.
	            isPivotReport: function() {
	                return general_utils.isValidPivotSearch(this.entry.content.get('search'));
	            },
	            isSampled: function() {
	                return this.entry.content.get('dispatch.sample_ratio') > '1';
	            },
	            stripAlertAttributes: function(options) {
	                return this.entry.content.set({
	                        'alert.track': 0,
	                        alert_type: 'always',
	                        is_scheduled: 0,
	                        actions: ''
	                    }, options);
	            },
	            stripReportAttributesToSaveAsAlert: function(options) {
	                return this.entry.content.set({
	                    auto_summarize: false,
	                    cron_schedule: ''
	                },options);
	            },
	            setTimeRangeWarnings: function(reportPristine) {
	                var earliest = this.entry.content.get("dispatch.earliest_time"),
	                    latest = this.entry.content.get("dispatch.latest_time"),
	                    messages = [],
	                    pristineEarliest, pristineLatest;

	                if ((!time_utils.isEmpty(earliest) && time_utils.isAbsolute(earliest)) ||
	                        (!time_utils.isEmpty(latest) && time_utils.isAbsolute(latest))) {
	                    messages.push(
	                       splunkd_utils.createMessageObject(
	                            splunkd_utils.WARNING,
	                            _("Your report has an absolute time range.").t()
	                        )
	                    );
	                }

	                if (reportPristine) {
	                    if (reportPristine.isAlert()) {
	                        pristineEarliest = reportPristine.entry.content.get("dispatch.earliest_time");
	                        pristineLatest = reportPristine.entry.content.get("dispatch.latest_time");

	                        if ((earliest !== pristineEarliest) || (latest !== pristineLatest)) {
	                            this.entry.content.set({
	                                "dispatch.earliest_time": pristineEarliest,
	                                "dispatch.latest_time": pristineLatest
	                            });

	                            // This attribute will be read and removed by SuccessWithAdditionalSettings.js which will show another time range warning message.
	                            // Yes we are showing the same warning twice.
	                            this.set({"did_revert_time_range": true});

	                            messages.push(
	                               splunkd_utils.createMessageObject(
	                                    splunkd_utils.WARNING,
	                                    _("Your changes to the time range of this alert will not be saved.").t()
	                                )
	                            );
	                        }
	                    } else if (!reportPristine.isRealTime() && (reportPristine.entry.content.get('is_scheduled')) && this.isRealTime()) {
	                        this.entry.content.set({
	                            "is_scheduled": false
	                        });

	                        messages.push(
	                           splunkd_utils.createMessageObject(
	                                splunkd_utils.WARNING,
	                                _("Saving a scheduled report as a real-time report will remove the schedule.").t()
	                            )
	                        );
	                    }
	                }

	                if (messages.length) {
	                    this.error.set({
	                        messages: messages
	                    });
	                }
	            },
	            setAccelerationWarning: function(canSummarize, reportPristine) {
	                var isCurrentModeVerbose = this.entry.content.get('display.page.search.mode') === splunkd_utils.VERBOSE,
	                    messages = [];
	                if (!canSummarize){
	                    messages.push(
	                        splunkd_utils.createMessageObject(
	                            splunkd_utils.WARNING,
	                            _("This report cannot be accelerated. Acceleration will be disabled.").t()
	                        )
	                    );
	                    this.entry.content.set('auto_summarize', false);
	                }
	                else if (isCurrentModeVerbose && (_.isUndefined(reportPristine) || reportPristine.entry.content.get('display.page.search.mode') === splunkd_utils.VERBOSE)) {
	                    messages.push(
	                        splunkd_utils.createMessageObject(
	                            splunkd_utils.WARNING,
	                            _("A report running in verbose mode cannot be accelerated. Your search mode will be saved as Smart Mode.").t()
	                        )
	                    );
	                    this.entry.content.set('display.page.search.mode', splunkd_utils.SMART);
	                }
	                else if (isCurrentModeVerbose && !_.isUndefined(reportPristine)) {
	                    messages.push(
	                        splunkd_utils.createMessageObject(
	                            splunkd_utils.WARNING,
	                            _("A report running in verbose mode cannot be accelerated. Your search mode will not be saved.").t()
	                        )
	                    );
	                    this.entry.content.set('display.page.search.mode', reportPristine.entry.content.get('display.page.search.mode'));
	                }
	                if (messages.length) {
	                    this.trigger('serverValidated', false, this, messages);
	                    this.error.set({
	                        messages: messages
	                    });
	                }
	            },
	            getScheduleWarning: function(reportPristine) {
	                var isScheduled = reportPristine.entry.content.get('is_scheduled'),
	                    dispatchAs = reportPristine.getDispatchAs(),
	                    displayTimeRangePicker = splunkUtil.normalizeBoolean(reportPristine.entry.content.get('display.general.timeRangePicker.show'));

	                if (!isScheduled) {
	                    if (displayTimeRangePicker && dispatchAs === 'user') {
	                        return {
	                            type: splunkd_utils.WARNING,
	                            html: splunkUtil.sprintf(_("Scheduling this report: \
	                                %(openUl)s %(openLi)s Causes its permissions to change from Run as User to Run as Owner. %(closeLi)s \
	                                %(openLi)s Results in removal of the time range picker from the report display. %(closeLi)s %(closeUl)s").t(), {
	                                openUl: '<ul>',
	                                closeUl: '</ul>',
	                                openLi: '<li>',
	                                closeLi: '</li>'
	                            })
	                        };
	                    } else if (displayTimeRangePicker) {
	                        return {
	                            type: splunkd_utils.WARNING,
	                            html: _("Scheduling this report results in removal of the time picker from the report display.").t()
	                        };
	                    } else if (dispatchAs === 'user') {
	                        return {
	                            type: splunkd_utils.WARNING,
	                            html: _("Scheduling this report causes its permissions to change from Run as User to Run as Owner.").t()
	                        };
	                    }
	                }
	            },
	            setSearchTab: function(options) {
	                options = options || {};

	                var tab = this.entry.content.get('display.page.search.tab') || 'statistics',
	                    type = this.entry.content.get('display.general.type'),
	                    searchSpecificDefaults = options.reportSearch ? this.getSearchSpecificDefaults(options.reportSearch) : {};

	                if (tab === 'patterns') {
	                    if (options.canPatternDetect && !options.isUneventfulReportSearch) {
	                        return;
	                    }
	                    tab = 'events';
	                }

	                if (type && (tab !== type)) {
	                    tab = type;
	                }

	                if (tab === 'events') {
	                    if (options.isTransforming) {
	                        tab = searchSpecificDefaults['display.page.search.tab'] || 'statistics';
	                    }
	                } else if ((tab === 'statistics') || (tab === 'visualizations')) {
	                    if (!options.isTransforming){
	                        tab = 'events';
	                    }
	                }

	                this.entry.content.set({'display.page.search.tab': tab}, options);
	            },
	            setDisplayType: function(isTransforming, reportSearch, options) {
	                var type = this.entry.content.get('display.general.type') || 'statistics',
	                    searchSpecificDefaults = reportSearch ? this.getSearchSpecificDefaults(reportSearch) : {};

	                if (type === 'events') {
	                    if (isTransforming) {
	                        type = searchSpecificDefaults['display.general.type'] || 'statistics';
	                    }
	                } else if ((type === 'statistics') || (type === 'visualizations')) {
	                    if (!isTransforming){
	                        type = 'events';
	                    }
	                }
	                this.entry.content.set({'display.general.type': type}, options);
	            },
	            getSearchSpecificDefaults: function(reportSearch) {
	                // if the search string is using 'geostats', the report should show as a map
	                if (/(^geostats)|([|\s]geostats\s)/.test(reportSearch || '')) {
	                    return ({
	                        'display.general.type': 'visualizations',
	                        'display.page.search.tab': 'visualizations',
	                        'display.visualizations.type': 'mapping',
	                        'display.visualizations.mapping.type': 'marker'
	                    });
	                }
	                // if the search string is using 'geom', the report should show as a choropleth map
	                if ((/\|\s*geom\s+/).test(reportSearch || '')) {
	                    return ({
	                        'display.general.type': 'visualizations',
	                        'display.page.search.tab': 'visualizations',
	                        'display.visualizations.type': 'mapping',
	                        'display.visualizations.mapping.type': 'choropleth'
	                    });
	                }
	                return {};
	            },
	            isDirty: function(otherReport, whitelist) {
	                whitelist = whitelist || ReportModel.DIRTY_WHITELIST;
	                return SavedSearch.prototype.isDirty.call(this, otherReport, whitelist);
	            },
	            canDelete: function() {
	                return this.entry.links.get("remove") ? true : false;
	            },
	            canWrite: function(canScheduleSearch, canRTSearch) {
	                return this.entry.acl.get('can_write') &&
	                        !(this.entry.content.get('is_scheduled') && !canScheduleSearch) &&
	                        !(this.isRealTime() && !canRTSearch);
	            },
	            canClone: function(canScheduleSearch, canRTSearch) {
	                return !(this.entry.content.get('is_scheduled') && !canScheduleSearch) &&
	                        !(this.isRealTime() && !canRTSearch);
	            },
	            canEmbed: function(canScheduleSearch, canEmbed) {
	                return this.entry.acl.get('can_write') && canScheduleSearch && !this.isRealTime() && canEmbed;
	            },
	            canMove: function() {
	                return this.entry.links.has("move");
	            },
	            canAdvancedEdit: function() {
	                return this.entry.acl.get('can_write');
	            },
	            routeToViewReport: function(root, locale, app, sid) {
	                var data = {s: this.id};

	                if (this.isAlert()) {
	                    return route.alert(root, locale, app, {data: data});
	                }
	                if (sid) {
	                    data.sid = sid;
	                }
	                return route.report(root, locale, app, {data: data});
	            },
	            getNearestMaxlines: function() {
	                var maxLines = parseInt(this.entry.content.get('display.events.maxLines'), 10);
	                if (isNaN(maxLines)) {
	                    maxLines = 5;
	                }
	                return "" + math_utils.nearestMatchAndIndexInArray(maxLines, [5, 10, 20, 50, 100, 200, 0]).value;
	            },
	            getSortingSearch: function() {
	                var search,
	                    content = this.entry.content,
	                    offset = content.get('display.prefs.events.offset'),
	                    count = content.get('display.prefs.events.count'),
	                    sortColumn = content.get('display.events.table.sortColumn');

	                if (sortColumn && !_.isUndefined(offset) && !_.isUndefined(count)) {
	                    search = ('| sort ' + (parseInt(offset, 10) + parseInt(count, 10)) + ((content.get('display.events.table.sortDirection') === 'desc') ? ' - ': ' ') + sortColumn);
	                }
	                return search;
	            },
	            getDisplayEventsFields: function(options) {
	                options || (options={});
	                var object,
	                    fields = [];
	                _.each(this.entry.content.toObject('display.events.fields') || [], function(value) {
	                    if (options.key) {
	                        object = {};
	                        object[options.key] = value;
	                        fields.push(object);
	                    } else {
	                        fields.push(value);
	                    }
	                });

	                return fields;
	            },
	            getDispatchAs: function() {
	                if (this.entry.acl.get('sharing') === splunkd_utils.USER) {
	                    return 'owner';
	                } else {
	                    return this.entry.content.get('dispatchAs');
	                }
	            },
	            syncDrilldownMode: function() {
	                // Keep the list/raw drilldown modes in sync
	                var displayType = this.entry.content.get('display.events.type'),
	                    listDrilldown = this.entry.content.get('display.events.list.drilldown'),
	                    rawDrilldown = this.entry.content.get('display.events.raw.drilldown');
	                if (displayType === 'list') {
	                    this.entry.content.set('display.events.raw.drilldown', listDrilldown);
	                } else if (displayType === 'raw') {
	                    this.entry.content.set('display.events.list.drilldown', rawDrilldown);
	                }
	            },
	            syncCustomSampleRatio: function() {
	                if (this.isSampled()) {
	                    var sampleRatio = this.entry.content.get('dispatch.sample_ratio');
	                    if ((_.indexOf(ReportModel.PRESET_SAMPLE_RATIOS, sampleRatio) === -1)) {
	                        this.entry.content.set('display.prefs.customSampleRatio', sampleRatio);
	                    }
	                }
	            },
	            //SPL-106268: Disable sampling when time range is real-time.
	            adjustSampleRatio: function() {
	                if (this.isSampled() && this.isRealTime()) {
	                    this.entry.content.set('dispatch.sample_ratio', '1');
	                }
	            },

	            getScheduleString: function() {
	                var text = _('Not Applicable for Real-time Reports.').t(),
	                    cronModel;

	                // Check if real-time
	                if (!this.isRealTime()) {
	                    if (this.entry.content.get('is_scheduled')) {
	                        cronModel = Cron.createFromCronString(this.entry.content.get('cron_schedule'));
	                        text = cronModel.getScheduleString();
	                    } else {
	                        text = _('Not scheduled.').t();
	                    }
	                }

	                return text;
	            }
	        },
	        {
	            DOCUMENT_TYPES: {
	                ALERT: 'alert',
	                PIVOT_REPORT: 'pivot-report',
	                REPORT: 'report'
	            },
	            DIRTY_WHITELIST: [
	                '^dispatch\.earliest_time$',
	                '^dispatch\.latest_time$',
	                '^dispatch\.sample_ratio',
	                '^display\.*$',
	                '^search$'
	            ],
	            PRESET_SAMPLE_RATIOS: ["1", "10", "100", "1000", "10000", "100000"],
	            ARCHIVE_KICKOFF_SEARCH_ID: 'Bucket Copy Trigger'
	        });
	        return ReportModel;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/saved/Search":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("util/splunkd_utils"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("models/SplunkDBase"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, Backbone, splunkd_utils, BaseModel, SplunkDBaseModel, _, splunkUtil) {
	        /**
	         * @constructor
	         * @memberOf models
	         * @name SavedSearch
	         * @extends models.Base
	         */
	        var Embed = BaseModel.extend(/** @lends models.SavedSearch.prototype */{
	            initialize: function(attributes, options) {
	                BaseModel.prototype.initialize.apply(this, arguments);
	            },
	            sync: function(method, model, options) {
	                var defaults = {
	                    data: {
	                        output_mode: 'json'
	                    }
	                };
	                switch(method) {
	                    case 'update':
	                        defaults.processData = true;
	                        defaults.type = 'POST';
	                        defaults.url = splunkd_utils.fullpath(model.id);
	                        $.extend(true, defaults, options);
	                        break;
	                    default:
	                        throw new Error('invalid method: ' + method);
	                }
	                return Backbone.sync.call(this, method, model, defaults);
	            }
	        });
	        var URL = 'saved/searches';
	        return SplunkDBaseModel.extend({
	            url: URL,
	            initialize: function() {
	                SplunkDBaseModel.prototype.initialize.apply(this, arguments);
	                this.on('change:id', function() {
	                    var shareLink,
	                        unshareLink;
	                    if (this.id) {
	                        shareLink = this.id + '/embed';
	                        unshareLink = this.id + '/unembed';
	                    }
	                    this.embed.set('id', shareLink);
	                    this.unembed.set('id', unshareLink); 
	                }, this);
	                this.embed.on('sync', function() {
	                    this.safeFetch();
	                }, this);
	                this.unembed.on('sync', function() {
	                    this.safeFetch();
	                }, this);
	            },
	            initializeAssociated: function() {
	                SplunkDBaseModel.prototype.initializeAssociated.apply(this, arguments);
	                this.embed = this.embed || new this.constructor.Embed();
	                this.associated.embed = this.embed;
	                this.unembed = this.unembed || new this.constructor.Embed();
	                this.associated.unembed = this.unembed;
	            },
	            parse: function(response, options) {
	                options = options || {};
	                response = this.migrateAttributes(response, options);
	                _.extend(options, {skipClone: true});
	                this.initializeAssociated();
	                if (splunkd_utils.isExistingEntity(response)) { 
	                    var id = response.entry[0].links.alternate;
	                    this.embed.set('id', id + '/embed');
	                    this.unembed.set('id', id + '/unembed'); 
	                }
	                return SplunkDBaseModel.prototype.parse.call(this, response, options);
	            },
	            setFromSplunkD: function(payload, options) {
	                options = options || {};
	                payload = this.migrateAttributes(payload, options);
	                _.extend(options, {skipClone: true});
	                if (splunkd_utils.isExistingEntity(payload)) {
	                    var id = payload.entry[0].links.alternate;  
	                    this.embed.set('id', id + '/embed');
	                    this.unembed.set('id', id + '/unembed');
	                }
	                return SplunkDBaseModel.prototype.setFromSplunkD.call(this, payload, options);
	            },
	            migrateAttributes: function(response, options) {
	                options = options || {};
	                if (!options.skipClone) {
	                    response = $.extend(true, {}, response);
	                }
	                
	                if (response && response.entry && response.entry[0].content) {
	                    var content = response.entry[0].content,
	                        format = content['action.email.format'];

	                    if (_.indexOf(['html', 'plain', 'pdf'], format) != -1) {
	                        // for backwards compatibility for SPL-79585
	                        response.entry[0].content['action.email.format'] = 'table';
	                        if (format !== 'pdf') {
	                            response.entry[0].content['action.email.content_type'] = format;
	                        }
	                    } else if (format ==='csv' && splunkUtil.normalizeBoolean(content['action.email.sendresults']) &&
	                            !(splunkUtil.normalizeBoolean(content['action.email.sendcsv']) ||
	                                splunkUtil.normalizeBoolean(content['action.email.sendpdf']) ||
	                                splunkUtil.normalizeBoolean(content['action.email.inline']))) {
	                        // for backwards compatibility for SPL-79561
	                        response.entry[0].content['action.email.sendcsv'] = '1';
	                    }
	                }
	                return response;
	            }
	        }, 
	        {
	            Embed: Embed,
	            buildId: function(name, app, owner, sharing) {
	                if (sharing === splunkd_utils.APP || sharing === splunkd_utils.GLOBAL) {
	                    owner = splunkd_utils.NOBODY;
	                } else if (sharing === splunkd_utils.SYSTEM) {
	                    owner = splunkd_utils.NOBODY;
	                    app = splunkd_utils.SYSTEM;
	                }
	                
	                return '/servicesNS/' + encodeURIComponent(owner) +
	                        '/' + encodeURIComponent(app) + '/' + URL + '/' + encodeURIComponent(name);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/data/ui/Viewstate":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/SplunkDBase"),
	        __webpack_require__("util/splunkd_utils"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        BaseModel,
	        splunkd_utils,
	        splunkUtil
	    ) {
	        return BaseModel.extend({
	            url: 'data/ui/viewstates',
	            initialize: function() {
	                BaseModel.prototype.initialize.apply(this, arguments);
	            },
	            getFlattenedAndDedupedModules: function() {
	                var content = this.entry.content.toJSON(),
	                    flattenedModules = {};
	                
	                delete content['eai:acl'];
	                delete content['eai:appName'];
	                delete content['eai:userName'];
	                delete content['disabled'];
	            
	                //flatten the contents
	                _.each(content, function(value, module){
	                    var keySplit = module.split("."),
	                        key = keySplit[0].split("_")[0],
	                        child = keySplit[1];
	                    
	                    if (!flattenedModules[key]) {
	                        flattenedModules[key] = {};
	                    }
	                    
	                    if (!flattenedModules[key][child]) {
	                        flattenedModules[key][child] = value;
	                    }
	                });

	                return flattenedModules;
	            },
	            convertToReportPoperties: function() {
	                var flattenedModules = this.getFlattenedAndDedupedModules(),
	                    props = {},
	                    eventsTabSelected, statsTabSelected, vizTabSelected,
	                    buttonSwitcher, count, softWrap, segmentation, fields, rowNumbers;
	                
	                /*
	                 * AxisScaleFormatter.default => display.visualizations.charting.axisY.scale
	                 * ChartTitleFormatter.default => NOT IMPLEMENTED
	                 * ChartTypeFormatter.default => display.visualizations.charting.chart
	                 * FancyChartTypeFormatter.default => display.visualizations.charting.chart
	                 * LegendFormatter.default => display.visualizations.charting.legend.placement
	                 * LineMarkerFormatter.default => display.visualizations.charting.axisX.markers (MISSING)
	                 * NullValueFormatter.default => display.visualizations.charting.chart.nullValueMode
	                 * SplitModeFormatter.default => NOT IMPLEMENTED
	                 * StackModeFormatter.default => display.visualizations.charting.chart.stackMode
	                 * XAxisTitleFormatter.default => display.visualizations.charting.axisTitleX.text
	                 * YAxisRangeMaximumFormatter.default => display.visualizations.charting.axisY.maximumNumber
	                 * YAxisRangeMinimumFormatter.default => display.visualizations.charting.axisY.minimumNumber
	                 * YAxisTitleFormatter.default => display.visualizations.charting.axisTitleY.text
	                 * FlashChart.height => display.visualizations.chartHeight
	                 * FlashTimeline.height => NOT IMPLEMENTED
	                 * FlashTimeline.minimized => display.page.search.timeline.format = [hidden|compact|full] (MUST REMAP FROM BOOLEAN)
	                 * FlashWrapper.height => NOT IMPLEMENTED
	                 * JSChart.height => display.visualizations.chartHeight
	                 * Count.default OR Count.count => display.prefs.statistics.count OR display.prefs.events.count
	                 * DataOverlay.default OR DataOverlay.dataOverlayMode => display.statistics.overlay
	                 * HiddenSoftWrap.enable => display.events.list.wrap OR display.events.table.wrap OR display.statistics.wrap
	                 * SoftWrap.enable => display.events.list.wrap OR display.events.table.wrap OR display.statistics.wrap
	                 * MaxLines.default OR MaxLines.maxLines => display.events.maxLines
	                 * RowNumbers.default OR RowNumbers.displayRowNumbers => display.events.rowNumbers OR display.statistics.rowNumbers
	                 * Segmentation.default OR Segmentation.segmentation => display.events.raw.drilldown OR display.events.list.drilldown OR display.statistics.drilldown
	                 * FieldPicker.fields => display.events.fields
	                 * FieldPicker.sidebarDisplay => display.page.search.showFields
	                 * ButtonSwitcher.selected => display.general.type REQUIRES REMAPPING
	                 * 
	                 * 
	                Possible values from flashtimeline:
	                |    ButtonSwitcher_0_9_0.selected =  "splIcon-results-table"
	                |    ChartTypeFormatter_0_14_0.default =  "column"
	                |    Count_0_8_1.default =  "50"
	                |    DataOverlay_0_14_0.dataOverlayMode =  "none"
	                |    DataOverlay_0_14_0.default =  "heatmap"
	                |    FieldPicker_0_6_0.fields =  "host,sourcetype,source"
	                |    FieldPicker_0_6_0.sidebarDisplay =  "True"
	                |    FlashTimeline_0_4_1.height =  "95px"
	                |    FlashTimeline_0_4_1.minimized =  "False"
	                |    JSChart_0_14_1.height =  "300px"
	                |    LegendFormatter_0_20_0.default =  "top"
	                |    MaxLines_0_14_0.default =  "10"
	                |    MaxLines_0_14_0.maxLines =  "10"
	                |    NullValueFormatter_0_19_0.default =  "gaps"
	                |    RowNumbers_0_13_0.default =  "true"
	                |    RowNumbers_0_13_0.displayRowNumbers =  "true"
	                |    RowNumbers_1_13_0.default =  "true"
	                |    RowNumbers_1_13_0.displayRowNumbers =  "true"
	                |    Segmentation_0_15_0.default =  "full"
	                |    Segmentation_0_15_0.segmentation =  "full"
	                |    SoftWrap_0_12_0.enable =  "True"
	                |    SplitModeFormatter_0_18_0.default =  "false"
	                |    StackModeFormatter_0_17_0.default =  "default"
	                
	                From Report Builder:
	                |    ChartTypeFormatter_0_4_0.default =  "column"
	                |    DataOverlay_0_5_0.dataOverlayMode =  "none"
	                |    DataOverlay_0_5_0.default =  "none"
	                |    JSChart_0_4_1.height =  "300px"
	                |    LegendFormatter_0_10_0.default =  "right"
	                |    LineMarkerFormatter_0_7_0.default =  "false"
	                |    NullValueFormatter_0_9_0.default =  "gaps"
	                |    SplitModeFormatter_0_8_0.default =  "false"
	                |    StackModeFormatter_0_7_0.default =  "default"
	                
	                From Advanced Charting:
	                |    ChartTypeFormatter_0_7_0.default =  "line"
	                |    JSChart_0_7_1.height =  "300px"
	                |    LegendFormatter_0_13_0.default =  "right"
	                |    LineMarkerFormatter_0_10_0.default =  "false"
	                |    NullValueFormatter_0_12_0.default =  "gaps"
	                |    SplitModeFormatter_0_11_0.default =  "false"
	                |    StackModeFormatter_0_10_0.default =  "default"
	                 * 
	                 */
	                
	                if (flattenedModules['ButtonSwitcher']) {
	                    buttonSwitcher = flattenedModules['ButtonSwitcher']['selected'];
	                    if (buttonSwitcher === "splIcon-results-table") {
	                        props['display.general.type'] = 'statistics';
	                        statsTabSelected = true;
	                    } else if (buttonSwitcher === "splIcon-events-list") {
	                        props['display.general.type'] = 'events';
	                        eventsTabSelected = true;
	                    }
	                } else {
	                    props['display.general.type'] = 'visualizations';
	                    vizTabSelected = true;
	                }
	                
	                if (flattenedModules['AxisScaleFormatter']) {
	                    props['display.visualizations.charting.axisY.scale'] = flattenedModules['AxisScaleFormatter']['default'];
	                }
	                if (flattenedModules['FancyChartTypeFormatter']) {
	                    props['display.visualizations.type'] = 'charting';
	                    props['display.visualizations.charting.chart'] = flattenedModules['FancyChartTypeFormatter']['default'];
	                }
	                if (flattenedModules['ChartTypeFormatter']) {
	                    //unfancy wins
	                    props['display.visualizations.type'] = 'charting';
	                    props['display.visualizations.charting.chart'] = flattenedModules['ChartTypeFormatter']['default'];
	                }
	                if (flattenedModules['LegendFormatter']) {
	                    props['display.visualizations.charting.legend.placement'] = flattenedModules['LegendFormatter']['default'];
	                }
	                if (flattenedModules['LineMarkerFormatter']) {
	                    props['display.visualizations.charting.axisX.markers'] = splunkd_utils.normalizeBooleanTo01String(flattenedModules['LineMarkerFormatter']['default']);
	                }
	                if (flattenedModules['NullValueFormatter']) {
	                    props['display.visualizations.charting.chart.nullValueMode'] = flattenedModules['NullValueFormatter']['default'];
	                }
	                if (flattenedModules['StackModeFormatter']) {
	                    props['display.visualizations.charting.chart.stackMode'] = flattenedModules['StackModeFormatter']['default'];
	                }
	                if (flattenedModules['XAxisTitleFormatter']) {
	                    props['display.visualizations.charting.axisTitleX.text'] = flattenedModules['XAxisTitleFormatter']['default'];
	                }
	                if (flattenedModules['YAxisRangeMaximumFormatter']) {
	                    props['display.visualizations.charting.axisY.maximumNumber'] = flattenedModules['YAxisRangeMaximumFormatter']['default'];
	                }
	                if (flattenedModules['YAxisRangeMinimumFormatter']) {
	                    props['display.visualizations.charting.axisY.minimumNumber'] = flattenedModules['YAxisRangeMinimumFormatter']['default'];
	                }
	                if (flattenedModules['YAxisRangeMinimumFormatter']) {
	                    props['display.visualizations.charting.axisY.minimumNumber'] = flattenedModules['YAxisRangeMinimumFormatter']['default'];
	                }
	                if (flattenedModules['YAxisTitleFormatter']) {
	                    props['display.visualizations.charting.axisTitleY.text'] = flattenedModules['YAxisTitleFormatter']['default'];
	                }
	                if (flattenedModules['FlashChart']) {
	                    props['display.visualizations.chartHeight'] = (flattenedModules['FlashChart']['height']).replace('px', '');
	                }
	                if (flattenedModules['JSChart']) {
	                    //The viewstate will have either FlashChart OR JSChart
	                    props['display.visualizations.chartHeight'] = (flattenedModules['JSChart']['height']).replace('px', '');
	                }                
	                if (flattenedModules['FlashTimeline']) {
	                    if (splunkUtil.normalizeBoolean(flattenedModules['FlashTimeline']['minimized'])) {
	                        props['display.page.search.timeline.format'] = 'compact';
	                    } else {
	                        props['display.page.search.timeline.format'] = 'hidden';
	                    }
	                }
	                if (flattenedModules['Count']) {
	                    count = flattenedModules['Count']['default'] || flattenedModules['Count']['count'];
	                    
	                    if (statsTabSelected || vizTabSelected) {
	                        props['display.prefs.statistics.count'] = count;
	                    } else {
	                        props['display.prefs.events.count'] = count;
	                    }    
	                }
	                if (flattenedModules['DataOverlay']) {
	                    props['display.statistics.overlay'] = flattenedModules['DataOverlay']['default'] || flattenedModules['DataOverlay']['dataOverlayMode'];
	                }
	                if (flattenedModules['HiddenSoftWrap']) {
	                    softWrap = splunkd_utils.normalizeBooleanTo01String(flattenedModules['HiddenSoftWrap']['enable']);
	                    
	                    if (statsTabSelected || vizTabSelected) {
	                        props['display.statistics.wrap'] = softWrap;
	                    } else {
	                        props['display.events.list.wrap'] = softWrap;
	                        props['display.events.table.wrap'] = softWrap;                       
	                    }
	                }
	                if (flattenedModules['SoftWrap']) {
	                    //non hidden wins
	                    softWrap = splunkd_utils.normalizeBooleanTo01String(flattenedModules['SoftWrap']['enable']);
	                    
	                    if (statsTabSelected || vizTabSelected) {
	                        props['display.statistics.wrap'] = softWrap;
	                    } else {
	                        props['display.events.list.wrap'] = softWrap;
	                        props['display.events.table.wrap'] = softWrap;                        
	                    }
	                }
	                if (flattenedModules['MaxLines']) {
	                    props['display.events.maxLines'] = flattenedModules['MaxLines']['default'] || flattenedModules['MaxLines']['maxLines'];
	                }
	                if (flattenedModules['RowNumbers']) {
	                    rowNumbers = flattenedModules['RowNumbers']['default'] || flattenedModules['RowNumbers']['displayRowNumbers'];
	                    rowNumbers = splunkd_utils.normalizeBooleanTo01String(rowNumbers);
	                    
	                    if (statsTabSelected || vizTabSelected) {
	                        props['display.statistics.rowNumbers'] = rowNumbers;
	                    } else {
	                        props['display.events.rowNumbers'] = rowNumbers;
	                    }
	                }
	                if (flattenedModules['Segmentation']) {
	                    segmentation = flattenedModules['Segmentation']['default'] || flattenedModules['Segmentation']['segmentation'];
	                    
	                    if (statsTabSelected || vizTabSelected) {
	                        if (['row', 'cell', 'none'].indexOf(segmentation) > -1) {
	                            props['display.statistics.drilldown'] = segmentation;
	                        }
	                    } else {
	                        if (['inner', 'outer', 'full', 'none'].indexOf(segmentation) > -1) {
	                            props['display.events.list.drilldown'] = segmentation;
	                            props['display.events.raw.drilldown'] = segmentation;
	                        }
	                    }
	                }
	                if (flattenedModules['FieldPicker']) {
	                    //example: display.events.fields":"[\"host\",\"source\",\"sourcetype\"]"
	                    fields = flattenedModules['FieldPicker']['fields'].split(',');
	                    props['display.events.fields'] = '[\"' + fields.join('\",\"') + '\"]';
	                    props['display.page.search.showFields'] = splunkd_utils.normalizeBooleanTo01String(flattenedModules['FieldPicker']['sidebarDisplay']);
	                }
	                
	                return props;
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/shared/Cron":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, BaseModel, splunkUtil) {
	        var Cron = BaseModel.extend({
	            initialize: function() {
	                BaseModel.prototype.initialize.apply(this, arguments);
	            },
	            defaults: {
	                minute: '0',
	                hour: '6',
	                dayOfMonth: '*',
	                month: '*',
	                dayOfWeek: "1",
	                cronType: 'weekly',
	                cron_schedule: '0 6 * * 1'
	            },
	            validation: {
	                'cron_schedule': function(value, attr, computedState) {
	                    var type = computedState['ui.type'] || 'scheduled';
	                    if (type === 'scheduled' && computedState['cronType'] === 'custom') {
	                        if (_.isUndefined(value) || $.trim(value).length === 0) {
	                            return _("Custom cron is required").t();
	                        }
	                        if (!splunkUtil.validateCronString(value)) {
	                            return _("Invalid cron").t();
	                        }
	                    }
	                }
	            },
	            setDefaults: function() {
	                switch (this.get('cronType')) {
	                    case Cron.CRON_TYPES.HOURLY:
	                        this.set('minute', '0');
	                        break;
	                    case Cron.CRON_TYPES.DAILY:
	                        this.set('hour', '0');
	                        break;
	                    case Cron.CRON_TYPES.WEEKLY:
	                        this.set({
	                            dayOfWeek: '1',
	                            hour: '0'
	                        });
	                        break;
	                    case Cron.CRON_TYPES.MONTHLY:
	                        this.set({
	                            dayOfMonth: '1',
	                            hour: '0'
	                        });
	                        break;
	                }
	            },
	            setFromCronString: function(cronString) {
	                this.set(Cron.getObjFromString(cronString));
	            },
	            getCronString: function() {
	                var minute = this.get('minute'),
	                    hour = this.get('hour'),
	                    dayOfMonth = this.get('dayOfMonth'),
	                    month = this.get('month'),
	                    dayOfWeek = this.get('dayOfWeek'),
	                    cron_schedule = this.get('cron_schedule'),
	                    cronType = this.get('cronType');

	                switch(cronType) {
	                    case Cron.CRON_TYPES.HOURLY:
	                        return minute + ' * * * *';
	                    case Cron.CRON_TYPES.DAILY:
	                        return '0 ' + hour +  ' * * *';
	                    case Cron.CRON_TYPES.WEEKLY:
	                        return '0 ' + hour +  ' * * ' + dayOfWeek;
	                    case Cron.CRON_TYPES.MONTHLY:
	                        return '0 ' + hour + ' ' + dayOfMonth + ' * *';
	                    case Cron.CRON_TYPES.CUSTOM:
	                        return cron_schedule;
	                }
	            },
	            getDayOfWeekName: function() {
	                return Cron.getDayOfWeekNameFromNum(parseInt(this.get('dayOfWeek'), 10));
	            },
	            getScheduleString: function() {
	                switch(this.get('cronType')) {
	                    case 'hourly':
	                        return splunkUtil.sprintf(_("Hourly, at %s minutes past the hour.").t(), this.get('minute'));
	                    case 'daily':
	                        return splunkUtil.sprintf(_("Daily, at %s:00.").t(), this.get('hour'));
	                    case 'weekly':
	                        return splunkUtil.sprintf(_("Weekly, %(dayOfWeek)s at %(hour)s:00.").t(), { dayOfWeek: this.getDayOfWeekName(), hour: this.get('hour')});
	                    case 'monthly':
	                        return splunkUtil.sprintf(_("Monthly, on day %(dayOfMonth)s at %(hour)s:00.").t(), { dayOfMonth: this.get('dayOfMonth'), hour: this.get('hour')});
	                    case 'custom':
	                        return _("Cron Schedule.").t();
	                }
	            }
	        },
	        // class-level properties
	        {
	            createFromCronString: function(cronString) {
	                var cronModel = new Cron(Cron.getObjFromString(cronString));

	                return cronModel;
	            },
	            getObjFromString: function (cronString) {
	                var pieces = cronString.trim().split(/\s+/);
	                if(!pieces || pieces.length !== 5) {
	                    throw splunkUtil.sprintf(_("Invalid cron string: %s").t(), cronString);
	                }

	                var cronObj = {
	                    minute: pieces[0],
	                    hour: pieces[1],
	                    dayOfMonth: pieces[2],
	                    month: pieces[3],
	                    dayOfWeek: pieces[4],
	                    cron_schedule: pieces.join(' ')
	                };
	                cronObj.cronType = Cron.determineCronType(cronObj);

	                return cronObj;
	            },
	            determineCronType: function(cronObj) {
	                var minute = cronObj.minute,
	                    hour = cronObj.hour,
	                    dayOfMonth = cronObj.dayOfMonth,
	                    month = cronObj.month,
	                    dayOfWeek = cronObj.dayOfWeek;

	                //outliers
	                if (month !== "*") {
	                    return Cron.CRON_TYPES.CUSTOM;
	                }

	                //if day of week is not * then we to test for weekly
	                if (/^[0-6]$/.test(dayOfWeek)) {
	                    if (
	                        (minute === '0') &&
	                        (/^([0-9]|1[0-9]|2[0-3])$/.test(hour)) &&
	                        (dayOfMonth === '*')
	                    ) {
	                        return Cron.CRON_TYPES.WEEKLY;
	                    }
	                } else if (dayOfWeek === '*') {
	                    //test for monthly
	                    if (/^([0-9]|[1-2][0-9]|3[0-1])$/.test(dayOfMonth)) {
	                        if (
	                            (/^([0-9]|1[0-9]|2[0-3])$/.test(hour)) &&
	                            (minute === '0')
	                        ) {
	                            return Cron.CRON_TYPES.MONTHLY;
	                        }
	                    } else if (dayOfMonth === '*') {
	                        //test for daily by testing hour
	                        if (
	                            (/^([0-9]|1[0-9]|2[0-3])$/.test(hour)) &&
	                            (minute === '0')
	                        ) {
	                            return Cron.CRON_TYPES.DAILY;
	                        } else if (
	                            hour === '*' &&
	                            (/^(0|15|30|45)$/.test(minute))
	                        ) {
	                            return Cron.CRON_TYPES.HOURLY;
	                        }
	                    }
	                }

	                return Cron.CRON_TYPES.CUSTOM;
	            },
	            getDayOfWeekNameFromNum: function(dayOfWeekNum) {
	                switch(dayOfWeekNum) {
	                    case 0:
	                        return _("Sunday").t();
	                    case 1:
	                        return _("Monday").t();
	                    case 2:
	                        return _("Tuesday").t();
	                    case 3:
	                        return _("Wednesday").t();
	                    case 4:
	                        return _("Thursday").t();
	                    case 5:
	                        return _("Friday").t();
	                    case 6:
	                        return _("Saturday").t();
	                    case 7:
	                        return _("Sunday").t();
	                }
	            },
	            CRON_TYPES : {
	                HOURLY: 'hourly',
	                DAILY: 'daily',
	                WEEKLY: 'weekly',
	                MONTHLY: 'monthly',
	                CUSTOM: 'custom'
	            }
	        });

	        return Cron;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "collections/search/Jobs":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("models/search/Job"),
	        __webpack_require__("models/services/search/jobs/BulkControl"),
	        __webpack_require__("collections/services/search/Jobs")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        $,
	        JobModel,
	        BulkControlModel,
	        JobsCollection
	    ) {
	        return JobsCollection.extend({
	            model: JobModel,
	            initialize: function() {
	                JobsCollection.prototype.initialize.apply(this, arguments);
	            },
	            initializeAssociated: function() {
	                this.bulkControl = this.bulkControl || new BulkControlModel();
	                JobsCollection.prototype.initializeAssociated.apply(this, arguments);
	            },
	            getAllSids: function() {
	                return this.map(function(job) {
	                    return job.get('id');
	                });
	            },
	            noParamBulkControlUpdate: function(action, sids, options) {
	                if(options && options.data) {
	                    delete options.data;
	                }

	                return this.bulkControl.save({}, $.extend(true, options, { traditional: true, data: { action: action, sid: sids } }));
	            },
	            fetchNonAutoSummaryJobs: function(options) {
	                //this is the port of modules/jobs/JobManager.py's generateResults()
	                var omit_autosummary = '(NOT CASE(_ACCELERATE_) AND NOT CASE(_AUTOSUMMARY_) AND NOT "|*summarize*action=")',
	                    filters = {};

	                options = options || {};
	                options.data = options.data || {};
	                options.data.count = options.data.count || 10;
	                options.data.offset = options.data.offset || 0;
	                // The backend requires underscore casing for these while the rest of the code
	                // (like in views/shared/TableHead.js) requires sortKey and sortDirection. Normalize.
	                options.data.sort_key = options.data.sortKey || 'dispatch_time';
	                options.data.sort_dir = options.data.sortDirection|| 'desc';

	                delete options.data.sortKey;
	                delete options.data.sortDirection;
	                
	                //Omit _AUTOSUMMARY_ jobs and their summarization jobs
	                if (options.data.search) {
	                    options.data.search = omit_autosummary + ' AND (' + options.data.search + ')';
	                } else {
	                    options.data.search = omit_autosummary;
	                }
	                
	                //Omit data preview jobs by adding to the search string.
	                filters['NOT isDataPreview'] = '1';
	                
	                if (options.data.app && (options.data.app !== '*')){
	                    filters['eai:acl.app'] = options.data.app;
	                }
	                delete options.data.app;
	                
	                if (options.data.owner && (options.data.owner !== '*')){
	                    filters['eai:acl.owner'] = options.data.owner;
	                }
	                delete options.data.owner;
	                
	                if (options.data.label){
	                    filters.label = options.data.label;
	                }
	                delete options.data.label;
	                    
	                if (options.data.jobStatus && (options.data.jobStatus !== '*')){
	                    if (options.data.jobStatus === 'running') {
	                        filters['isDone'] = 0;
	                        filters['isPaused'] = 0;
	                        filters['isFinalized'] = 0;
	                        filters['isFailed'] = 0;
	                    } else if (options.data.jobStatus === 'done') {
	                        filters['isDone'] = 1;
	                    } else if (options.data.jobStatus === 'queued') {
	                        filters['dispatchState'] = "QUEUED";
	                    } else if (options.data.jobStatus === 'parsing') {
	                        filters['dispatchState'] = "PARSING";
	                    } else if (options.data.jobStatus === 'paused') {
	                        filters['isPaused'] = 1;
	                    } else if (options.data.jobStatus === 'finalizing') {
	                        filters['dispatchState'] = "FINALIZING";
	                    } else if (options.data.jobStatus === 'finalized') {
	                        filters['isFinalized'] = 1;
	                    } else if (options.data.jobStatus === 'failed') {
	                        filters['isFailed'] = 1;
	                    } else if (options.data.jobStatus === 'background') {
	                        filters['custom.isBackground'] = 1;
	                        filters['isDone'] = 0;
	                    }
	                }
	                delete options.data.jobStatus;
	                
	                _.each(filters, function(value, key) {
	                    options.data.search = options.data.search + ' ' + key + '="' + value + '"';
	                });

	                return this.fetch(options);
	            },
	            deleteAll: function(options) {
	                options = options || {};
	                return this.noParamBulkControlUpdate('cancel', this.getAllSids(), options);
	            },
	            touchAll: function(options) {
	                options = options || {};
	                return this.noParamBulkControlUpdate('touch', this.getAllSids(), options);
	            },
	            pauseAll: function(options) {
	                options = options || {};
	                return this.noParamBulkControlUpdate('pause', this.getAllSids(), options);
	            },
	            resumeAll: function(options) {
	                options = options || {};
	                return this.noParamBulkControlUpdate('unpause', this.getAllSids(), options);
	            },
	            stopAll: function(options) {
	                options = options || {};
	                return this.noParamBulkControlUpdate('finalize', this.getAllSids(), options);
	            },
	            getRunningJobs: function() {
	                return this.filter(function(searchJob) {
	                    return searchJob.isRunning();
	                });
	            },
	            getPausedJobs: function() {
	                return this.filter(function(searchJob) {
	                    return searchJob.isPaused();
	                });
	            },
	            getNotDoneJobs: function() {
	                return this.filter(function(searchJob) {
	                    return !searchJob.isDone();
	                });
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/search/Job":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("models/services/search/Job"),
	        __webpack_require__("models/services/saved/Search"),
	        __webpack_require__("util/splunkd_utils"),
	        __webpack_require__("util/time"),
	        __webpack_require__("util/moment"),
	        __webpack_require__("util/console"),
	        __webpack_require__("util/format_numbers_utils"),
	        __webpack_require__("shim/splunk.util"),
	        __webpack_require__("stubs/i18n"),
	        __webpack_require__("helpers/Session"),
	        __webpack_require__("helpers/search/ArtifactFetchManager"),
	        __webpack_require__("util/Ticker"),
	        __webpack_require__("util/time")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, Backbone, SearchJob, SavedSearch, splunkd_utils, time_utils, moment, console, format_numbers_utils, splunkUtil, i18n, Session, ArtifactFetchManager, Ticker, timeUtils) {
	        /**
	         * @constructor
	         * @memberOf models
	         * @name Job
	         * @extends models.SearchJob
	         * @description
	         * Child of SearchJob Model
	         */
	        var JobModel = SearchJob.extend(/** @lends models.Job.prototype */{
	            initialize: function(attributes, options) {
	                SearchJob.prototype.initialize.apply(this, arguments);
	                // Only store recognized options to avoid memory leak
	                this.options = _.pick(options || {}, 'delay', 'aggressiveDelay', 'processKeepAlive', 'keepAliveInterval');

	                this.setInstanceDefaults();

	                this.entry.content.on('change', function() {
	                    var changedAttributes = this.entry.content.changedAttributes(),
	                        previousAttributes = this.entry.content.previousAttributes();

	                    this.handleJobProgress(changedAttributes, previousAttributes);
	                }, this);

	                this.entry.content.on("change:dispatchState", function() {
	                    if (this.entry.content.get('dispatchState') && !this.isPreparing() && !this.prepared) {
	                        this.prepared = true;
	                        this.trigger("prepared");
	                    }

	                    //stop polling when the job is done
	                    if (this.isDone() || this.entry.content.get('isFailed')) {
	                        this.stopPolling();
	                    }

	                }, this);

	                this.entry.content.on("change:isDone", function() {
	                    if (this.isDone()) {
	                        this.trigger('done');
	                    }
	                }, this);

	                //poll aggressively to begin with
	                this.ticker = new Ticker({interval:this.aggressivePollingDelay});
	                this.ticker.on('tick', function() {
	                    this.safeFetch({
	                        data: {
	                            app: this.entry.acl.get('app'),
	                            owner: this.entry.acl.get('owner'),
	                            sharing: this.entry.acl.get('sharing')
	                        }
	                    });
	                }, this);

	                this.on("startPolling", function() {
	                    var _private_progress = function() {
	                        var count;
	                        this.aggressivePollingDelay *= 1.5;
	                        this.aggressivePollingDelay = Math.round(this.aggressivePollingDelay);

	                        if (this.isDone() || this.entry.content.get('isFailed')) {
	                            this.off('sync', _private_progress, this);
	                            return;
	                        }

	                        if (this.isReportSearch()) {
	                            if (this.entry.content.get('isPreviewEnabled')) {
	                                count = this.entry.content.get('resultPreviewCount');
	                            } else {
	                                count = this.entry.content.get('resultCount');
	                            }
	                        } else {
	                            count = this.entry.content.get('eventAvailableCount');
	                        }

	                        if ((count > 0) || (this.aggressivePollingDelay >= this.pollingDelay)) {
	                            this.off('sync', _private_progress, this);
	                            this.trigger('slowDownPoller');
	                        } else {
	                            if (this._poll) {
	                                this.ticker.restart({
	                                    interval: this.aggressivePollingDelay
	                                });
	                            }
	                        }

	                    }.bind(this);

	                    this.on('slowDownPoller', function() {
	                        if (this._poll) {
	                            this.ticker.restart({
	                                interval: this.pollingDelay
	                            });
	                        }
	                    }, this);

	                    this.on('sync', _private_progress, this);
	                }, this);

	                this.on("error", function(){
	                    if (splunkd_utils.messagesContainsOneOfTypes(this.error.get("messages"), [splunkd_utils.NOT_FOUND, splunkd_utils.FATAL])) {
	                        this.handleJobDestroy();
	                    }
	                }, this);

	                this.entry.content.on("change:isFailed", function(){
	                    if (this.entry.content.get("isFailed")) {
	                        this.handleJobDestroy();
	                    }
	                }, this);

	                this.on('destroy', this.handleJobDestroy, this);
	            },
	            setInstanceDefaults: function() {
	                //poller setup
	                this._poll = false;
	                this.pollingDelay = this.options.delay || SearchJob.JOB_MAX_POLLING_INTERVAL;
	                this.aggressivePollingDelay = this.options.aggressiveDelay || SearchJob.JOB_MIN_POLLING_INTERVAL;

	                this.prepared = (this.entry.content.get('dispatchState') && !this.isPreparing());
	                this.processKeepAlive = this.options.processKeepAlive || false;
	                this.keepAlivePoller = null;
	                this.keepAliveInterval = this.options.keepAliveInterval;
	            },
	            clear: function() {
	                SearchJob.prototype.clear.apply(this, arguments);
	                this.handleJobDestroy();
	                this.setInstanceDefaults();
	                return this;
	            },
	            handleJobProgress: function(changed, previous) {
	                if (this.isNew()) {
	                    return false;
	                }

	                var jobIsRealTime = this.entry.content.get('isRealTimeSearch'),
	                    jobIsReportSearch = this.entry.content.get('reportSearch'),
	                    jobAdHocModeIsVerbose = (this.getAdhocSearchMode() === splunkd_utils.VERBOSE),
	                    jobPreviewEnabled = this.entry.content.get('isPreviewEnabled'),
	                    jobIsDoneInModel = this.isDone(),
	                    changeIsEmpty = _.isEmpty(changed);

	                // if the job is not previewable and also not done, ignore the progress
	                if (
	                    changeIsEmpty ||
	                    (!jobIsDoneInModel && jobIsReportSearch && !jobPreviewEnabled && !jobAdHocModeIsVerbose)
	                ) {
	                    return false;
	                }

	                // examine changes to the job model and determine if the child objects should be updated
	                var scanCountChanged = !_(changed.scanCount).isUndefined() && (changed.scanCount > previous.scanCount),
	                    eventCountChanged = !_(changed.eventCount).isUndefined(),
	                    eventPreviewableCountChanged = !_(changed.eventPreviewableCount).isUndefined(),
	                    resultCountChanged = !_(changed.resultCount).isUndefined(),
	                    jobIsDone = !_(changed.isDone).isUndefined() && (changed.isDone === true),
	                    jobIsUpdated = scanCountChanged || eventCountChanged || resultCountChanged || eventPreviewableCountChanged ||
	                                    jobIsDone || jobIsRealTime;

	                if (!jobIsUpdated) {
	                    return false;
	                }

	                //we have determined that the job has been updated, so trigger all relevant events
	                //we could be smarter about this, for now always notifying each sub-endpoint on every progress event
	                this.trigger("jobProgress");
	                var links = this.entry.links;
	                this.trigger("jobProgress:" + JobModel.RESULTS_PREVIEW, links.get(JobModel.RESULTS_PREVIEW), this);
	                this.trigger("jobProgress:" + JobModel.RESULTS, links.get(JobModel.RESULTS), this);
	                this.trigger("jobProgress:" + JobModel.SUMMARY, links.get(JobModel.SUMMARY), this);
	                this.trigger("jobProgress:" + JobModel.TIMELINE, links.get(JobModel.TIMELINE), this);
	                this.trigger("jobProgress:" + JobModel.EVENTS, links.get(JobModel.EVENTS), this);

	                if (jobIsDone && this.processKeepAlive) {
	                    this.startKeepAlive();
	                }

	                return true;
	            },

	            registerJobProgressLinksChild: function(linksKey, child, callback, scope) {
	                // NOTE: Only register after the job has been created/fetched!
	                var id = this.entry.links.get(linksKey);
	                if (id) {
	                    child.set("id", id);
	                    callback.call(scope);
	                    this.on("jobProgress", callback, scope);
	                    return true;
	                }
	                console.warn('Search Job Model: You attempted to register a child model with a links key that doesn\'t exist. Have you fetched your job lately? Key:', linksKey);
	                return false;
	            },

	            unregisterJobProgressLinksChild: function(callback, scope) {
	                this.off("jobProgress", callback, scope);
	            },

	            handleJobDestroy: function() {
	                this.stopPolling();
	                this.processKeepAlive = false;
	                this.stopKeepAlive();
	                this.fetchAbort();
	                this.control.fetchAbort();
	            },

	            _getKeepAliveInterval: function() {
	                if (this.keepAliveInterval) {
	                    return this.keepAliveInterval;
	                }

	                var ttl = this.getTTL();

	                if (this.isDone()) {
	                    return ttl * 1000 / 2;
	                }

	                var autoCancel = this.getAutoCancel() || Infinity;
	                return Math.min(ttl, autoCancel) * 1000 / 2;
	            },

	            startKeepAlive: function() {
	                //remove/add session observers to start/stop the keep alive poller based on UI session
	                this.stopPolling();
	                Session.on('timeout', this.stopKeepAlive, this);
	                Session.on('start', this.startKeepAlive, this);

	                this.stopKeepAlive(); //ensure you never create more than one keep alive poller

	                var initialInterval = this._getKeepAliveInterval();
	                if (!_.isFinite(initialInterval)) {
	                    console.log('Non-finite keep alive interval (will not ping touch job)');
	                    return;
	                }

	                var isDone = this.isDone();
	                this.keepAlivePoller = new Ticker({
	                    interval: initialInterval
	                });

	                this.keepAlivePoller.on('tick', function() {
	                    this.touch({
	                        success: function() {
	                            console.log('touched job:', this.id);
	                            // If the job has finished since the last tick, get a (possibly) new
	                            // tick interval
	                            if (!isDone && this.isDone()) {
	                                isDone = true;
	                                var newInterval = this._getKeepAliveInterval();
	                                if (newInterval !== this.keepAlivePoller.interval) {
	                                    if (!_.isFinite(newInterval)) {
	                                        console.log('Non-finite keep alive interval (stopping keep alive)');
	                                        this.stopKeepAlive();
	                                    } else {
	                                        this.keepAlivePoller.restart({
	                                            interval: newInterval
	                                        });
	                                    }
	                                }
	                            }
	                        }.bind(this),
	                        error: function(controlModel, response) {
	                            if (response.hasOwnProperty('status') &&
	                                (response.status === 0 || response.status === 12029)) {
	                                return;
	                            }
	                            console.log('error touching job (stopping keep alive):', this.id);
	                            this.stopKeepAlive();
	                        }.bind(this)
	                    });
	                }, this);
	                this.keepAlivePoller.start();
	            },

	            stopKeepAlive: function() {
	                Session.off('timeout', this.stopKeepAlive, this);
	                Session.off('start', this.startKeepAlive, this);
	                if (this.keepAlivePoller) {
	                    this.keepAlivePoller.stop();
	                    this.keepAlivePoller.off();
	                }
	            },

	            startPolling: function(force) {
	                if (!this._poll || force) {
	                    this._poll = true;

	                    //remove/add session observers to start/stop the job poller based on UI session
	                    Session.off('timeout', null, this);
	                    Session.off('start', null, this);
	                    Session.on('timeout', this.stopPolling, this);
	                    Session.on('start', function() {
	                        this.startPolling(true);//force a new update from the server
	                    }, this);

	                    if (force || (!this.isDone() && !this.entry.content.get('isFailed'))) {
	                        this.ticker.start(true);
	                        this.trigger("startPolling");
	                    }
	                }
	            },

	            stopPolling: function() {
	                if (this._poll) {
	                    this._poll = false;
	                    Session.off('timeout', null, this);
	                    Session.off('start', null, this);
	                    this.ticker.stop();
	                    this.aggressivePollingDelay = this.options.aggressiveDelay || SearchJob.JOB_MIN_POLLING_INTERVAL;
	                    console.log("stopPolling has been triggered.");
	                }
	            },

	            noParamControlUpdate: function(action, options) {
	                if(options && options.data) {
	                    delete options.data;
	                }
	                return this.control.save({}, $.extend(true, options, { data: { action: action } }));
	            },

	            pause: function(options) {
	                return this.noParamControlUpdate("pause", options);
	            },

	            unpause: function(options) {
	                return this.noParamControlUpdate("unpause", options);
	            },

	            finalize: function(options) {
	                return this.noParamControlUpdate("finalize", options);
	            },

	            cancel: function(options) {
	                return this.noParamControlUpdate("cancel", options);
	            },

	            touch: function(options) {
	                return this.noParamControlUpdate("touch", options);
	            },

	            share: function(options) {
	                var isRealTime = this.entry.content.get("isRealTimeSearch"),
	                    controlDeferred,
	                    shareDeferred = $.Deferred();

	                //do the work of sharing the job
	                if (isRealTime) {
	                    controlDeferred = this.saveJob({
	                        data: {
	                            auto_cancel: SearchJob.DEFAULT_AUTO_CANCEL
	                        }
	                    });
	                } else {
	                    //if the job is not realtime then we use the job endpoint's inherent clear of auto_pause and auto_cancel
	                    controlDeferred = this.saveJob();
	                }

	                var aclDeferred =  this.makeWorldReadable();

	                $.when(controlDeferred, aclDeferred)
	                    .always(function() {
	                        $.when(this.fetch(options))
	                            .done(function() {
	                                shareDeferred.resolve();
	                            })
	                            .fail(function() {
	                                shareDeferred.reject();
	                            });
	                    }.bind(this));
	                return shareDeferred;
	            },

	            sendToBackground: function(options) {
	                var shouldEmail = this.get("email") || "",
	                    email_subject = this.get("subject") || "",
	                    email_list = this.get("addresses") || "",
	                    perms = this.entry.acl.permsToObj(),
	                    read = perms.read,
	                    everyoneRead = _.indexOf(read, "*") != -1,
	                    individualOpts = _.extend({}, options, {success: null}),
	                    saveDeferred,
	                    readDeferred,
	                    backgroundDeferred = $.Deferred();

	                if (shouldEmail) {
	                    saveDeferred = this.saveJob(
	                        $.extend(true, {}, {
	                            data: {
	                                email_list: email_list,
	                                email_subject: email_subject
	                            }
	                        }, individualOpts)
	                    );
	                } else {
	                    saveDeferred = this.saveJob(individualOpts);
	                }
	                if (!everyoneRead) {
	                    readDeferred = this.makeWorldReadable(individualOpts);
	                }

	                $.when(saveDeferred, readDeferred)
	                    .done(function() {
	                        $.when(this.saveIsBackground(individualOpts), this.disablePreview(individualOpts))
	                            .done(function() {
	                                $.when(this.fetch(options))
	                                    .done(function() {
	                                        backgroundDeferred.resolve();
	                                    })
	                                    .fail(function() {
	                                        backgroundDeferred.reject();
	                                    });
	                            }.bind(this))
	                            .fail(function() {
	                                backgroundDeferred.reject();
	                            });
	                    }.bind(this))
	                    .fail(function() {
	                        backgroundDeferred.reject();
	                    });
	                return backgroundDeferred;
	            },

	            setTTL: function(ttl, options) {
	                if(options && options.data) {
	                    delete options.data;
	                }
	                return this.control.save({}, $.extend(true, options, { data: { action: 'setttl', ttl: ttl} }));
	            },

	            getTTL: function() {
	                return this.entry.content.get('ttl');
	            },

	            getAutoCancel: function() {
	                var autoCancel = this.entry.content.runtime.get('auto_cancel');
	                return autoCancel && parseInt(autoCancel, 10);
	            },

	            setPriority: function(priority, options) {
	                if(options && options.data) {
	                    delete options.data;
	                }
	                return this.control.save({}, $.extend(true, options, { data: { action: 'setpriority', priority: priority} } ));
	            },

	            enablePreview: function(options) {
	                return this.noParamControlUpdate("enablepreview", options);
	            },

	            disablePreview: function(options) {
	                return this.noParamControlUpdate("disablepreview", options);
	            },

	            setPreview: function(preview, options) {
	                var currentPreview = this.entry.content.get('isPreviewEnabled');
	                if (preview !== currentPreview) {
	                    if (preview) {
	                        return this.enablePreview(options);
	                    }
	                    return this.disablePreview(options);
	                }
	                if (options && options.success && _.isFunction(options.success)) {
	                    options.success(this, {}, options);
	                }
	                return $.Deferred().resolve();
	            },

	            saveControlUpdate: function(action, options) {
	                options = options || {};
	                options.data = options.data || {};
	                var clonedOptions = $.extend(true, {}, options),
	                    data = {
	                    action: action,
	                    auto_cancel: clonedOptions.data.auto_cancel,
	                    auto_pause: clonedOptions.data.auto_pause,
	                    email_list: clonedOptions.data.email_list,
	                    email_subject: clonedOptions.data.email_subject,
	                    email_results: clonedOptions.data.email_results,
	                    ttl: clonedOptions.data.ttl
	                };

	                if(clonedOptions && clonedOptions.data) {
	                    delete clonedOptions.data;
	                }

	                return this.control.save({}, $.extend(true, clonedOptions, {data: data}));
	            },

	            saveJob: function(options) {
	                return this.saveControlUpdate("save", options);
	            },

	            unsaveJob: function(options) {
	                return this.saveControlUpdate("unsave", options);
	            },

	            makeWorldReadable: function(options) {
	                var clonedOptions = $.extend(true, {}, options),
	                    owner = this.entry.acl.get("owner"),
	                    data = {
	                        sharing: splunkd_utils.GLOBAL,
	                        owner: this.entry.acl.get("owner"),
	                        'perms.read': "*"
	                    };

	                if (clonedOptions && clonedOptions.data) {
	                    delete clonedOptions.data;
	                }

	                return this.acl.save({}, $.extend(true, clonedOptions, { data: data }));
	            },

	            undoWorldReadable: function(options) {
	                var owner = this.entry.acl.get("owner"),
	                    data = {
	                        sharing: splunkd_utils.GLOBAL,
	                        owner: owner,
	                        'perms.read': ""
	                    };

	                if (options && options.data) {
	                    delete options.data;
	                }

	                return this.acl.save({}, $.extend(true, options, { data: data }));
	            },

	            isSharedAccordingToTTL: function(defaultSaveTTL) {
	                var perms = this.entry.acl.permsToObj();
	                if ((perms.read.indexOf("*") != -1) && (this.getTTL() === defaultSaveTTL)) {
	                    return true;
	                }
	                return false;
	            },

	            saveIsBackground: function(options) {
	                this.entry.content.custom.set("isBackground", "1");
	                return this.save({}, options);
	            },

	            isBackground: function() {
	                return this.entry.content.custom && splunkUtil.normalizeBoolean(this.entry.content.custom.get("isBackground"));
	            },

	            resultCountSafe: function() {
	                return (this.entry.content.get('isPreviewEnabled') && !this.isDone()) ? this.entry.content.get('resultPreviewCount') : this.entry.content.get('resultCount');
	            },

	            eventAvailableCountSafe: function() {
	                return (this.entry.content.get('statusBuckets') == 0) ? this.resultCountSafe() : this.entry.content.get('eventAvailableCount');
	            },


	            // a job can be dispatched without a latest time, in which case return the published time
	            latestTimeSafe: function() {
	                var entry = this.entry;
	                return entry.content.get('latestTime') || entry.get('published');
	            },

	            isQueued: function() {
	                return this.checkUppercaseValue('dispatchState', JobModel.QUEUED);
	            },

	            isParsing: function() {
	                return this.checkUppercaseValue('dispatchState', JobModel.PARSING);
	            },

	            isFinalizing: function() {
	                return this.checkUppercaseValue('dispatchState', JobModel.FINALIZING);
	            },

	            isFinalized: function() {
	                return splunkUtil.normalizeBoolean(this.entry.content.get('isFinalized'));
	            },

	            isPaused: function() {
	                return splunkUtil.normalizeBoolean(this.entry.content.get('isPaused'));
	            },

	            isDone: function() {
	                return splunkUtil.normalizeBoolean(this.entry.content.get('isDone'));
	            },

	            isPreparing: function() {
	                return this.isQueued() || this.isParsing();
	            },

	            isRunning: function() {
	                return !this.isNew() && !this.entry.content.get('isPaused') && !this.isDone() && !this.isPreparing() && !this.isFinalizing();
	            },

	            isReportSearch: function() {
	                return (this.entry.content.get('reportSearch') ? true : false);
	            },

	            /**
	             * Function to check if the search is an event search.
	             * @returns {boolean}
	             */
	            isEventSearch: function() {
	                return (this.entry.content.get('eventSearch') ? true : false);
	            },

	            /**
	             * Function to check if search will rerun when exporting results
	             * @returns {boolean}
	             */
	            searchWillReRun: function(maxResults) {
	                maxResults = maxResults || 0;
	                var eventIsTruncated = this.entry.content.get('eventIsTruncated'),
	                    eventAvailableCount = this.entry.content.get('eventAvailableCount');

	                if (!this.isReportSearch() &&
	                    ((eventIsTruncated && (maxResults === 0 || maxResults > eventAvailableCount)) ||
	                    !this.isDone())) {
	                    return true;
	                }
	                return false;
	            },

	            /**
	             * Function to determine if the search is an uneventful report search.
	             * @returns {boolean}
	             */
	            isUneventfulReportSearch: function() {
	                return (this.isReportSearch() && (!this.isEventSearch() || (this.getAdhocSearchMode() !== splunkd_utils.VERBOSE)));
	            },

	            isPatternable: function() {
	                var eventCount = this.entry.content.get('eventCount');
	                return this.prepared && !this.isFailed() && !this.isRealtime() &&
	                    (!this.isUneventfulReportSearch() &&
	                        ((eventCount >= 10000) || (this.isDone() && eventCount > 0)));
	            },

	            // returns true if the job was dispatched over all time, returns false for all-time real-time
	            isOverAllTime: function() {
	                var dispatchEarliestTime = this.getDispatchEarliestTime();
	                return ((!dispatchEarliestTime || dispatchEarliestTime === '0') && !this.getDispatchLatestTime());
	            },

	            isRealtime: function() {
	                return splunkUtil.normalizeBoolean(this.entry.content.get('isRealTimeSearch'));
	            },

	            isFailed: function() {
	                return splunkUtil.normalizeBoolean(this.entry.content.get('isFailed'));
	            },

	            isUsingSampling: function() {
	                return this.entry.content.get('sampleRatio') > '1';
	            },

	            /**
	             * Function return true if timeline_events_preview is set to true in limits.conf
	             * If it returns true, preview events (if any) will be available on the search page events viewer
	             * @returns {boolean}
	             */
	            isEventsPreviewEnabled: function() {
	                return splunkUtil.normalizeBoolean(this.entry.content.get('isEventsPreviewEnabled'));
	            },

	            /**
	             * Function to check if timeline information is available.
	             * @returns {boolean}
	             */
	            isTimelineAvailable: function() {
	                return (this.entry.content.get('statusBuckets') > 0 &&
	                    !this.isFailed() &&
	                    _.has(this.entry.links.attributes, 'timeline'));
	            },

	            /**
	             * Function to check if summary information is available.
	             * @returns {boolean}
	             */
	            isSummaryAvailable: function() {
	               return (this.entry.content.get('statusBuckets') > 0 &&
	                   !this.isFailed() &&
	                   this.entry.content.get('eventFieldCount') > 0 &&
	                   _.has(this.entry.links.attributes, 'summary'));
	            },

	            /**
	             * Function to get all the search.log and search.log.#.
	             * @returns {Array}
	             */
	            getAvailableSearchLogs: function() {
	                var searchLogs = [];
	                _.each(this.entry.links.attributes, function(val, link) {
	                    if (link.indexOf('search.log') !== -1) {
	                        searchLogs.push(link);
	                    }
	                });
	                return searchLogs;
	            },

	            checkUppercaseValue: function(key, uc_value) {
	                var value = this.entry.content.get(key);
	                if (!value) {
	                    return false;
	                }
	                return (value.toUpperCase() === uc_value);
	            },

	            getMessages: function() {
	                return splunkd_utils.parseMessagesObject(this.entry.content.get('messages'));
	            },

	            /**
	            * If there is a message of type riskycommand in the Job's root error model then
	            * then an array of the risky commands are returned, other wise and empty array.
	            *
	            * @return {array}
	            */
	            getRiskyCommands: function() {
	                var messages = this.error.get('messages'),
	                    riskyCommandMessage = _.findWhere(messages, {type: splunkd_utils.RISKY_COMMAND});

	                //TODO: Currently the error message is "Found potentially risky commands:<space seporated list of commands> "
	                // The error response also has a RiskyCommands object that is just the space seporated list of command.
	                // It would be better if the creation of the error message object supported the RiskyCommands
	                return riskyCommandMessage ? riskyCommandMessage.text.split(':')[1].trim().split(' ') : [];
	            },

	            getDispatchEarliestTime: function() {
	                var earliest = this.entry.content.request.get('earliest_time');
	                if (earliest === void(0)) {
	                    return this.entry.content.get('searchEarliestTime');
	                }
	                return earliest;
	            },

	            getDispatchEarliestTimeOrAllTime: function(isScheduledReport) {
	                if (this.entry.content.get('delegate') === 'scheduler' &&
	                    !isScheduledReport &&
	                    this.entry.content.get('searchLatestTime') !== void(0)) {
	                    // windowed rt or all time rt alerts
	                    return this.entry.content.get('searchEarliestTime') || '';
	                } else {
	                    return this.entry.content.request.get('earliest_time') || '';
	                }
	            },

	            getDispatchLatestTime: function() {
	                var latest = this.entry.content.request.get('latest_time');
	                if (latest === void(0)) {
	                    return this.entry.content.get('searchLatestTime');
	                }
	                return latest;
	            },

	            getDispatchLatestTimeOrAllTime: function(isScheduledReport) {
	                var searchLatestTime = this.entry.content.get('searchLatestTime');
	                if (this.entry.content.get('delegate') === 'scheduler' &&
	                     !isScheduledReport &&
	                     searchLatestTime !== void(0)) {
	                    return searchLatestTime;
	                } else {
	                    return this.entry.content.request.get('latest_time') || '';
	                }
	            },

	            getWindowedEarliestTimeOrAllTime: function() {
	                var earliestTime = this.entry.content.get('earliestTime');

	                // A search job's entry.content's earliestTime isn't updated right away for all time searches.
	                // The job can even be running (!) and still say its earliestTime is unix time = 0.
	                // In that case, we can't get the start of the window, so just use the relative ET of 0.
	                if ((_.isUndefined(earliestTime)) || (timeUtils.isoToDateObject(earliestTime).getTime() === 0)) {
	                    return 0;
	                }

	                return earliestTime;
	            },

	            getWindowedLatestTimeOrAllTime: function() {
	                var latestTime = this.entry.content.get('latestTime');

	                if (_.isUndefined(latestTime)) {
	                    return '';
	                }

	                return latestTime;
	            },

	            getStrippedEventSearch: function() {
	                var search = this.entry.content.get('eventSearch');
	                if (search) {
	                    search = splunkUtil.stripLeadingSearchCommand(search);
	                }
	                return search;
	            },

	            getSearch: function() {
	                var search = this.entry.get('name');
	                if (!search) {
	                    return this.entry.content.request.get('search');
	                }
	                return search;
	            },

	            /**
	             * Function that returns the fullSearch with macros and saved search expanded.
	             * Returns empty string when eventSearch and reportSearch are not available in the job.
	             * @returns {string}
	             */
	            getFullSearch: function() {
	                var reportSearch = this.entry.content.get('reportSearch') || "",
	                    eventSearch = this.getStrippedEventSearch() || "";

	                // Per the discussion in SPL-130978, adding a leading "|" to the eventSearch
	                // when eventSearch exists and doesn't start with "search"
	                eventSearch = (eventSearch && (eventSearch === this.entry.content.get('eventSearch'))) ?
	                "| " + eventSearch : eventSearch;
	                // reportSearch need the leading pipe "|" before combining with the eventsSearch
	                reportSearch = reportSearch ? " | " + reportSearch : reportSearch;
	                return eventSearch + reportSearch;
	            },

	            getSavedSearchId: function() {
	                var isSavedSearch = this.entry.content.get('isSavedSearch'),
	                    label = this.entry.content.get('label'),
	                    savedSearchLabel = this.entry.content.get('savedSearchLabel'),
	                    appAndOwner = savedSearchLabel ? JSON.parse(savedSearchLabel) : undefined;

	                if (label && isSavedSearch && appAndOwner) {
	                    return SavedSearch.buildId(label, appAndOwner.app, appAndOwner.owner, appAndOwner.sharing);
	                }
	                return '';
	            },

	            getExpirationString: function() {
	                var ttl = this.entry.content.get('ttl'),
	                    updated;

	                if (!ttl || (ttl < 0)) {
	                    return _('Expired').t();
	                }

	                updated = time_utils.isoToDateObject(this.get('updated'));
	                updated.setSeconds(updated.getSeconds() + ttl);
	                return i18n.format_datetime(time_utils.jsDateToSplunkDateTimeWithMicroseconds(updated));
	            },

	            getCreatedString: function() {
	                var published = this.entry.get('published'),
	                    publishedDate = time_utils.isoToDateObject(published);

	                return published ? i18n.format_datetime(time_utils.jsDateToSplunkDateTimeWithMicroseconds(publishedDate)) : '';
	            },

	            getSizeString: function() {
	                return _.isUndefined(this.entry.content.get('diskUsage')) ? '' : format_numbers_utils.bytesToFileSize(this.entry.content.get('diskUsage'));
	            },

	            getAdhocSearchMode: function() {
	                return this.entry.content.request.get('adhoc_search_level') || splunkd_utils.FAST;
	            },

	            getSampleRatio: function() {
	                var sampleRatio = this.entry.content.get('sampleRatio');
	                if (!sampleRatio) {
	                    return this.entry.content.request.get('sample_ratio');
	                }
	                return sampleRatio;
	            },

	            canBePausedOnRemove: function() {
	                if (!this.isNew() &&
	                        (!this.isDone() && !this.get("cannotPauseOnRemove")) &&
	                        !this.entry.content.get("isPaused") &&
	                        !this.isBackground() &&
	                        !this.entry.content.get("isSaved")) {
	                    return true;
	                }
	                return false;
	            },

	            canSummarize: function() {
	                return splunkUtil.normalizeBoolean(this.entry.content.get('canSummarize'));
	            },

	            searchCanBeEventType: function() {
	                return splunkUtil.normalizeBoolean(this.entry.content.get('searchCanBeEventType'));
	            },

	            deepOff: function () {
	                SearchJob.prototype.deepOff.apply(this, arguments);
	                Session.off(null, null, this);
	            }
	        },
	        {
	            RESULTS_PREVIEW: "results_preview",
	            SUMMARY: "summary",
	            TIMELINE: "timeline",
	            EVENTS: "events",
	            RESULTS: "results",
	            createMetaDataSearch: function(search, deferred, applicationModel, delay, options) {
	                options = options || {};
	                _.defaults(options, {
	                    preview: 'true',
	                    earliest_time: 'rt',
	                    latest_time: 'rt',
	                    auto_cancel: SearchJob.DEFAULT_AUTO_CANCEL,
	                    max_count: 100000
	                });

	                var job = new JobModel({}, {delay: delay || SearchJob.DEFAULT_METADATA_POLLING_INTERVAL}),
	                    saveData = {
	                        app: applicationModel.get("app"),
	                        owner: applicationModel.get("owner"),
	                        search: search,
	                        preview: options.preview,
	                        earliest_time: options.earliest_time,
	                        latest_time: options.latest_time,
	                        auto_cancel: options.auto_cancel,
	                        max_count: options.max_count
	                    };

	                $.extend(true, saveData, options.data);

	                job.save({}, {
	                    data: saveData,
	                    success: function(model, response) {
	                        deferred.resolve();
	                    },
	                    error: function(model, response) {
	                        deferred.resolve();
	                    }
	                });

	                return job;
	            },
	            registerArtifactModel: function(artifactModel, job, linkKey) {
	                ArtifactFetchManager.registerArtifactModel(artifactModel, job, linkKey);
	            },
	            unregisterArtifactModel: function(artifactModel, job) {
	                ArtifactFetchManager.unregisterArtifactModel(artifactModel, job);
	            }
	        });

	        return JobModel;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/search/Job":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// TODO: a lot of repeated code here and SplunkDBaseV2, consider making this a subclass of SplunkDBaseV2

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("models/config"),
	        __webpack_require__("models/ACLReadOnly"),
	        __webpack_require__("models/services/ACL"),
	        __webpack_require__("models/services/search/jobs/Control"),
	        __webpack_require__("util/splunkd_utils"),
	        __webpack_require__("util/general_utils"),
	        __webpack_require__("shim/splunk.util"),
	        __webpack_require__("util/console")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, Backbone, BaseModel, configModel, ACLReadOnlyModel, ACLModel, ControlModel, splunkd_utils, general_utils, splunkUtil, console) {

	        //private sync CRUD methods
	        var syncCreate = function(model, options){
	            var rootOptions = options,
	                rootModel = model,
	                deferredResponse = $.Deferred(),
	                createModel = new BaseModel(),
	                fetchModel = new BaseModel(),
	                app_and_owner = {};
	                
	            options = options || {};
	            options.data = options.data || {};
	            app_and_owner = $.extend(app_and_owner, { //JQuery purges undefined
	                app: options.data.app || undefined,
	                owner: options.data.owner || undefined,
	                sharing: options.data.sharing || undefined
	            });
	            
	            var url = splunkd_utils.fullpath(model.url, app_and_owner),
	                saveOptions = model.getCreateOptions(options);

	            //reset options.data to only the app and owner
	            options.data = $.extend(true, {}, app_and_owner);

	            model.trigger('request', model, deferredResponse, options);

	            saveOptions.url = saveOptions.url || url;
	            saveOptions.success = function(createModel, response, options) {
	                // need an id so that in case of an empty response we don't blow up
	                rootModel.set('id', createModel.get('sid'));
	                var fetchDeferred = fetchModel.fetch({
	                    url: url + "/" + encodeURIComponent(createModel.get("sid")),
	                    data: {
	                        output_mode: "json"
	                    },
	                    success: function(fetchModel, response, options) {
	                        rootOptions.success(response);
	                    },
	                    error: function(fetchModel, response, options) {
	                        rootOptions.error(response);
	                    }
	                });
	                fetchDeferred.done(function() {
	                    deferredResponse.resolve.apply(deferredResponse, arguments);
	                });
	                fetchDeferred.fail(function() {
	                    deferredResponse.reject.apply(deferredResponse, arguments);
	                });
	            };

	            saveOptions.error = function(createModel, response, options) {
	                rootOptions.error(response);
	            };

	            //TODO: Maybe we should be faithful to SplunkD here and make it the consumer's responsibility to fetch after create
	            //this would mean that parse would need to handle the sid only payload and the full object payload
	            var  createDeferred = createModel.save({}, saveOptions);
	            createDeferred.fail(function() {
	                deferredResponse.reject.apply(deferredResponse, arguments);
	            });
	            return deferredResponse.promise();
	        },
	        syncRead = function(model, options){
	            var defaults = {
	                    data: {
	                        output_mode: 'json'
	                    }
	                },
	                app_and_owner = {};

	            if (model.isNew()){
	                throw new Error('You cannot read a job without an id.');
	            }
	            
	            if (options && options.data){
	                app_and_owner = $.extend(app_and_owner, { //JQuery purges undefined
	                    app: options.data.app || undefined,
	                    owner: options.data.owner || undefined,
	                    sharing: options.data.sharing || undefined
	                });
	            }

	            defaults.url = splunkd_utils.fullpath(model.url + "/" + encodeURIComponent(model.id), app_and_owner);
	            $.extend(true, defaults, options || {});
	            
	            delete defaults.data.app;
	            delete defaults.data.owner;
	            delete defaults.data.sharing;
	            
	            return Backbone.sync.call(this, "read", model, defaults);
	        },
	        syncUpdate = function(model, options){
	            var defaults = {data: {output_mode: 'json'}},
	                app_and_owner = {},
	                customAttrs = this.getCustomDataPayload();
	            
	            if (options && options.data){
	                app_and_owner = $.extend(app_and_owner, { //JQuery purges undefined
	                    app: options.data.app || undefined,
	                    owner: options.data.owner || undefined,
	                    sharing: options.data.sharing || undefined
	                });
	            }
	            
	            //append the values from the entry.content.custom model
	            $.extend(true, defaults.data, customAttrs || {});

	            defaults.url = splunkd_utils.fullpath(model.url + "/" + encodeURIComponent(model.id), app_and_owner);
	            defaults.processData = true;
	            defaults.type = 'POST';
	            
	            $.extend(true, defaults, options || {});
	            
	            delete defaults.data.app;
	            delete defaults.data.owner;
	            delete defaults.data.sharing;
	            
	            return Backbone.sync.call(this, "update", model, defaults);
	        },
	        syncDelete = function(model, options){
	            var defaults = {data: {output_mode: 'json'}},
	                url = model.url + "/" + encodeURIComponent(model.id);

	            if(options.data && options.data.output_mode){
	                //add layering of url if specified by user
	                defaults.url = splunkd_utils.fullpath(url, {}) + '?output_mode=' + encodeURIComponent(options.data.output_mode);
	                delete options.data.output_mode;
	            } else {
	                //add layering of url if specified by user
	                defaults.url = splunkd_utils.fullpath(url, {}) + '?output_mode=' + encodeURIComponent(defaults.data.output_mode);
	                delete defaults.data.output_mode;
	            }
	            $.extend(true, defaults, options);
	            defaults.processData = true;

	            return Backbone.sync.call(this, "delete", model, defaults);
	        };
	        
	        /**
	         * @constructor
	         * @memberOf models
	         * @name SearchJob
	         * @extends {models.Base}
	         *
	         */
	        var Model = BaseModel.extend(/** @lends models.SearchJob.prototype */{
	            url: "search/jobs",
	            initialize: function(attributes, options) {
	                BaseModel.prototype.initialize.apply(this, arguments);
	                
	                this.initializeAssociated();
	                
	                this.entry.links.on("change:control", function() {
	                    this.control.set('id', this.entry.links.get('control'));
	                }, this);

	                this.entry.links.on("change:alternate", function() {
	                    var alt = this.entry.links.get('alternate');
	                    if (alt) {
	                        alt = alt + "/acl";
	                    }
	                    this.acl.set('id', alt);
	                }, this);

	                if (options && options.splunkDPayload){
	                    this.setFromSplunkD(options.splunkDPayload, {silent: true});
	                }
	            },
	            /**
	             * @param {Object} response
	             */
	            parseSplunkDMessages: function(response) {
	                var messages = BaseModel.prototype.parseSplunkDMessages.call(this, response);
	                if(response && response.entry && response.entry.length > 0) {
	                    var entry = response.entry[0],
	                        content = entry.content || {};

	                    messages = _.union(
	                        messages,
	                        splunkd_utils.parseMessagesObject(entry.messages),
	                        splunkd_utils.parseMessagesObject(content.messages)
	                    );
	                    // handle zombie jobs, which often show up without any associated messages
	                    if(content.isZombie) {
	                        messages.push(splunkd_utils.createMessageObject(splunkd_utils.FATAL, 'Job terminated unexpectedly'));
	                    }
	                }
	                return messages;
	            },
	            initializeAssociated: function() {
	                // do a dynamic lookup of the current constructor so that this method is inheritance-friendly
	                var RootClass = this.constructor;
	                this.associated = this.associated || {};

	                //instance level models
	                this.links = this.links || new RootClass.Links();
	                this.associated.links = this.links;
	                
	                this.generator = this.generator || new RootClass.Generator();
	                this.associated.generator = this.generator;
	                
	                this.paging = this.paging || new RootClass.Paging();
	                this.associated.paging = this.paging;

	                //nested instance level on entry
	                if (!this.entry){
	                    this.entry = new RootClass.Entry();

	                    this.entry.links = new RootClass.Entry.Links();
	                    this.entry.associated.links = this.entry.links;

	                    this.entry.acl = new RootClass.Entry.ACL();
	                    this.entry.associated.acl = this.entry.acl;

	                    //nested on content
	                    this.entry.content = new RootClass.Entry.Content();

	                    this.entry.content.performance = new RootClass.Entry.Content.Performance();
	                    this.entry.content.associated.performance = this.entry.content.performance;

	                    this.entry.content.request = new RootClass.Entry.Content.Request();
	                    this.entry.content.associated.request = this.entry.content.request;
	                    
	                    this.entry.content.runtime = new RootClass.Entry.Content.Runtime();
	                    this.entry.content.associated.runtime = this.entry.content.runtime;
	                    
	                    this.entry.content.custom = new RootClass.Entry.Content.Custom();
	                    this.entry.content.associated.custom = this.entry.content.custom;
	                    
	                    this.entry.associated.content = this.entry.content;
	                }
	                this.associated.entry = this.entry;
	                
	                //associated EAI endpoint models
	                this.control = this.control || new ControlModel();
	                this.associated.control = this.control;
	                
	                this.acl = this.acl || new ACLModel();
	                this.associated.acl = this.acl;
	            },
	            sync: function(method, model, options) {
	                switch(method){
	                    case 'create':
	                        return syncCreate.call(this, model, options);
	                    case 'read':
	                        return syncRead.call(this, model, options);
	                    case 'update':
	                        return syncUpdate.call(this, model, options);
	                    case 'delete':
	                        return syncDelete.call(this, model, options);
	                    default:
	                        throw new Error('invalid method: ' + method);
	                }
	            },
	            parse: function(response) {
	                // make a defensive copy of response since we are going to modify it
	                response = $.extend(true, {}, response);
	                //when called from the collection fetch we will need to ensure that our
	                //associated models are initialized because parse is called before
	                //initialize
	                this.initializeAssociated();
	                
	                if (!response || !response.entry || response.entry.length === 0) {
	                    console.log('Response has no content to parse');
	                    return;
	                }
	                var response_entry = response.entry[0];

	                //id
	                //this needs to be the first thing so that people can get !isNew()
	                this.set(this.idAttribute, response_entry.content.sid);
	                response.id = response_entry.content.sid;

	                //top-level
	                this.links.set(response.links);
	                delete response.links;
	                this.generator.set(response.generator);
	                delete response.generator;
	                this.paging.set(response.paging);
	                delete response.paging;
	                
	                //sub-entry
	                this.entry.links.set(response_entry.links);
	                // in case parse happens before initialize
	                if (response_entry.links.control) {
	                    this.control.set('id', response_entry.links.control);
	                }
	                if (response_entry.links.alternate) {
	                    this.acl.set('id', response_entry.links.alternate + "/acl");
	                }
	                delete response_entry.links;

	                this.entry.acl.set(response_entry.acl);
	                delete response_entry.acl;
	                
	                //sub-content
	                this.entry.content.performance.set(response_entry.content.performance);
	                delete response_entry.content.performance;
	                
	                this.entry.content.request.set(response_entry.content.request);
	                delete response_entry.content.request;
	                
	                this.entry.content.runtime.set(response_entry.content.runtime);
	                delete response_entry.content.runtime;
	                
	                this.entry.content.custom.set(response_entry.content.custom);
	                delete response_entry.content.custom;
	                
	                //content remainder
	                this.entry.content.set(response_entry.content);
	                delete response_entry.content;
	                
	                //entry remainder
	                this.entry.set(response_entry);
	                delete response.entry;
	                return response;
	            },
	            setFromSplunkD: function(payload, options) {
	                this.attributes = {};
	                var cloned_payload = $.extend(true, {}, payload);
	                var oldId = this.id;

	                //object assignment
	                if (cloned_payload) {
	                    if (cloned_payload.entry && cloned_payload.entry[0]) {
	                        var payload_entry = cloned_payload.entry[0];

	                        if(payload_entry.content){
	                            //id
	                            //this needs to be the first thing so that people can get !isNew()
	                            this.set({id: payload_entry.content.sid}, {silent: true});
	                            cloned_payload.id = payload_entry.content.sid;

	                            if (payload_entry.content.performance) {
	                                this.entry.content.performance.set(payload_entry.content.performance, options);
	                                delete payload_entry.content.performance;
	                            }

	                            if (payload_entry.content.request) {
	                                this.entry.content.request.set(payload_entry.content.request, options);
	                                delete payload_entry.content.request;
	                            }
	                            
	                            if (payload_entry.content.runtime) {
	                                this.entry.content.runtime.set(payload_entry.content.runtime, options);
	                                delete payload_entry.content.runtime;
	                            }
	                            
	                            if (payload_entry.content.custom) {
	                                this.entry.content.custom.set(payload_entry.content.custom, options);
	                                delete payload_entry.content.custom;
	                            }

	                            this.entry.content.set(payload_entry.content, options);
	                            delete payload_entry.content;
	                        }

	                        if(payload_entry.links){
	                            this.entry.links.set(payload_entry.links, options);
	                            if (payload_entry.links.control) {
	                                this.control.set('id', payload_entry.links.control, options);
	                            }
	                            if (payload_entry.links.alternate) {
	                                this.acl.set('id', payload_entry.links.alternate + "/acl", options);
	                            }
	                            delete payload_entry.links;
	                        }

	                        if(payload_entry.acl){
	                            this.entry.acl.set(payload_entry.acl, options);
	                            delete payload_entry.acl;
	                        }
	                        
	                        this.entry.set(payload_entry, options);
	                        delete cloned_payload.entry;
	                    }
	                    if(cloned_payload.links) {
	                        this.links.set(cloned_payload.links, options);
	                        delete cloned_payload.links;
	                    }
	                    if(cloned_payload.generator) {
	                        this.generator.set(cloned_payload.generator, options);
	                        delete cloned_payload.generator;
	                    }
	                    if(cloned_payload.paging) {
	                        this.paging.set(cloned_payload.paging, options);
	                        delete cloned_payload.paging;
	                    }
	                    
	                    //reset the internal root model due to pre-init routine
	                    this.set(cloned_payload, options);
	                    if(this.id !== oldId) {
	                        this.trigger('change:' + this.idAttribute);
	                    }
	                }
	            },
	            toSplunkD: function() {
	                var payload = {};

	                payload = $.extend(true, {}, this.toJSON());

	                payload.links = $.extend(true, {}, this.links.toJSON());
	                payload.generator = $.extend(true, {}, this.generator.toJSON());
	                payload.paging = $.extend(true, {}, this.paging.toJSON());
	                payload.entry = [$.extend(true, {}, this.entry.toJSON())];

	                payload.entry[0].links = $.extend(true, {}, this.entry.links.toJSON());
	                payload.entry[0].acl = $.extend(true, {}, this.entry.acl.toJSON());
	                payload.entry[0].content = $.extend(true, {}, this.entry.content.toJSON());

	                payload.entry[0].content.performance = $.extend(true, {}, this.entry.content.performance.toJSON());
	                payload.entry[0].content.request = $.extend(true, {}, this.entry.content.request.toJSON());
	                payload.entry[0].content.runtime = $.extend(true, {}, this.entry.content.runtime.toJSON());
	                payload.entry[0].content.custom = $.extend(true, {}, this.entry.content.custom.toJSON());

	                //cleanup
	                delete payload.id;

	                return payload;
	            },
	            getCustomDataPayload: function() {
	                var payload = $.extend(true, {}, this.entry.content.custom.toJSON()),
	                    keys = _.keys(payload);
	                
	                _.each(keys, function(key){
	                    var newKey = "custom." + key;
	                    payload[newKey] = payload[key];
	                    delete payload[key];
	                });
	                
	                return payload;
	            },
	            getCreateOptions: function(options) {
	                options = options || {};
	                options.data = options.data || {};

	                //TODO: we have some defaults but in reality people should be responsible for passing these
	                //in options.data like they are responsible for app and owner
	                //Simon asks: does the endpoint set any of these defaults for us????
	                var createDefaults = {
	                    data: {
	                        // Using `has` here enables us to override the default of `*` with undefined
	                        // if we do not want to send an rf. (SPL-108504)
	                        rf: _.has(options.data, 'rf') ? options.data.rf : "*",
	                        auto_cancel: Model.DEFAULT_AUTO_CANCEL,
	                        status_buckets: 300,
	                        output_mode: 'json'
	                    }
	                },
	                customAttrs = this.getCustomDataPayload();

	                //append the values from the entry.content.custom model
	                $.extend(true, createDefaults.data, customAttrs || {});
	                $.extend(true, createDefaults.data, options.data);
	                delete createDefaults.data.app;
	                delete createDefaults.data.owner;
	                delete createDefaults.data.sharing;
	                
	                //add the leading search command if it isn't present
	                if (createDefaults.data.search) {
	                    createDefaults.data.search = splunkUtil.addLeadingSearchCommand(createDefaults.data.search, true);
	                }
	            
	                return {
	                    processData: true,
	                    data: createDefaults.data
	                };
	            }
	        },
	        {
	            // constants for the dispatch states
	            QUEUED: 'QUEUED',
	            PARSING: 'PARSING',
	            RUNNING: 'RUNNING',
	            PAUSED: 'PAUSED',
	            FINALIZING: 'FINALIZING',
	            FAILED: 'FAILED',
	            DONE: 'DONE',
	            CANCELED: 'CANCELED',
	            
	            //constants for the polling and intervals
	            //seconds
	            DEFAULT_AUTO_CANCEL: 30,
	            DEFAULT_AUTO_PAUSE: 30,
	            
	            getAutoPauseInterval: function(val) {
	                var parsed = general_utils.parseBooleanOrInt(val);
	                
	                if (_.isBoolean(parsed)) {
	                   if (parsed) {
	                       return Model.DEFAULT_AUTO_PAUSE;
	                   }
	                   return 0;
	                }
	                
	                return parsed;
	            },
	            
	            //milliseconds
	            JOB_MIN_POLLING_INTERVAL: configModel.get('JOB_MIN_POLLING_INTERVAL') || 100,
	            JOB_MAX_POLLING_INTERVAL: configModel.get('JOB_MAX_POLLING_INTERVAL') || 1000,
	            DEFAULT_METADATA_POLLING_INTERVAL: 3000,
	            DEFAULT_LONG_POLLING_INTERVAL: 15000,

	            Links: BaseModel,
	            Generator: BaseModel,
	            Paging: BaseModel,
	            Entry: BaseModel.extend(
	                {
	                    initialize: function() {
	                        BaseModel.prototype.initialize.apply(this, arguments);
	                    }
	                },
	                {
	                    Links: BaseModel,
	                    ACL: ACLReadOnlyModel,
	                    Content: BaseModel.extend(
	                        {
	                            initialize: function() {
	                                BaseModel.prototype.initialize.apply(this, arguments);
	                            }
	                        }, 
	                        {
	                            Performance: BaseModel,
	                            Request: BaseModel,
	                            Runtime: BaseModel,
	                            Custom: BaseModel
	                        }
		                )
	                }
	            )
	        });

	        return Model;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/config":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("stubs/splunk.config"),
	        __webpack_require__("models/Base")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, $C, BaseModel) {

	        var Model = BaseModel.extend({
	            initialize: function() {
	                BaseModel.prototype.initialize.apply(this, arguments);
	            },
	            sync: function(method, model, options) {
	                throw new Error('invalid method: ' + method);
	            }
	        });
	        return new Model($.extend(true, {}, $C));
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/services/search/jobs/Control":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	         __webpack_require__("shim/jquery"),
	         __webpack_require__("require/backbone"),
	         __webpack_require__("models/Base"),
	         __webpack_require__("util/splunkd_utils")
	     ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, Backbone, BaseModel, splunkDUtils) {
	        return BaseModel.extend({
	            initialize: function(attributes, options) {
	                BaseModel.prototype.initialize.apply(this, arguments);
	            },
	            sync: function(method, model, options) {
	                var defaults = {
	                    data: {
	                        output_mode: 'json'
	                    }
	                };
	                switch(method) {
	                case 'update':
	                    defaults.processData = true;
	                    defaults.type = 'POST';
	                    defaults.url = splunkDUtils.fullpath(model.id);
	                    $.extend(true, defaults, options);
	                    break;
	                default:
	                    throw new Error('invalid method: ' + method);
	                }
	                return Backbone.sync.call(this, method, model, defaults);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "util/format_numbers_utils":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * Util package for formatting number.
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("require/underscore"), __webpack_require__("stubs/i18n"), __webpack_require__("shim/splunk.util"), __webpack_require__("util/math_utils")], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, i18n, splunkUtil, mathUtils) {

	    /**
	     * method to convert number to file size representation
	     * @param bytes (file size in bytes)
	     */

	    var bytesToFileSize = function(bytes) {

	        var kbFileSize = ((bytes || 0) / 1024),
	            mbFileSize, gbFileSize, tbFileSize;
	        
	        if (Math.floor(kbFileSize) === 0) {
	            return i18n.format_decimal(bytes) + " " +  _("B").t();
	        }
	        
	        mbFileSize = kbFileSize / 1024;
	        
	        if (Math.floor(mbFileSize) === 0) {
	            return i18n.format_decimal(kbFileSize.toFixed(2)) + " " +  _("KB").t();
	        } 
	        
	        gbFileSize = mbFileSize / 1024;
	        
	        if (Math.floor(gbFileSize) === 0) {
	            return i18n.format_decimal(mbFileSize.toFixed(2)) + " " + _("MB").t();
	        }
	        
	        tbFileSize = gbFileSize / 1024;
	        if (Math.floor(tbFileSize) === 0) {
	            return i18n.format_decimal(gbFileSize.toFixed(2)) + " " + _("GB").t();
	        }

	        return i18n.format_decimal(tbFileSize.toFixed(2)) + " " + _("TB").t();
	    };

	    /**
	     * A method to abbreviate number to a maximum of 4 digits 
	     *
	     * @param number {integer} number to format
	     */

	    var abbreviateNumber = function(number) {
	        if (number <= 1000) {
	            //less than 1,000
	            return i18n.format_decimal(number);
	        } else if (number < 10000) {
	            //less than 10,000
	            return splunkUtil.sprintf(_('%sK').t(), i18n.format_decimal(mathUtils.roundToDecimal(number/1000, -2)));
	        } else if (number < 100000) {
	            //less than 100,000
	            return splunkUtil.sprintf(_('%sK').t(), i18n.format_decimal(mathUtils.roundToDecimal(number/1000, -1)));
	        } else if (number < 999500) {
	            //less than 999,500
	            return splunkUtil.sprintf(_('%sK').t(), i18n.format_decimal(mathUtils.roundToDecimal(number/1000, 0)));
	        } else if (number < 10000000) {
	            //less than 10,000,000
	            return splunkUtil.sprintf(_('%sM').t(), i18n.format_decimal(mathUtils.roundToDecimal(number/1000000, -2)));
	        } else if (number < 100000000) {
	            //less than 100,000,000
	            return splunkUtil.sprintf(_('%sM').t(), i18n.format_decimal(mathUtils.roundToDecimal(number/1000000, -1)));
	        } else if (number < 999500000) {
	            //less than 999,500,000
	            return splunkUtil.sprintf(_('%sM').t(), i18n.format_decimal(mathUtils.roundToDecimal(number/1000000, 0)));
	        } else if (number < 10000000000) {
	            //less than 10,000,000,000
	            return splunkUtil.sprintf(_('%sB').t(), i18n.format_decimal(mathUtils.roundToDecimal(number/1000000000, -2)));
	        } else if (number < 100000000000) {
	            //less than 100,000,000,000
	            return splunkUtil.sprintf(_('%sB').t(), i18n.format_decimal(mathUtils.roundToDecimal(number/1000000000, -1)));
	        } else {
	            //greater than or equal to 100,000,000,000
	            return splunkUtil.sprintf(_('%sB').t(), i18n.format_decimal(mathUtils.roundToDecimal(number/1000000000, 0)));
	        }
	    };
	    return ({
	        abbreviateNumber: abbreviateNumber,
	        bytesToFileSize: bytesToFileSize
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "helpers/search/ArtifactFetchManager":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
	 * Intended for use via the class-level API in models/shared/Job.js
	 *
	 * A helper to manage relationships between a running job and its "search artifacts".  Artifacts include
	 * results, events, timeline, and summary information.
	 *
	 * The intention is that by providing a static helper API to associate jobs and search artifacts, some
	 * internal caching logic can be included at the "sync" level (not tied to a particular job instance,
	 * but based on the job's sid).
	 *
	 * This helper is not responsible for polling the job itself, only ensuring that as the job shows progress,
	 * the related artifacts are also kept up-to-date.
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	            __webpack_require__("shim/jquery"),
	            __webpack_require__("require/underscore"),
	            __webpack_require__("require/backbone")
	        ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	            $,
	            _,
	            Backbone
	        ) {

	    var cache = [];

	    /*
	     * The next two methods are intentionally defined anonymously but intended to be called
	     * in the scope of an artifact model.  This allows us to use Backbone's event API to unbind
	     * listeners for only a certain artifact model, without having to maintain a registry of
	     * which artifact model has bound to which job.
	     */

	    var jobProgressHandler = function(link, job) {
	        if (shouldFetchArtifact(job)) {
	            this.safeFetch();
	        }
	    };

	    var jobLinkChangeHandler = function(linkModel, newValue) {
	        this.set(this.idAttribute, newValue);
	    };

	    var shouldFetchArtifact = function(job) {
	        return job.entry.content.get('isPreviewEnabled') || job.isDone();
	    };

	    var ArtifactFetchManager = $.extend({}, Backbone.Events, {

	        /**
	         * @param artifactModel - can be any model that has an internal `fetchData` model and implements `safeFetch`
	         * @param job <models/search/Job> - an instance of an existing job
	         * @param linkKey - a valid job.entry.links key ("results", "results_preview", "events", etc.)
	         */

	        registerArtifactModel: function(artifactModel, job, linkKey) {
	            job.on('jobProgress:' + linkKey, jobProgressHandler, artifactModel);
	            job.entry.links.on('change:' + linkKey, jobLinkChangeHandler, artifactModel);
	            this.listenToOnce(job, 'destroy', this._jobDestroyHandler);
	            this.listenTo(artifactModel, 'request', function(artifactModel, response, fetchOptions) {
	                this._artifactRequestHandler(artifactModel, response, fetchOptions, job);
	            });

	            if (job.entry.links.has(linkKey)) {
	                artifactModel.set(artifactModel.idAttribute, job.entry.links.get(linkKey));
	                var cachedPayload = this._getCachedPayload(artifactModel);
	                if (cachedPayload) {
	                    // Consumers might not expect this call to synchronously populate the model,
	                    // so defer the operation to make it async.
	                    _.defer(function() {
	                        artifactModel.set(
	                            artifactModel.parse($.extend(true, {}, cachedPayload))
	                        );
	                    });
	                }
	                else if(!job.isPreparing() && shouldFetchArtifact(job)) {
	                    artifactModel.safeFetch();
	                }
	            }
	        },

	        unregisterArtifactModel: function(artifactModel, job) {
	            job.off(null, jobProgressHandler, artifactModel);
	            job.entry.links.off(null, jobLinkChangeHandler, artifactModel);
	            artifactModel.fetchAbort();
	            this.stopListening(artifactModel);
	        },

	        _jobDestroyHandler: function(job) {
	            cache = _(cache).reject(function(entry) {
	                return job.entry.links.has(entry.link);
	            });
	            job.off(null, jobProgressHandler);
	            job.entry.links.off(null, jobLinkChangeHandler);
	        },

	        _artifactRequestHandler: function(artifactModel, request, fetchOptions, job) {
	            if (job.isDone()) {
	                request.done(_(function(response) {
	                    this._writeToCache(artifactModel, response, fetchOptions);
	                }).bind(this));
	            }
	        },

	        _getCachedPayload: function(artifactModel) {
	            var matchingEntry = this._findMatchingCacheEntry(artifactModel, artifactModel.fetchData.toJSON());
	            return matchingEntry && matchingEntry.payload;
	        },

	        _writeToCache: function(artifactModel, response, fetchOptions) {
	            var fetchData = fetchOptions.data,
	                matchingEntry = this._findMatchingCacheEntry(artifactModel, fetchData);

	            if (matchingEntry) {
	                cache = [matchingEntry].concat(_(cache).without(matchingEntry));
	            } else {
	                var newEntry = {
	                    link: artifactModel.id,
	                    payload: $.extend(true, {}, response),
	                    fetchParams: $.extend(true, {}, fetchData)
	                };
	                cache = [newEntry].concat(cache.slice(0, ArtifactFetchManager.CACHE_SIZE_LIMIT - 1));
	            }
	        },

	        _findMatchingCacheEntry: function(artifactModel, fetchData) {
	            return _(cache).find(function(entry) {
	                return (
	                    this._normalizeArtifactId(entry.link) === this._normalizeArtifactId(artifactModel.id) &&
	                    _.isEqual(entry.fetchParams, fetchData)
	                );
	            }, this);
	        },

	        _normalizeArtifactId: function(link) {
	            return link.replace(/^\/services\//, '/servicesNS/nobody/search/');
	        },

	        // FOR TESTING ONLY
	        _clearCache: function() {
	            cache = [];
	        }

	    });

	    // VISIBLE FOR TESTING ONLY
	    ArtifactFetchManager.CACHE_SIZE_LIMIT = 5;

	    return ArtifactFetchManager;

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/services/search/jobs/BulkControl":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("models/StaticIdBase"),
	        __webpack_require__("util/splunkd_utils"),
	        __webpack_require__("shim/splunk.util")
	     ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        $,
	        Backbone,
	        BaseModel,
	        splunkDUtils,
	        splunkUtil
	    ) {
	        return BaseModel.extend({
	            url: splunkUtil.make_url('api/search/jobs/control'),
	            initialize: function(attributes, options) {
	                BaseModel.prototype.initialize.apply(this, arguments);
	            },

	            sync: function(method, model, options) {
	                var defaults = {
	                    data: {
	                        output_mode: 'json'
	                    }
	                };
	                switch(method) {
	                    case 'update':
	                        defaults.processData = true;
	                        defaults.type = 'POST';
	                        $.extend(true, defaults, options);
	                        break;
	                    default:
	                        throw new Error('invalid method: ' + method);
	                    }
	                return Backbone.sync.call(this, method, model, defaults);
	            },
	            
	            parseSplunkDMessages: function(response) {
	                if (!response) {
	                    return [];
	                }

	                var messages = response.messages;
	                if (!messages) {
	                    return [];
	                }
	                
	                return _(messages).map(function(message) {
	                    return splunkDUtils.createMessageObject(message.type, message.message);
	                });
	            },
	            
	            getNumOfNotFoundJobs: function() {
	                return _.where(this.get('messages'), { status: 404 }).length;
	            }
	        },
	        {
	            id: 'api/search/jobs/control'
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/StaticIdBase":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/Base")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, BaseModel){
	        var Model = BaseModel.extend(
	            {
	                initialize: function() {
	                    BaseModel.prototype.initialize.apply(this, arguments);
	                },
	                defaults: function() {
	                    // do a dynamic lookup of the current constructor so that this method is inheritance-friendly
	                    var RootClass = this.constructor,
	                        id = RootClass.id,
	                        extendedDefaults = {},
	                        defaults;
	                    
	                    if (!id) {
	                        throw new Error('You must set a class level id for this model.');
	                    }
	                    
	                    if (_.isFunction(BaseModel.prototype.defaults)){
	                        defaults = BaseModel.prototype.defaults.apply(this, arguments);
	                    } else {
	                        defaults = BaseModel.prototype.defaults || {};
	                    }
	                    
	                    extendedDefaults = _.extend({}, defaults);
	                    extendedDefaults[this.idAttribute] = id;
	                    return extendedDefaults;
	                },
	                clear: function(options) {
	                    options = options || {};
	                    var RootClass = this.constructor;
	                    BaseModel.prototype.clear.call(this, options);

	                    //always enforce that the id is set
	                    if (!options.setDefaults) {
	                        this.set(this.idAttribute, RootClass.id);
	                    }
	                    
	                    return this;
	                }
	            },
	            {
	                id: ""
	            }
	        );
	        
	        return Model;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "collections/services/search/Jobs":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("models/services/search/Job"),
	        __webpack_require__("collections/SplunkDsBase")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(JobModel, SplunkDsBaseCollection) {
	        return SplunkDsBaseCollection.extend({
	            url: 'search/jobs',
	            model: JobModel,
	            initialize: function() {
	                SplunkDsBaseCollection.prototype.initialize.apply(this, arguments);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "collections/services/saved/searches/Histories":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("models/services/saved/searches/History"),
	        __webpack_require__("collections/SplunkDsBase")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Model, Collection) {
	        return Collection.extend({
	            initialize: function() {
	                Collection.prototype.initialize.apply(this, arguments);
	            },
	            //url: saved/searches/$NAME$/history
	            model: Model
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/saved/searches/History":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("models/SplunkDBase")], __WEBPACK_AMD_DEFINE_RESULT__ = function(BaseModel) {
	    return BaseModel.extend({
	        initialize: function() {
	            BaseModel.prototype.initialize.apply(this, arguments);
	        },
	        sync : function(method, model, options) {
	            throw new Error('invalid method: ' + method);
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "collections/services/saved/Searches":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("models/services/saved/Search"),
	        __webpack_require__("collections/SplunkDsBase")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(Model, Collection) {
	        return Collection.extend({
	            initialize: function() {
	                Collection.prototype.initialize.apply(this, arguments);
	            },
	            url: 'saved/searches',
	            model: Model
	        },
	        {
	            ALERT_SEARCH_STRING: '(is_scheduled=1 AND (alert_type!=always OR alert.track=1 OR (dispatch.earliest_time="rt*" AND dispatch.latest_time="rt*" AND actions="*" AND actions!="")))'
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/find/results/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    __webpack_require__("shim/jquery"),
	    module,
	    __webpack_require__("views/shared/PopTart"),
	    __webpack_require__("views/shared/Icon"),
	    __webpack_require__("views/shared/splunkbar/find/results/DashboardResults"),
	    __webpack_require__("views/shared/splunkbar/find/results/ReportResults"),
	    __webpack_require__("views/shared/splunkbar/find/results/AlertResults"),
	    __webpack_require__("views/shared/splunkbar/find/results/DatasetResults"),
	    __webpack_require__("views/shared/splunkbar/find/results/DataModelResults"),
	    __webpack_require__("views/shared/splunkbar/find/results/Master.pcssm"),
	    __webpack_require__("uri/route"),
	    __webpack_require__("shim/splunk.util")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    _,
	    $,
	    module,
	    PopTartView,
	    IconView,
	    DashboardResults,
	    ReportResults,
	    AlertResults,
	    DatasetResults,
	    DataModelResults,
	    css,
	    route,
	    splunkUtils
	){
	    return PopTartView.extend({
	        moduleId: module.id,
	        css: css,
	            /**
	             * @param {Object} options {
	             *     collection: {
	             *         dashboards: <collections.shared.Dashboards>,
	             *         reports: <collections.search.Reports>,
	             *         alerts: <collections.search.Reports>,
	             *         datasets: <collections.search.Reports>,
	             *         datamodels: <collections.services.datamodel.DataModels>,
	             *         apps: <collections.services.appLocal>
	             *     model: {
	             *         state: <models.State>,
	             *         application: <models.shared.Application>,
	             *         rawSearch: <models.Base>
	             *     },
	             *     mode: <string>,
	             *     onHiddenRemove: <Boolean>
	             * }
	             */
	        initialize: function() {
	            PopTartView.prototype.initialize.apply(this, arguments);

	            this.children.external = new IconView({icon: 'external'});

	            this.$el.attr('class', css.view);
	        },

	        showNoResults: function() {
	            this.$el.append('<div class="' + css.noResults + '">' + _("No Results for this search.").t() + '</div>');
	        },

	        getAlternateApp: function() {
	            var currentApp = this.model.application.get('app'),
	                alternateApp = currentApp !== 'system' ? currentApp : 'search';
	            var searchApp = _.find(this.collection.apps.models, function(app) {
	                return app.entry.get('name') === 'search';
	            });

	            if (alternateApp === 'search' && searchApp && searchApp.entry.content.get("disabled")) {
	                this.collection.apps.sortWithString(this.model.userPref.entry.content.get('appOrder'));
	                alternateApp = this.collection.apps.models[0].entry.get('name');
	            }
	            return alternateApp;
	        },

	        render: function() {
	            this.el.innerHTML = PopTartView.prototype.template_menu;
	            var searchLink = route.search(
	                this.model.application.get('root'),
	                this.model.application.get('locale'),
	                'search',
	                {
	                    data: {
	                        q: this.model.rawSearch.get('rawSearch')
	                    }
	                }
	            );
	            if (!this.collection.reports.size() &&
	                !this.collection.dashboards.size() &&
	                !this.collection.alerts.size() &&
	                !this.collection.datasets.size() &&
	                !this.collection.datamodels.size()) {
	                this.showNoResults();
	            } else {
	                var alternateApp = this.getAlternateApp();
	                // Report Results
	                if (this.collection.reports.size()) {
	                    this.children.reportResults = new ReportResults({
	                        collection: {
	                            reports: this.collection.reports,
	                            apps: this.collection.apps
	                        },
	                        model: {
	                            application: this.model.application,
	                            state: this.model.state,
	                            rawSearch: this.model.rawSearch
	                        },
	                        alternateApp: alternateApp
	                    });
	                    this.$el.append(this.children.reportResults.render().el);
	                }

	                // Dashboard Results
	                if (this.collection.dashboards.size()) {
	                    this.children.dashboardResults = new DashboardResults({
	                        collection: {
	                            dashboards: this.collection.dashboards,
	                            apps: this.collection.apps
	                        },
	                        model: {
	                            application: this.model.application,
	                            state: this.model.state,
	                            rawSearch: this.model.rawSearch
	                        },
	                        alternateApp: alternateApp
	                    });
	                    this.$el.append(this.children.dashboardResults.render().el);
	                }

	                // Alert Results
	                if (this.collection.alerts.size()) {
	                    this.children.alertResults = new AlertResults({
	                        collection: {
	                            alerts: this.collection.alerts,
	                            apps: this.collection.apps
	                        },
	                        model: {
	                            application: this.model.application,
	                            state: this.model.state,
	                            rawSearch: this.model.rawSearch
	                        },
	                        alternateApp: alternateApp
	                    });
	                    this.$el.append(this.children.alertResults.render().el);
	                }

	                // Dataset Results
	                if (this.collection.datasets.size()) {
	                    this.children.datasetResults = new DatasetResults({
	                        collection: {
	                            datasets: this.collection.datasets,
	                            apps: this.collection.apps
	                        },
	                        model: {
	                            application: this.model.application,
	                            state: this.model.state,
	                            rawSearch: this.model.rawSearch
	                        },
	                        alternateApp: alternateApp
	                    });
	                    this.$el.append(this.children.datasetResults.render().el);
	                }

	                // Data Model Results
	                if (this.collection.datamodels.size()) {
	                    this.children.dataModelResults = new DataModelResults({
	                        collection: {
	                            datamodels: this.collection.datamodels,
	                            apps: this.collection.apps
	                        },
	                        model: {
	                            application: this.model.application,
	                            state: this.model.state,
	                            rawSearch: this.model.rawSearch
	                        },
	                        alternateApp: alternateApp
	                    });
	                    this.$el.append(this.children.dataModelResults.render().el);
	                }
	            }

	            var html = this.compiledTemplate({
	                _: _,
	                splunkUtils: splunkUtils,
	                searchLink: searchLink,
	                rawSearch: this.model.rawSearch.get('rawSearch'),
	                css: this.css
	            });
	            this.$el.append(html);
	            this.children.external.render().prependTo(this.$("[data-role=secondary-search-more-link]"));

	            return this;
	        },
	        template: '\
	        <div class="<%=css.arrow %>" data-popdown-role="arrow"></div>\
	        <ul class="<%=css.list%>" data-popdown-role="body"><li>\
	            <a class="<%=css.primaryLink%>" href="<%- searchLink %>" data-role="search-more-link">\
	                <%- splunkUtils.sprintf(_("Open %s in search").t(), rawSearch) %>\
	            </a>\
	            <a class="<%=css.secondaryLink%>" data-role="secondary-search-more-link" href="<%- searchLink %>" target="_blank" title="<%- splunkUtils.sprintf(_("Open %s in search in new tab").t(), rawSearch) %>">\
	            </a>\
	        </li></ul>\
	        '
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/find/results/AlertResults":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        module,
	        __webpack_require__("views/shared/splunkbar/find/results/BaseResults"),
	        __webpack_require__("uri/route")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        $,
	        module,
	        BaseResultView,
	        route
	    ){
	        return BaseResultView.extend({
	            className: 'alertResults',
	            render: function() {
	                var html = this.compiledTemplate({
	                    _: _,
	                    collection: this.collection.alerts || [],
	                    css: this.css,
	                    className: "alerts",
	                    title: _("Alerts").t(),
	                    modelRoute: route.alert,
	                    nameAttr: undefined,
	                    managerRoute: route.manager(
	                        this.model.application.get('root'),
	                        this.model.application.get('locale'),
	                        'system',
	                        ['alerts'],
	                        {
	                            data: {
	                                search: this.model.state.get('search') || '',
	                                rawSearch: this.model.rawSearch.get('rawSearch') || ''
	                            }
	                        }),
	                    app: this.model.application,
	                    apps: this.collection.apps,
	                    alternateApp: this.options.alternateApp,
	                    getViewingPageRoute: this.getViewingPageRoute
	                });

	                this.$el.html(html);
	                this.addIcons(this.$('[data-role=main-link]'), 'bell', 1.3333);
	                this.addIcons(this.$('[data-role=secondary-link]'), 'external', 1);
	                return this;
	            }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/find/results/BaseResults":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        module,
	        __webpack_require__("views/Base"),
	        __webpack_require__("views/shared/Icon"),
	        __webpack_require__(300),
	        __webpack_require__("views/shared/splunkbar/find/results/BaseResults.pcssm")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        $,
	        module,
	        BaseView,
	        IconView,
	        ResultsTemplate,
	        css
	    ){
	        return BaseView.extend({
	            moduleId: module.id,
	            template: ResultsTemplate,
	            css: css,
	            addIcons: function ($elements, icon, size) {
	                for (var i = 0; i < $elements.length; i++) {
	                    this.children['icon' + icon + i] || (this.children['icons'  + icon + i] = new IconView());
	                    this.children['icons' + icon + i].set({icon: icon, size: (size || 1)}).prependTo($elements.eq(i));
	                }
	            },
	            getViewingPageRoute: function(modelRoute, app, openInApp, model) {
	                return modelRoute(
	                    app.get('root'),
	                    app.get('locale'),
	                    openInApp,
	                    {data: {s: model.id }});
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/SplunkDWhiteList":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("util/splunkd_utils")
	     ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, Backbone, _, BaseModel, splunkDUtils) {
	        return BaseModel.extend({
	            initialize: function(options) {
	                BaseModel.prototype.initialize.apply(this, arguments);
	            },
	            concatOptionalRequired: function() {
	                var optional = (this.get('optional') || []).slice(0),
	                required = (this.get('required') || []).slice(0);
	                return optional.concat(required);
	            },
	            url: '',
	            sync: function(method, model, options) {
	                var  defaults = {
	                        data:{
	                            output_mode: 'json'
	                        },
	                        url: _.isFunction(model.url) ? model.url() : model.url
	                };
	                switch(method) {
	                    case 'read':
	                        defaults.data = _.extend(defaults.data, options.data || {});
	                        delete options.data;
	                        defaults.url = splunkDUtils.fullpath(defaults.url);
	                        break;
	                    default:
	                        throw new Error('invalid method: ' + method);
	                }
	                return Backbone.sync.call(this, method, model, $.extend(true, defaults, options));
	            },
	            parse: function(response){
	                var entity = (response.entry ? $.extend(true, {}, response.entry[0]) : {}),
	                data = entity.fields || {};
	                
	                if (data.wildcard) {
	                    data.wildcard = splunkDUtils.addAnchorsToWildcardArray(data.wildcard);
	                }
	                
	                return data;
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/find/results/BaseResults.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(301);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./BaseResults.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./BaseResults.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "models/services/ACL":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	     __webpack_require__("shim/jquery"),
	     __webpack_require__("require/backbone"),
	     __webpack_require__("models/Base"),
	     __webpack_require__("util/splunkd_utils")
	     ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, Backbone, BaseModel, splunkDUtils) {
	        return BaseModel.extend({
	            initialize: function(attributes, options) {
	                BaseModel.prototype.initialize.apply(this, arguments);
	            },
	            sync: function(method, model, options) {
	                var defaults = {
	                    data: {
	                        output_mode: 'json'
	                    }
	                };
	                switch(method) {
	                case 'update':
	                    defaults.processData = true;
	                    defaults.type = 'POST';
	                    defaults.url = splunkDUtils.fullpath(model.id);
	                    $.extend(true, defaults, options);
	                    break;
	                default:
	                    throw new Error('invalid method: ' + method);
	                }
	                return Backbone.sync.call(this, method, model, defaults);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/PopTart":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * PopTart.show() now has the following signature:
	 *
	 * show($pointTo[, options])
	 *
	 * Where the options are:
	 *
	 * $toggle: Clicking on this element will trigger opening and closing of the PopTart. Defaults to the $pointTo element.
	 * $onOpenFocus: When the PopTart opens, this element is then given focus. Defaults to the first anchor element inside the opened PopTart.
	 * $onCloseFocus: When the PopTart closes, this element is then given focus. Defaults to the $toggle element.
	 * $onClickCloseFocus: When the PopTart closes via a click event, this element is then given focus. Defaults to the $onCloseFocus element.
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        module,
	        __webpack_require__("views/shared/MenuDialog"),
	        __webpack_require__("views/shared/delegates/PopdownDialog")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, module, MenuDialogView, PopdownDialogDelegate) {
	        return MenuDialogView.extend({
	            moduleId: module.id,
	            className: 'popdown-dialog',
	            useLocalClassNames: false,
	            initialize: function() {
	                var defaults = {
	                    direction:'auto',
	                    adjustPosition: true,
	                    mode: 'dialog'
	                };
	                _.defaults(this.options, defaults);

	                MenuDialogView.prototype.initialize.apply(this, arguments);
	                this.children.popdownDialogDelegate = new PopdownDialogDelegate({
	                    el: this.el,
	                    ignoreClasses: this.options.ignoreClasses,
	                    adjustPosition: this.options.adjustPosition,
	                    show: this.options.show,
	                    mode: this.options.mode, // "menu" or "dialog"
	                    direction: this.options.direction,
	                    arrow: this.options.arrow,
	                    minMargin: this.options.minMargin,
	                    allowPopUp: this.options.allowPopUp,
	                    scrollContainer: this.options.scrollContainer,
	                    /**
	                     * If ignoreToggleMouseDown is enabled, the PopTart will take no action when
	                     * clicking on the PopTart's toggle activator element. This allows the
	                     * creator of the PopTart to fully manage closing the opened PopTart.
	                     */
	                    ignoreToggleMouseDown: this.options.ignoreToggleMouseDown
	                });
	                this.activate();
	            },
	            startListening: function() {
	                this.listenTo(this.children.popdownDialogDelegate, 'all', function() {
	                    this.trigger.apply(this, arguments);
	                });
	                this.listenTo(this, 'shown', function() {
	                    this.shown = true;
	                    if (this.$onOpenFocus) {
	                        this.$onOpenFocus.focus();
	                    } else {
	                        this.children.popdownDialogDelegate.$el.find('a').first().focus();
	                    }

	                    $(window).on('resize.' + this.cid, this.onWindowResize.bind(this));
	                });
	                this.listenTo(this, 'hidden', function(e) {
	                    this.shown = false;
	                    if (this.options.onHiddenRemove) {
	                        this.remove();
	                    }

	                    $(window).off("resize." + this.cid);

	                    //Focus on activator
	                    var x = window.pageXOffset,
	                        y = window.pageYOffset;
	                    if (e && e.type === 'mousedown') {
	                        // if there's no other element to focus on use the $onClickCloseFocus
	                        if ($(e.target).closest(':focusable').length === 0) {
	                            this.$onClickCloseFocus.focus();
	                        }
	                    } else {
	                        this.$onCloseFocus.focus();
	                    }
	                    window.scrollTo(x, y);
	                });
	            },
	            toggle: function() {
	                return this.children.popdownDialogDelegate.toggle();
	            },
	            show: function($pointTo, options) {
	                options = options || {};

	                this.$pointTo = $pointTo;
	                this.$toggle = options.$toggle || this.$pointTo;
	                this.$onOpenFocus = options.$onOpenFocus || this.$onOpenFocus;
	                this.$onCloseFocus = options.$onCloseFocus || this.$toggle;
	                this.$onClickCloseFocus = options.$onClickCloseFocus || this.$onCloseFocus;

	                this.children.popdownDialogDelegate.show(this.$pointTo, this.$toggle);
	            },
	            hide: function(e) {
	                this.children.popdownDialogDelegate.hide(e);
	            },
	            render: function() {
	                this.el.innerHTML = this.template;
	                return this;
	            },
	            remove: function() {
	                if (this.shown) {
	                    this.hide();
	                }
	                MenuDialogView.prototype.remove.apply(this, arguments);
	            },
	            onWindowResize: function() {
	                this.children.popdownDialogDelegate.adjustPosition(this.$pointTo);
	            },
	            template: '\
	                <div class="arrow"></div>\
	                <div class="popdown-dialog-body popdown-dialog-padded"></div>\
	            ',
	            template_menu: '\
	                <div class="arrow"></div>\
	            '
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/find/results/DashboardResults":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        module,
	        __webpack_require__("views/shared/splunkbar/find/results/BaseResults"),
	        __webpack_require__("uri/route")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        $,
	        module,
	        BaseResultView,
	        route
	    ){
	        return BaseResultView.extend({
	            className: 'dashboardResults',
	            render: function() {
	                var html = this.compiledTemplate({
	                    _: _,
	                    collection: this.collection.dashboards || [],
	                    className: "dashboards",
	                    css: this.css,
	                    title: _("Dashboards").t(),
	                    nameAttr: 'label',
	                    modelRoute: route.page,
	                    managerRoute: route.manager(
	                        this.model.application.get('root'),
	                        this.model.application.get('locale'),
	                        'system',
	                        ['dashboards'],
	                        {
	                            data: {
	                                search: this.model.state.get('search') || '',
	                                rawSearch: this.model.rawSearch.get('rawSearch') || ''
	                            }
	                        }),
	                    app: this.model.application,
	                    apps: this.collection.apps,
	                    alternateApp: this.options.alternateApp,
	                    getViewingPageRoute: this.getViewingPageRoute
	                });


	                this.$el.html(html);
	                this.addIcons(this.$('[data-role=main-link]'), 'dashboard', 1.3333);
	                this.addIcons(this.$('[data-role=secondary-link]'), 'external', 1);
	                return this;
	            },
	            getViewingPageRoute: function(modelRoute, app, openInApp, model) {
	                return modelRoute(
	                    app.get('root'),
	                    app.get('locale'),
	                    openInApp,
	                    model.entry.get('name')
	                );
	            }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/find/results/ReportResults":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        module,
	        __webpack_require__("views/shared/splunkbar/find/results/BaseResults"),
	        __webpack_require__("uri/route")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        $,
	        module,
	        BaseResultView,
	        route
	    ){
	        return BaseResultView.extend({
	            className: 'reportResults',
	            render: function() {
	                var html = this.compiledTemplate({
	                    _: _,
	                    collection: this.collection.reports || [],
	                    css: this.css,
	                    className: "reports",
	                    title: _("Reports").t(),
	                    modelRoute: route.report,
	                    nameAttr: undefined,
	                    managerRoute: route.manager(
	                        this.model.application.get('root'),
	                        this.model.application.get('locale'),
	                        'system',
	                        ['reports'],
	                        {
	                            data: {
	                                search: this.model.state.get('search') || '',
	                                rawSearch: this.model.rawSearch.get('rawSearch') || ''
	                            }
	                        }),
	                    app: this.model.application,
	                    apps: this.collection.apps,
	                    alternateApp: this.options.alternateApp,
	                    getViewingPageRoute: this.getViewingPageRoute
	                });
	                
	                this.$el.html(html);
	                this.addIcons(this.$('[data-role=main-link]'), 'report', 1.3333);
	                this.addIcons(this.$('[data-role=secondary-link]'), 'external', 1);
	                return this;
	            }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/find/results/DatasetResults":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        module,
	        __webpack_require__("views/shared/splunkbar/find/results/BaseResults"),
	        __webpack_require__("uri/route")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        $,
	        module,
	        BaseResultView,
	        route
	    ){
	        return BaseResultView.extend({
	            className: 'datasetResults',
	            render: function() {
	                var html = this.compiledTemplate({
	                    _: _,
	                    collection: this.collection.datasets || [],
	                    className: "datasets",
	                    css: this.css,
	                    nameAttr: 'displayName',
	                    title: _("Datasets").t(),
	                    modelRoute: route.dataset,
	                    managerRoute: route.datasets(
	                        this.model.application.get('root'),
	                        this.model.application.get('locale'),
	                        this.model.application.get('app'),
	                        {
	                            data: {
	                                search: this.model.state.get('search') || '',
	                                rawSearch: this.model.rawSearch.get('rawSearch') || ''
	                            }
	                        }),
	                    app: this.model.application,
	                    apps: this.collection.apps,
	                    alternateApp: this.options.alternateApp,
	                    getViewingPageRoute: this.getViewingPageRoute
	                });

	                this.$el.html(html);
	                this.addIcons(this.$('[data-role=main-link]'), 'table', 1.3333);
	                this.addIcons(this.$('[data-role=secondary-link]'), 'external', 1);
	                return this;
	            },
	            getViewingPageRoute: function(modelRoute, app, openInApp, model) {
	                return modelRoute(app.get('root'),
	                    app.get('locale'),
	                    openInApp,
	                    {data: model.getRoutingData()});
	            }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/splunkbar/find/results/DataModelResults":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        module,
	        __webpack_require__("views/shared/splunkbar/find/results/BaseResults"),
	        __webpack_require__("uri/route")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        $,
	        module,
	        BaseResultView,
	        route
	    ){
	        return BaseResultView.extend({
	            className: 'dataModelResults',
	            render: function() {
	                var html = this.compiledTemplate({
	                    _: _,
	                    collection: this.collection.datamodels || [],
	                    css: this.css,
	                    className: "data-models",
	                    title: _("Data Models").t(),
	                    modelRoute: route.pivot,
	                    nameAttr: 'displayName',
	                    managerRoute: route.data_model_manager(
	                        this.model.application.get('root'),
	                        this.model.application.get('locale'),
	                        this.model.application.get('app') === 'system' ? 'launcher' : this.model.application.get('app'),
	                        {
	                            data: {
	                                owner: '*',
	                                nameFilter: this.model.rawSearch.get('rawSearch') || '',
	                                app: '-'
	                            }
	                        }),
	                    app: this.model.application,
	                    apps: this.collection.apps,
	                    alternateApp: this.options.alternateApp,
	                    getViewingPageRoute: this.getViewingPageRoute
	                });

	                this.$el.html(html);
	                this.addIcons(this.$('[data-role=main-link]'), 'data', 1.3333);
	                this.addIcons(this.$('[data-role=secondary-link]'), 'external', 1);
	                return this;
	            }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/find/results/Master.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(302);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "util/time":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("stubs/i18n"),
	        __webpack_require__("shim/splunk.util"),
	        __webpack_require__("util/moment"),
	        __webpack_require__("util/console")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, i18n, splunkUtils, moment, console) {

	        var BD_TIME_REGEX_MILLIS = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\.(\d+)[+-]{1}\d{2}[:]?\d{2}$/,
	            BD_TIME_REGEX_NO_MILLIS = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})[+-]{1}\d{2}[:]?\d{2}$/,
	            STRIP_TIMEZONE_REGEX = /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.{0,1}(\d*))[+-]{1}\d{2}[:]?\d{2}$/,
	            u = {},
	            language = i18n.locale_name().substring(0, 2),
	            ISO_PATTERN = '%Y-%m-%dT%H:%M:%S.%Q%:z';
	        
	        u.s = u.sec = u.secs = u.second = u.seconds = {abbr: "s",  singular: _("second").t(), plural: _("seconds").t()};
	        u.m = u.min = u.mins = u.minute = u.minutes = {abbr: "m", singular: _("minute").t(), plural: _("minutes").t()};
	        u.h = u.hr  = u.hrs  = u.hour   = u.hours   = {abbr: "h", singular: _("hour").t(), plural: _("hours").t()};
	        u.d = u.day = u.days = {abbr: "d", singular: _("day").t(), plural: _("days").t()};
	        u.w = u.week = u.weeks = {abbr: "w", singular: _("week").t(), plural: _("weeks").t()};
	        u.mon = u.month = u.months = {abbr: "mon", singular: _("month").t(), plural: _("months").t()};
	        u.q = u.qtr = u.qtrs = u.quarter = u.quarters = {abbr: "q", singular: _("quarter").t(), plural: _("quarters").t()};
	        u.y = u.yr = u.yrs = u.year = u.years = {abbr: "y", singular: _("year").t(), plural: _("years").t()};
	            
	        var TIME_UNITS = u;
	    
	        var BdTime = function(isoString) {
	            var bdPieces = BD_TIME_REGEX_MILLIS.exec(isoString) || BD_TIME_REGEX_NO_MILLIS.exec(isoString);
	            if(!bdPieces) {
	                this.isInvalid = true;
	            }
	            else {
	                this.year   = parseInt(bdPieces[1], 10);
	                this.month  = parseInt(bdPieces[2], 10);
	                this.day    = parseInt(bdPieces[3], 10);
	                this.hour   = parseInt(bdPieces[4], 10);
	                this.minute = parseInt(bdPieces[5], 10);
	                this.second = parseInt(bdPieces[6], 10);
	                this.millisecond = bdPieces.length > 7 ? parseInt(bdPieces[7], 10) : 0;
	            }
	        };
	    
	        var extractBdTime = function(timeString) {
	            return new BdTime(timeString);
	        };
	    
	        var bdTimeToDateObject = function(bdTime) {
	            var year     = bdTime.year,
	                month    = bdTime.month - 1,
	                day      = bdTime.day,
	                hour     = bdTime.hour,
	                minute   = bdTime.minute,
	                second   = bdTime.second,
	                millisecond = bdTime.millisecond;
	    
	            return new Date(year, month, day, hour, minute, second, millisecond);
	        };

	        var getTimezoneString = function(dateObj) {
	            var timezoneOffset = dateObj.getTimezoneOffset(),
	                absoluteValueTimezoneOffset = Math.abs(timezoneOffset),
	                hours = Math.floor(absoluteValueTimezoneOffset / 60),
	                minutes = absoluteValueTimezoneOffset % 60,
	                formattedHours = hours < 10 ? '0' + hours : '' + hours,
	                formattedMinutes = minutes < 10 ? '0' + minutes : '' + minutes,
	                timezone = (timezoneOffset > 0 ? '-' : '+') + formattedHours + ':' + formattedMinutes;
	            
	            return timezone;
	        };

	        /*
	         * Converts a time in seconds to a year/day/hour/minute/second format.
	         * If hourCap flag is true, then years/days aren't included in the conversion,
	         * and hours is allowed to be larger than 24.
	         * @param seconds: the number of seconds to convert
	         * @param hourCap [optional]: whether to cap everything above hour, default false.
	         * @return {Object}
	        */
	        var secondsToSeparatedDate = function(time, hourCap) {
	            var years = 0, days = 0, hours, minutes, seconds, curTimeCounter = time;

	            if (!hourCap) {
	                years = Math.floor(curTimeCounter / 31557600); // 365.25 days per year
	                curTimeCounter -= years * 31557600;

	                days = Math.floor(curTimeCounter / 86400);
	                curTimeCounter -= days * 86400;
	            }

	            hours = Math.floor(curTimeCounter / 3600);
	            curTimeCounter -= hours * 3600;

	            minutes = Math.floor(curTimeCounter / 60);
	            curTimeCounter -= minutes * 60;

	            // We never want to show a time of 0 for everything, so if we started with something like
	            // 0.1 for time, just ceil the counter. Otherwise round it.
	            seconds = time < 1 ? Math.ceil(curTimeCounter) : Math.round(curTimeCounter);

	            return {
	                years: years,
	                days: days,
	                hours: hours,
	                minutes: minutes,
	                seconds: seconds
	            };
	        };
	    
	        var isoToDateObject = function(isoString) {
	            var matches = STRIP_TIMEZONE_REGEX.exec(isoString);
	            if (matches) {
	                var isoWithoutTimezone = matches[1],
	                    isoWithSpoofedTimezone = isoWithoutTimezone + getTimezoneString(new Date()),
	                    correctedIso = isoWithoutTimezone + getTimezoneString(moment(isoWithSpoofedTimezone).toDate());
	                return moment(correctedIso).toDate();
	            }

	            return new Date(NaN);
	        };
	        
	        var jsDateToSplunkDateTimeWithMicroseconds = function(jsDate) {
	            var dateTime = new i18n.DateTime({
	                date: jsDate,
	                year: jsDate.getFullYear(),
	                month: jsDate.getMonth() + 1,
	                day: jsDate.getDate(),
	                hour: jsDate.getHours(),
	                minute: jsDate.getMinutes(),
	                second: jsDate.getSeconds(),
	                microsecond: jsDate.getMilliseconds() * 1000
	            });
	            dateTime.weekday = function() {
	                var d = this.date.getDay() - 1;
	                if (d < 0)
	                    d = 6;
	                return d;
	            };
	            return dateTime;
	        };

	        var _calculateTimeFormat = function(time, spanSeries) {
	            var span = parseFloat(spanSeries[0]);
	            if(!(time instanceof BdTime)) {
	                time = extractBdTime(time);
	            }
	            if (!span) {
	                return time.millisecond === 0 ? 'second' : 'millisecond';
	            }

	            if((span >= 0 && span < 1) || (time.millisecond !== 0)) {
	                return 'millisecond';
	            }
	            if((span >= 1 && span < 60) || (time.second !== 0)) {
	                return 'second';
	            }
	            if((span >= 60 && span < 3600) || (time.minute !== 0)) {
	                return 'minute';
	            }
	            if ((span >= 3600 && span <= 82800) || (time.hour !== 0)) { // 23 hour (82800)
	                return 'hour';
	            }
	            if ((span > 82800 && span <= 2419200) || (time.day !== 1)) { // 1 day to 28 days
	                return 'day';
	            }
	            if ((span > 2419200 && span <= 31535999) || (time.month !== 1)) { // 28 days - 1 year
	                return 'month';
	            }
	            if (span >= 31536000) { // year
	                return 'year';
	            }
	            console.log('_span value (' + span + ') did not meet any time formatting condition');
	            return 'second';
	        };
	    
	        var determineLabelGranularity = function(times, spanSeries) {
	            if(!(times[0] instanceof BdTime)) {
	                times = _(times).map(extractBdTime);
	            }
	            times = _(times).filter(function(time) { return !time.isInvalid; });
	            if(times.length === 1 && (!spanSeries || spanSeries.length === 0)) {
	                return times[0].millisecond === 0 ? 'second' : 'millisecond';
	            }
	            if(times.length === 1 && spanSeries) {
	                return _calculateTimeFormat(times[0], spanSeries);
	            }
	            var milliseconds = [],
	                seconds = [],
	                minutes = [],
	                hours   = [],
	                days    = [],
	                months  = [],
	    
	                allInListMatch = function(list, matchMe) {
	                    for(var i = 0; i < list.length; i++) {
	                        if(list[i] !== matchMe) {
	                            return false;
	                        }
	                    }
	                    return true;
	                };
	    
	            _(times).each(function(time) {
	                milliseconds.push(time.millisecond);
	                seconds.push(time.second);
	                minutes.push(time.minute);
	                hours.push(time.hour);
	                days.push(time.day);
	                months.push(time.month);
	            });

	            if(!allInListMatch(milliseconds, 0)) {
	                return 'millisecond';
	            }
	            if(!allInListMatch(seconds, 0)) {
	                return 'second';
	            }
	            if(!allInListMatch(minutes, 0)) {
	                return 'minute';
	            }
	            if((!allInListMatch(hours, 0))) {
	                return 'hour';
	            }
	            if(!allInListMatch(days, 1)) {
	                return 'day';
	            }
	            if(!allInListMatch(months, 1)) {
	                return 'month';
	            }
	            return 'year';
	        };
	    
	        var isValidIsoTime = function(str) {
	            return BD_TIME_REGEX_MILLIS.test(str) || BD_TIME_REGEX_NO_MILLIS.test(str);
	        };
	        
	    
	        /**
	         * Epoch seconds to LocaleString
	         * @param epochTime
	         * @return {String}
	         */
	        var convertToLocalTime = function(epochTime) {
	            if (!epochTime) {
	                return null;
	            }
	            return new Date(epochTime*1000).toLocaleString();
	        };
	    
	        /**
	         * Converts time difference to "1 year, 6 months ago"; "20 minutes, 30 seconds ago"
	         * @param endTime Unix epoch seconds
	         * @param startTime [optional] Unix epoch seconds; By default - current time.
	         * @param withoutSuffix [optional] true to omit the "ago" suffix
	         * @return {String}
	         */
	        var convertToRelativeTime = function(endTime, startTime, withoutSuffix) {
	            if (!endTime) {
	                return null;
	            }
	            var endMoment = moment.unix(endTime);
	            return startTime !== undefined ?
	                    endMoment.from(moment.unix(startTime), withoutSuffix) :
	                    endMoment.fromNow(withoutSuffix);
	        };

	        /**
	         * Converts parsed time amount and unit to seconds. Converts 1h to 3600.
	         * @param amount {Number}
	         * @param unit {String} ('s', 'm', 'h', 'd')
	         * @return {Number}
	         */
	        var convertAmountAndUnitToSeconds = function(amount, unit) {
	            var seconds = amount;
	            switch (unit) {
	                case 'd':
	                    seconds *= 24 * 60 * 60;
	                    break;
	                case 'h':
	                    seconds *= 60 * 60;
	                    break;
	                case 'm':
	                    seconds *= 60;
	                    break;
	            }
	            return seconds;
	        };

	        var getRelativeStringFromSeconds = function(seconds, removeAgo) {
	            if (_.isString(seconds)) {
	                seconds = parseInt(seconds, 10);
	            }
	            
	            var now = new Date(),
	                startTime = now.getTime() / 1000,
	                endTime = startTime - seconds;
	            
	            return convertToRelativeTime(endTime, startTime, removeAgo);
	        };
	        
	        /*  
	         * Normalize units to their shortest abbreviations.
	         * Required is an optional parameter, defaults to true.
	         * If required and there is no match, s is returned.
	         * 
	         */
	        var normalizeUnit = function(abbr, required) {
	            var hasUnit = TIME_UNITS.hasOwnProperty(abbr),
	                defaultUnit = required === false ? '' : TIME_UNITS.s.abbr;
	            return hasUnit ? TIME_UNITS[abbr].abbr : defaultUnit;
	        };
	        
	        var parseTimeString = function(timeString){
	            if (!_.isString(timeString)) {
	                return false;
	            }
	            //This regex is not a validator of splunk time! Use the TimeParser for that!
	            //-1, -1s, -1@s, -1s@s, +1, +1s, +1@s, +1s@s, s@s, rt@s, @s, rtnow, now
	            var parse = timeString.match(/^\s*(rt|)([-+]?)(\d*)([a-zA-Z]*)(@?)([a-zA-Z]*)(\d*)\s*$/);
	                                           //   1     2     3       4       5       6      7
	            if (parse) {
	                var normalizedUnit = normalizeUnit(parse[4], false),
	                    hasSnap = (parse[5] !== '');
	                
	                return {
	                    amount: (normalizedUnit ? (parseInt(parse[3], 10) || 1) : 0),
	                    unit: normalizedUnit,
	                    hasSnap: hasSnap,
	                    snapUnit: normalizeUnit(parse[6], false),
	                    snapUnitAmount: parseInt(parse[7], 10),
	                    isNow: parse[4] === "now",
	                    isRealTime: parse[1] === 'rt',
	                    isPositive: parse[2] === "+" || true,
	                    parse: parse 
	                };
	            }
	            
	            return false;
	        };

	        /*
	         *  Takes timeStrings of the format "-7d" or "+5h"
	         *  and returns a breakdown of the +/-, amount, and unit components.
	         *  Also, returns false if the timeString is not of a valid
	         *  Splunk relative time modifier format.
	         *  Ignores 'snapTo' '@' syntax.
	         */
	        var parseTimeModifier = function(timeString) {
	            if (!_.isString(timeString)) {
	                return false;
	            }
	            var parse = timeString.match(/^([+-])([0-9]+)([a-zA-Z]+)@?[a-zA-Z]*$/),
	                timeVariance,
	                amount,
	                unit;
	            if (parse) {
	                timeVariance = parse[1];
	                amount = parse[2];
	                unit = normalizeUnit(parse[3], false);
	                return {
	                    timeVariance: timeVariance,
	                    amount: amount,
	                    unit: unit
	                };
	            }
	            return false;
	        };
	        
	        var isRealtime = function(time) {
	            return (_.isString(time) && time.indexOf("rt") === 0);
	        };
	        
	        var stripRTSafe = function(timeString, isLatest) {
	            var sign,
	                parsedTimeString,
	                strippedString;
	            
	            if (!isRealtime(timeString)) {
	                return timeString;
	            }
	            
	            parsedTimeString = parseTimeString(timeString);
	            if (!parsedTimeString) {
	                return timeString;
	            }
	            
	            if (parsedTimeString.unit || parsedTimeString.isNow) {
	                return parsedTimeString.parse.slice(2, parsedTimeString.parse.length).join("");
	            }
	            
	            strippedString = parsedTimeString.parse.slice(3, parsedTimeString.parse.length).join("");
	            if (strippedString) {
	                sign = parsedTimeString.isPositive ? "+" : "-";
	                return sign + strippedString;
	            }
	            
	            if (isLatest) {
	                return "";
	            } else {
	                return "0";
	            }
	        };

	        /**
	         * @param {Object} options {
	         *     iso: time,
	         *     unit: w|d|m|h|s|ms
	         *     amount: <int> 
	         *     type: plus|minus|plusminus
	         * }
	         */
	        var rangeFromIsoAndOffset = function(iso, unit, amount, type) {
	            amount = parseInt(amount, 10);
	            amount = isNaN(amount) ? 1 : amount;
	            type = type === undefined ? 'plusminus' : type;
	            if (['plus', 'minus', 'plusminus'].indexOf(type) === -1) {
	                throw new Error('Invalid type');
	            }
	            var origanalDate = new Date(iso),
	                lowerRange = new Date(iso),
	                upperRange = new Date(iso);

	            switch(unit) {
	                case 'w': 
	                    lowerRange.setDate(lowerRange.getDate() - (7 * amount));
	                    upperRange.setDate(upperRange.getDate() + (7 * amount));
	                    break;
	                case 'd': 
	                    lowerRange.setDate(lowerRange.getDate() - amount);
	                    upperRange.setDate(upperRange.getDate() + amount);
	                    break;
	                case 'h': 
	                    lowerRange.setHours(lowerRange.getHours() - amount);
	                    upperRange.setHours(upperRange.getHours() + amount);
	                    break;
	                case 'm': 
	                    lowerRange.setMinutes(lowerRange.getMinutes() - amount);
	                    upperRange.setMinutes(upperRange.getMinutes() + amount);
	                    break;
	                case 's': 
	                    lowerRange.setSeconds(lowerRange.getSeconds() - amount);
	                    upperRange.setSeconds(upperRange.getSeconds() + amount);
	                    break;
	                case 'ms': 
	                    lowerRange.setMilliseconds(lowerRange.getMilliseconds() - amount);
	                    upperRange.setMilliseconds(upperRange.getMilliseconds() + amount);
	                    break;
	                default:
	                    throw new Error('Invalid unit');
	            }
	            return { 
	                lowerRange: (type === 'minus' || type === 'plusminus') ? lowerRange : origanalDate,
	                upperRange: (type === 'plus' || type === 'plusminus') ? upperRange : origanalDate 
	            }; 
	        };
	        
	        var isAbsolute = function(time) {
	            if (time === undefined) {
	                return false;
	            }
	            return _.isNumber(time) || !(/^(now|-|\+|@|rt).*/.test(time));
	        };
	        
	        var isEpoch = function(time) {
	            return _.isNumber(time) || (_.isString(time) && /^\d+((\.\d+)|(\d*))$/.test(time) && time !== '0');
	        };
	        
	        var timeAndJsDateIsWholeDay = function(time, jsDate) {
	            if (isAbsolute(time) && jsDate) {
	                return (jsDate.getHours() == 0) && (jsDate.getMinutes() == 0) && (jsDate.getSeconds() == 0) && (jsDate.getMilliseconds() == 0);
	            }
	            return false;
	        };
	        
	        var isNow = function(time) {
	            if (!time) {
	                return true;
	            }
	            return (_.isString(time) && ((time === '') || (/now/.test(time))));
	        };
	        
	        var isEmpty = function(time) {
	            if (time === '0') {
	                return true;
	            }
	            return (!time);
	        };

	        var compareTwoTimeRanges = function(earliest1, latest1, earliest2, latest2) {
	            // Check if they are "all time"
	            if (isEmpty(earliest1) && isEmpty(earliest2) && isNow(latest1) && isNow(latest2)) {
	                return true;
	            }

	            if (isEmpty(earliest1) && isEmpty(earliest2) && (latest1 === latest2)) {
	                return true;
	            }

	            if ((earliest1 === earliest2) && isNow(latest1) && isNow(latest2)) {
	                return true;
	            }

	            return (earliest1 === earliest2) && (latest1 === latest2);
	        };
	        
	        var findPresetLabel = function(presetsCollection, earliest, latest) {
	            var presetModel;
	            
	            if (presetsCollection.length > 0) {
	                //TODO: this should probably get moved to the Times collection
	                presetModel = presetsCollection.find(function(model) {
	                    var timesConfEarliest = model.entry.content.get("earliest_time"),
	                        timesConfLatest = model.entry.content.get("latest_time"),
	                        noEarliests = (isEmpty(timesConfEarliest) && isEmpty(earliest)),
	                        noLatests = (isEmpty(timesConfLatest) && isEmpty(latest)),
	                        isDisabled = model.isDisabled(),
	                        isSubMenu = model.isSubMenu();
	                    
	                    return ((!isDisabled && !isSubMenu) && (noEarliests || (timesConfEarliest == earliest)) && (noLatests || (timesConfLatest == latest)));
	                });
	                
	                if (presetModel) {
	                    return presetModel.entry.content.get("label");
	                }
	            }
	            return false;
	        };
	        
	        var generateRealtimeLabel = function(earliest, latest) {
	            var earliestParse, latestIsNow;
	            
	            if (isRealtime(earliest) || isRealtime(latest)) {
	                earliestParse = parseTimeString(earliest);
	                latestIsNow = isNow(latest);
	                
	                var labelTemplates = {
	                    s:_("%t second window").t(),
	                    m: _("%t minute window").t(),
	                    h: _("%t hour window").t(),
	                    d: _("%t day window").t(),
	                    w: _("%t week window").t(),
	                    mon: _("%t month window").t(),
	                    q: _("%t quarter window").t(),
	                    y: _("%t year window").t()
	                };
	            
	                //A windowed time with a latest time of now.
	                if (earliestParse && earliestParse.amount && latestIsNow && labelTemplates.hasOwnProperty(earliestParse.unit)) {
	                    return labelTemplates[earliestParse.unit].replace(/%t/, earliestParse.amount);
	                } 
	                
	                //Other Real-Time.
	                return _("Real-time").t();
	            }
	            return false;
	        };
	        
	        var generateRelativeTimeLabel = function(earliest, latest) {
	            var earliestParse = parseTimeString(earliest),
	                latestIsNow = isNow(latest),
	                latestParse = parseTimeString(latest);
	            
	            if (!earliestParse || earliestParse.isRealTime || latestParse.isRealTime) {
	                return false;
	            }
	            
	            if (earliestParse.amount
	                    && (!earliestParse.snapUnit || earliestParse.unit === earliestParse.snapUnit)
	                    && (latestParse.isNow || (latestParse.snapUnit && !latestParse.amount))
	                    && (!latestParse.snapUnit || earliestParse.unit === latestParse.snapUnit)) {
	                var relativeLabel = _("Last %amount %unit").t();
	                relativeLabel = relativeLabel.replace(/%amount/, earliestParse.amount);
	                relativeLabel = relativeLabel.replace(/%unit/, TIME_UNITS[earliestParse.unit][earliestParse.amount > 1? 'plural' : 'singular']);
	                return relativeLabel;
	            }
	            
	            return false;
	        };
	        
	        var generateBetweenTimeLabel = function(earliest, earliestJSDate, latest, latestJSDate) {
	            var earliestIsWholeDay = timeAndJsDateIsWholeDay(earliest, earliestJSDate),
	                latestIsWholeDay = timeAndJsDateIsWholeDay(latest, latestJSDate);
	            
	            if (earliestIsWholeDay && latestIsWholeDay) {
	                if (language == 'en') {
	                    return i18n.format_datetime_range(null, earliestJSDate, latestJSDate, true);
	                } else {
	                    var dateLabel = _("%1 through %2").t();
	                    var labelDate = new Date(latestJSDate.getTime());
	                    labelDate.setDate(labelDate.getDate() -1);
	                    return dateLabel.replace('%1', i18n.format_date(earliestJSDate, 'short')).replace('%2', i18n.format_date(labelDate, 'short'));
	                }
	            }
	            
	            return false;
	        };
	        
	        var generateSinceDateLabel = function(earliest, earliestJSDate, latest){
	            var earliestIsWholeDay = timeAndJsDateIsWholeDay(earliest, earliestJSDate),
	                latestIsNow = isNow(latest);
	            
	            if (earliestIsWholeDay && latestIsNow) {
	                var dateLabel = _("Since %1").t();
	                return dateLabel.replace('%1', i18n.format_date(earliestJSDate, 'short'));
	            }
	            
	            return false;
	        };
	        
	        var generateBeforeDateLabel = function(earliest, latest, latestJSDate) {            
	            if (isEmpty(earliest) && timeAndJsDateIsWholeDay(latest, latestJSDate)) {
	                var dateLabel = _("Before %1").t();
	                return dateLabel.replace('%1', i18n.format_date(latestJSDate, 'short'));
	            }
	            
	            return false;
	        };
	        
	        var generateDateTimeRangeLabel = function(earliest, latest) {
	            if (!isEmpty(earliest) && isAbsolute(earliest) && isAbsolute(latest)) {
	                return _("Date time range").t();
	            }
	            return false;
	        };
	        
	        var generateSinceTimeRangeLabel = function(earliest, latest) {
	            if (isAbsolute(earliest) && isNow(latest)) {
	                return _("Since date time").t();
	            }
	            return false;
	         };
	         
	         var generateBeforeTimeRangeLabel = function(earliest, latest) {
	             if (isEmpty(earliest) && isAbsolute(latest)) {
	                 return _("Before date time").t();
	             }
	             return false;
	         };
	         
	         var generateAllTimeLabel = function(earliest, latest) {
	             if (isEmpty(earliest) && isNow(latest)) {
	                 return _("All time").t();
	             }
	             return false;
	         };

	        var makeTodayRelativeWithNoTimeZone = function(time) {
	            var date = new Date(time),
	                mDate = moment(date),
	                iscurrentDate = (mDate).isSame(new Date(), "day");
	            if(iscurrentDate)
	            {
	                return (mDate).fromNow();
	            }

	            return date.toString().slice(0,24);
	        };
	    
	        /**
	        * presets: <collections.services.data.ui.TimesV2>
	        **/
	        var generateLabel = function(presetsCollection, earliest, earliestJSDate, latest, latestJSDate) {
	            return generateAllTimeLabel(earliest, latest) ||
	                findPresetLabel(presetsCollection, earliest, latest) ||
	                generateRealtimeLabel(earliest, latest) ||
	                generateRelativeTimeLabel(earliest, latest) ||
	                generateBetweenTimeLabel(earliest, earliestJSDate, latest, latestJSDate) ||
	                generateSinceDateLabel(earliest, earliestJSDate, latest) ||
	                generateBeforeDateLabel(earliest, latest, latestJSDate) ||
	                generateDateTimeRangeLabel(earliest, latest) ||
	                generateSinceTimeRangeLabel(earliest, latest) ||
	                generateBeforeTimeRangeLabel(earliest, latest) ||
	                _("Custom time").t();
	        };

	        var RESULTS_TIMESTAMP_FORMATS = {
	            year: 'YYYY',
	            month: 'YYYY-MM',
	            day: 'YYYY-MM-dd',
	            hour: 'YYYY-MM-dd HH:00',
	            minute: 'YYYY-MM-dd HH:mm:00',
	            second: 'YYYY-MM-dd HH:mm:ss',
	            millisecond: 'YYYY-MM-dd HH:mm:ss.TTT'
	        };
	        
	        return ({
	            extractBdTime: extractBdTime,
	            bdTimeToDateObject: bdTimeToDateObject,
	            rangeFromIsoAndOffset: rangeFromIsoAndOffset,
	            getTimezoneString: getTimezoneString,
	            isoToDateObject: isoToDateObject,
	            determineLabelGranularity: determineLabelGranularity,
	            isValidIsoTime: isValidIsoTime,
	            TIME_UNITS: TIME_UNITS,
	            ISO_PATTERN: ISO_PATTERN,
	            normalizeUnit: normalizeUnit,
	            parseTimeString: parseTimeString,
	            parseTimeModifier: parseTimeModifier,
	            isRealtime: isRealtime,
	            stripRTSafe: stripRTSafe,
	            isAbsolute: isAbsolute,
	            isEpoch: isEpoch,
	            timeAndJsDateIsWholeDay: timeAndJsDateIsWholeDay,
	            isNow: isNow,
	            isEmpty: isEmpty,
	            compareTwoTimeRanges: compareTwoTimeRanges,
	            findPresetLabel: findPresetLabel,
	            generateRealtimeLabel: generateRealtimeLabel,
	            generateRelativeTimeLabel: generateRelativeTimeLabel,
	            generateBetweenTimeLabel: generateBetweenTimeLabel,
	            generateSinceDateLabel: generateSinceDateLabel,
	            generateBeforeDateLabel: generateBeforeDateLabel,
	            generateDateTimeRangeLabel: generateDateTimeRangeLabel,
	            generateSinceTimeRangeLabel: generateSinceTimeRangeLabel,
	            generateBeforeTimeRangeLabel: generateBeforeTimeRangeLabel,
	            generateAllTimeLabel: generateAllTimeLabel,
	            generateLabel: generateLabel,
	            convertToRelativeTime: convertToRelativeTime,
	            convertToLocalTime: convertToLocalTime,
	            jsDateToSplunkDateTimeWithMicroseconds: jsDateToSplunkDateTimeWithMicroseconds,
	            getRelativeStringFromSeconds: getRelativeStringFromSeconds,
	            convertAmountAndUnitToSeconds: convertAmountAndUnitToSeconds,
	            secondsToSeparatedDate: secondsToSeparatedDate,
	            makeTodayRelativeWithNoTimeZone: makeTodayRelativeWithNoTimeZone,
	            RESULTS_TIMESTAMP_FORMATS: RESULTS_TIMESTAMP_FORMATS
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/find/FindProgress":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    __webpack_require__("shim/jquery"),
	    module,
	    __webpack_require__("views/shared/PopTart"),
	    __webpack_require__("views/shared/Icon"),
	    __webpack_require__("views/shared/splunkbar/find/ProgressSpinner"),
	    __webpack_require__("views/shared/splunkbar/find/FindProgress.pcssm"),
	    __webpack_require__("uri/route"),
	    __webpack_require__("shim/splunk.util")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    _,
	    $,
	    module,
	    PopTartView,
	    IconView,
	    ProgressSpinner,
	    css,
	    route,
	    splunkUtils
	){
	    return PopTartView.extend({
	        moduleId: module.id,
	        css: css,
	        initialize: function() {
	            PopTartView.prototype.initialize.apply(this, arguments);

	            this.children.external = new IconView({icon: 'external'});

	            this.$el.attr('class', css.view);
	        },
	        render: function() {
	            this.el.innerHTML = '';

	            // Open "keyword" in new search
	            var searchLink = route.search(
	                    this.model.application.get('root'),
	                    this.model.application.get('locale'),
	                    'search',
	                    {data: {q: this.model.rawSearch.get('rawSearch')}}
	                );

	            var html = this.compiledTemplate({
	                _: _,
	                splunkUtils: splunkUtils,
	                searchLink: searchLink,
	                rawSearch: this.model.rawSearch.get('rawSearch'),
	                css: this.css
	            });
	            this.$el.append(html);

	            this.children.spinner = new ProgressSpinner();
	            this.$('[data-role=spinner-wrapper]').append(this.children.spinner.render().el);
	            this.children.external.render().prependTo(this.$("[data-role=secondary-search-more-link]"));
	            return this;
	        },
	        template: '\
	        <div class="<%=css.arrow %>" data-popdown-role="arrow"></div>\
	        <div class="<%=css.spinnerWrapper %>" data-role="spinner-wrapper"></div>\
	        <% if (rawSearch) { %>\
	            <ul class="<%=css.list%>" data-popdown-role="body"><li>\
	                <a class="<%=css.primaryLink%>" data-role="search-more-link" href="<%- searchLink %>">\
	                    <%- splunkUtils.sprintf(_("Open %s in search").t(), rawSearch) %>\
	                </a>\
	                <a class="<%=css.secondaryLink%>" data-role="secondary-search-more-link" href="<%- searchLink %>" target="_blank" title="<%- splunkUtils.sprintf(_("Open %s in search in new tab").t(), rawSearch) %>"></a>\
	            </li></ul>\
	        <% } %>\
	        '
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/find/ProgressSpinner":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("views/shared/waitspinner/Master"),
	    __webpack_require__("shim/splunk.util")], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    _,
	    module,
	    SpinnerView,
	    splunkutil
	){
	    return SpinnerView.extend({
	        moduleId: module.id,
	        initialize: function() {
	            this.options.useLocalClassNames = true;
	            SpinnerView.prototype.initialize.apply(this, arguments);
	        },
	        render: function() {
	            this.$el.show()['addClass']('active');
	            this.start();
	            this.spinning = true;
	            return this;
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/waitspinner/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("require/underscore"), module, __webpack_require__("views/Base"), __webpack_require__("views/shared/waitspinner/Master.pcssm")], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, module, BaseView, css) {


	    return BaseView.extend({
	        moduleId: module.id,
	        useLocalClassNames: false,
	        constructor: function(options) {
	            _.extend(this, _.pick(options || {}, 'useLocalClassNames'));

	            if (this.useLocalClassNames && this.css === undefined) {
	                this.css = css;
	            }

	            BaseView.apply(this, arguments);
	        },
	        initialize: function(){
	            BaseView.prototype.initialize.apply(this, arguments);

	            var defaults = {
	              size: 'small',
	              color: 'gray',
	              frameWidth: 14, //px
	              frameCount: 8,
	              fps: 10
	            };

	            _.defaults(this.options, defaults);

	            if (this.useLocalClassNames) {
	                this.$el.attr('class', this.css[this.options.size + this.options.color]);
	            } else {
	                this.$el.addClass('spinner-' + this.options.size + '-' + this.options.color);
	            }

	            this.frame=0;
	        },
	        stop:  function() {
	            this.active=false;
	            this.interval && window.clearInterval(this.interval);
	            return this;
	        },
	        start:  function() {
	            this.active=true;
	            this.interval && window.clearInterval(this.interval);
	            this.interval=setInterval(this.step.bind(this), 1000/this.options.fps);
	            return this;
	        },
	        step:  function() {
	            this.$el.css('backgroundPosition', '-' + (this.frame * this.options.frameWidth) + 'px top ');

	            this.frame++;
	            this.frame = this.frame == this.options.frameCount ? 0 : this.frame;

	            return this;
	        },
	        remove: function() {
	            this.stop();
	            BaseView.prototype.remove.apply(this, arguments);
	        },
	        render: function() {
	            return this;
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/waitspinner/Master.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(303);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "util/moment":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("stubs/i18n"), __webpack_require__("contrib/moment")], __WEBPACK_AMD_DEFINE_RESULT__ = function(i18n, moment){
	    var initFn = i18n.moment_install;
	    if(typeof initFn === 'function') {
	        initFn(moment);
	    }
	    return moment;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/waitspinner/loading_small_gray.png":
/***/ (function(module, exports) {

	module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHAAAAAOCAMAAADAFmjIAAAA4VBMVEUAAAAAAAAAAAAAAAAAAAAzMzMrKyskJCQgICAcHBwzMzMuLi4rKysnJyckJCQzMzMwMDAtLS0rKysoKCgzMzMxMTEuLi4sLCwrKysxMTEvLy8sLCwzMzMvLy8xMTEyMjIxMTEvLy8yMjIxMTExMTEzMzMyMjIwMDAyMjIzMzMzMzMyMjIzMzMzMzMzMzMyMjI0NDQyMjIzMzMzMzMyMjIzMzM0NDQyMjIyMjIyMjIzMzMyMjIzMzMzMzMyMjIzMzMzMzMyMjIzMzMyMjIzMzMyMjIyMjIzMzMyMjIyMjIzMzOOIdI3AAAASnRSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGhsdHjY/SElMTVNUWmFlZmhpbHl9fn+AkJGSlJeZoqeoqrGztLy+wsrM0dPb5Obz/dROKywAAALCSURBVDiNvZRbV+JQDIVzeqOUUgRFESkoFwUqFQQpOFwUUJT//4MmyUnHPvswfejiW6sk5yR7bwB+1mvIPEmSpckkS3GcpSjKUq+XpVYrS2H47+e1DXA6Aag80ZUFcDwCOA2iC6TdDsCuE5VNgNUKwKoRBUjzOVKVqGAAjMcAZoXIVQD9PlKJ6MYBaLcBDJ+o/rmtUEOneecC1N6XZ9Tw8vB9A1D9Mwuo4fn28xqg8hL71LC8fL8CKD0NPWpYmv25APAfui41LMYvZYD8XdOhhoXhUwDQ+D5UqaHbfShgQ3t73Bg40ma7iceylruFkSTm/nTAY1mz1dSYTIzNcYtjMOP5SMWxsdgt8eLmcDxQUWRMVzMko9vvqF5PjeYxXlxhMRypGoyHSM7htDfDUHX6XYOueL75KGLtWzwUjW3xhhcPvvY8qNL01cPjf2x4UMXRM4698LY44yEOHnN4mddpwEPs3OP/3ecRj81p3uIpco8Dj+hy/4Wjte87rl6iHq0lKzUK3MkU4sUWDU2K/+GnlKO3l5JN77ySMlwuJ2TymRymyW4nKmz1+614tRIVhu12GM3nosL16bTujceiwuR4TOhrTVSBvtZEFehrTVSBvtbEFf57Qxqbl72+doedUi47bsVrDszs2NIBawcUhIwiDzglXporNYPpa/5nwf7oGRflyII9FkYqKBQGLqokgtLCKIqgqvsvXJQvgqpsPrCHJ4I6W7yhMPIiKJZ+FImEWfooby1hlj4mhrYMSz8MxTIs/fVaLMPSTxKxDFsN7aQtw1aLY7GMNjcaGE1aEnOjgdGkvpgbDYyhkBdzo4ExFBpibgwMDIW6mBsDA0OhJmGCgYGhUJUwwcDAUNDDsHREae1WTB1RP+6giPrxA0WUc8MLUjoS7WuihqMj0boiqts6Eq0LopqlI9EsQ/r8KoThN6H/F7Moal/JLhZCAAAAAElFTkSuQmCC"

/***/ }),

/***/ "views/shared/waitspinner/loading_medium_green.png":
/***/ (function(module, exports) {

	module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJgAAAATCAMAAABbazQIAAABC1BMVEUAAAAAAABmmTNVqitgnyBmmTNdoi5inSdmmTNapS1jqjlmpjNhnjFgqjVeoS9bpDdhpzVjpTFipTVmoDNgpTdlqDZiozRgpjNkqDJhpDdlpjViozZlpTVjoTRjpzRkpTdlpDVhojNmpzhkpDdlpzVjpTVhojVkozhjpDVlpTVkozRipDdipDhjozZjpjVjpjhlpzRlpzhmpjZkpDhjpTdjpDZkozZkpTZkozVkpjVjpDdkpTZkpTdjpjZkpDdkpThlpTdkpjdlpjdlpzhkpTdmpThlpDVlpjVlpTZmpzdlpjdmpzdlpjZlpThlpjhlpThlpjZlpTZlpjdkpDdkpTdlpTdlpjdkpjZlpjeqOF8gAAAAWHRSTlMAAQUGCAoLDQ8REhQVGBscHR8iIyUmJygpKisvMDExMzU3Nzg6Pj9AQ0RFRklLTU1OTlBXWFpeXmFhYmNmZ2tudHh5fH2AgYaNkZWZnaqus8LHzNvg5vP5FKZ9mgAAA+VJREFUSMfNVtla4jAYLS7jwsAII8ogso0M6ih1wwWLglhUqlQq1b7/k8y/Jc3Xay4mF4keTXKanJzzW5a0p88nK9EGH4MkdPd+l4Qu3y6T0NnLWRLaf9hPQrXrWhLaPtpOQtZX9JWEZuEsCU2DaRKa+JMkNPbGSWjoDpPQrXObhI7tY+O31f4F9FEUQb9RWEBopXcCfRiGlpXqjtYQ+tY5gD4IAugv+qsILbf3oPd9H/qT3gpCS61d6D3Pg/6g8w2hxeoW9K7rQr/XXkZoobABveM40O+2lhBaG3VTlmXbNvy8VV0kYv0wfBZiO7ZdQKgXBI9MLPUaRSOEOr5/L8Sew7CPUNvzroTYYxD0EGq57qkQu/f9DkJVx2kKsSvPayNUsO0dIXbqui2ERlH0mmJiTcepErGLEJnhVQIvG7/FOgmQGVwl8oq6CB34yAyvEniFeMbWnofM8CqBV4BnbO26yAyvEnj5eMbWloPM8CqBl4dnbG3YyAyvEni5eMZWN0JmeJXAy9niu8SdmiD+7/T/1HCnOoj/L/0/QbhTGcT/h76DGu5UBPH/pu+ghjvlQfy79B3UcKcsiP8XfQc1PIE0iP8nfQc2OoFDEP8P+g5LM2vAsK55EbMKLqp5EbMSDA3Ni5htwlDRvIhZDoaS5kXMMjBsal7EbB2GnOLFzJBQxuAFUxs0rKdjqF7hvxymNFQu0dAwJhY3aajUYyifo6FUjqFshobNYgyl12nI5TWSOuR1M1lxpmkQTJU51W4d57Z2OfH9iTKn7WPbPt4+G3veWJnT01cUfT3tD113qMxpMAvD2YCnW+bCPF1ZHi3M05Xl0cI8XVkeL/wO+gjeBbuGC3au30Af/ptARyAH++gF9OG9CPQJcog+H0Af7oNAHyC88IOnC8QL83SBeGGeLhAvzNMFkoX/2xMz1WPcuFKPunFDPaYSRT2mEkU9hhKVekwliqpNJYqqTSXKezPeiHpv5huR92a+XXlv5tuV92a8XfXezLcrPmC+XfEB8+2SQ4H35LWrsEOB92RjVyGHAu9Jx25HDgXecxi7HTkUeGJTux07FHhiPXY7ck7wxHLsduSc4InF2O3Y09Gtce9y7Ono1rh3IfZ0dGudD+zp4Na0903s6ZgiuPd57OlYEODe7ThrMEV0PnDWYIrofJAUpHxTycUpSPmmkotTkPJNJSqnIOabTlROQcpdlaicglQQqETldKbcVYnK6Uy5qxJV6gauCCTruW7gikCyfqlV1hWB1CCLVeRHwatqEK4buFKRGmRtdJOSSkXVIKv9c12pSA2y0mvrSkVqkPnWUHOv7eZadc6jGv4HyzYxfUPVdpMAAAAASUVORK5CYII="

/***/ }),

/***/ "views/shared/waitspinner/loading_small_gray_2x.png":
/***/ (function(module, exports) {

	module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOAAAAAcCAMAAABPo0OxAAABRFBMVEUAAAAAAAAAAAArKyskJCQgICAcHBwzMzMrKysnJyczMzMwMDAtLS0rKysoKCgxMTEuLi4sLCwrKyszMzMxMTEvLy8uLi4sLCwzMzMxMTEwMDAuLi4tLS0zMzMyMjIwMDAuLi4yMjIvLy8uLi40NDQyMjIzMzMyMjIxMTEzMzMxMTEwMDAwMDAyMjIwMDAvLy8zMzMyMjIxMTEwMDAyMjIxMTEwMDAwMDAvLy8yMjIxMTEyMjIxMTEwMDAxMTEwMDAzMzMyMjIzMzMzMzM0NDQzMzMzMzMzMzM0NDQzMzMzMzMzMzM0NDQzMzMzMzMzMzMyMjI0NDQyMjIzMzMzMzMzMzMzMzMzMzMzMzMzMzMyMjIzMzMzMzMzMzMyMjIyMjIzMzMyMjIyMjIyMjIzMzMzMzMzMzMyMjIyMjIzMzMzMzMzMzM4tHgFAAAAa3RSTlMAAwQGBwgJCgwNDxAREhMVFhcYGRobHB0eHyAhIiMkJScpKywsLjIzNDc5Ojs9QEFBQkRFSElKS0xNTldYWmNkZGZtb3F8fX6AgoeIlJWWl5mZnp+usLO0tcTGx8jJy8zM2t/g4uPm+Pn7/IPQykIAAAXfSURBVFjD5VldU1pJEL2KArqyogsifmDED1DUgAQSRFGiGKLGBEU0xigxgDH8//edO9M9dF8YXrYqW5XM0xTn1tjn0k6fc7AssjLN5ivLsJIPD1smLHFzs27CYpeXqyYsenoaNWGRo6OICQvt7U2ZMP/29rgJsxrtdsOE3bda9ybsul6/NmEXtdqFCTupVE5M2FG5fGTC9orFPRO2ncttGwm2xTJhLbFMWF0sE1YTy4RVxDJhZbFMWFEsE5YTq+vDFweLnODI7Ahi87sRTnDlcAmx6dwMJ7h48AKxQCrICUZ253UbrU1wgjO5acTGlnycYDAVQAzL0gQn1vyILR2ucIK+pTHN73ursUMJBl7nXgPD+S/1uzQlmH9u/wCG09Xa1SYluNNofQeGgQ+V8zglmL6rfwGG/lL5OEoJbl7VqsBwrFDcn6ME4+eVD8BwRJQVoASjx+USMFz60X7OU4Jz+8UCMjwQtTd3OgQDb8RDswrbFbV/TXcI5n+KZw6hG0TtkiEQ3GmKZw4UlhK1f4x3CKa/imd2FbYman8X7RAU/Go16KslUbtkCATjH8UzKYXNirLeBDoEo+/EM2sKOxRl/cx3CAp+xSK22mIDGKpLRvLDbzByBwzVJSP5PatmsGaugKG6ZCS/hmp2K3gODNUlI/ndwbU4cQwM1SUj+V2pZrd8+8BQXTKS33lQf4OKobpkJL9j1ezWyjMwVJeM5Lfvwx6VpT0G7TGRsdxZfFFyydJuJ+0xkbTCT/iiLAtffXXcHhMJK/iIjSCXLO3MZ4+JmDV5i42gxoNdWmlUjYnxKjaCZeGrL3jVmPCdYSOovrdffdZtj4mQNVrCRpBLvvqnsD0m/Ja3gI1AGUIj+Bk/YLgBg5LxA4YxGJSMHzBchkHJ+AHDBRiUjB8wDMFzjB8whP+6COMHDLMwKB38BMPH1meP2g68zGUDFEvf1qtutfV+az/lKbZZrX0aVlvP59bjDsXiZ5X3Q2rrrtZv02zEl8pvXWo7/KlW3aTYXKGYH1TbofeVszjFAtncywG1db0tl5hMyD+1v3nVdjBfLMzxSRFMenA74HdzbDKhP/Bmwxwbjw3j1gODQS9fdAi37o1Jjo1GXLgdjjmkhzc0iNuhZR/H3P4B3LoWRjkWznhxOxjyWn/KSlzbl/x1gms9+yLeC8Uu7Ev+Isa1nn0Rb/ujJ/Ylf8KaJNOwB00jEzmyL3muJZP39qC5T+LZvWrAs5mWhRrwbNboUAOezbUs1HBTl+vGofVkFZc1uS4dWk9WcVqR65RizbZcTXm2Q0s+tOR6wLMphjXg2RTDGvBsimENeLZDy6oafnuC0B7rPVp0CtpjtUeLjvdp0Vd9WnQLz+7Rout4do8WXcWz+7ToVs8W/VMWue5dEcf161seMl6/owsu43gh1703EzZe956kY7yEs/qPuBOO8RJMeYzjZXJDFzAUdYwXMrC7BigZ2F0DlAzsLoFABnaXQCADu0sgkIHdJRCIIOkSCESQdAkEKrkWHBJISq5obwkkJVekt8SjkivrkHhUcqUcEk9KLpgGGw6JJyVlsrfEk5ISpt2yQ+KhaJbi9y8uYlE0S/HrELEommVG4hDpKJplRjLDRTqKZpkBTXGRjqJZZkD/cJGOpkBmQH4u0tEUyAzoby7Ste1R9oXZEG17lH1hNkTbHmVfmM3StkfZF2aztO1R9ozZLG17lD1jNkvbOmXPmM3Stk7ZM2azOsYVDCg1ktq4ggGlRlIbVzCg1Chr4woGlBplbVzBYFOjrI0rGGxqlLUxB4NNjbI25mCwqVHuRA8YIZAoQEcPGCGQKEBHDxghkKhDRw8YIZCoQ0cPGJGQqENHDxiRkKhDRysYkZCoQ0crGJGQqKMTHukQiIQ5GB7pEIiEORge6RCIhFUYHukQiIRV+JgOuUhYheGRDrlIWIXhmA65SFiF4ZgOuUhY9etjvP8ppvzlQeyvDpr/S5Qe6hOl+02YzIDMPxUk+/xUkOjzUwGzd/8CAUVqYT2GJ6sAAAAASUVORK5CYII="

/***/ }),

/***/ "views/shared/waitspinner/loading_medium_green_2x.png":
/***/ (function(module, exports) {

	module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATAAAAAmCAMAAAB03TfzAAABa1BMVEUAAAAAAAAA/wAAgACAgABVVQBVqgBAgABAv0AzmTNmmTNVgCtVqitJkiRgnyBmmTNdoi5inSdVmTNmmTNapS1eoTZZpjNooi5gnzVipzFmojNgnzBgnzhkojZipTVloTZlqDZiozRmpjNkojhhpDdkpjdiozZlpTVkpTdipzZlpDVjpTRjpTlkpDdjpDRipjdhpjllpjVkozRkozhipTdkojZjpDVlpThkpjdjozVjpjVjpjlkpTdlqDZjpjhjpjZlpDZkpTVhpDdkpzdlpjVkpjZlpTVkpDVjpDZipTVlpTVkpjVkpTdmpThjpjVmpTZlpjZmpTZkpDdmpDdmpjdkpjZlpjdkpTZkpTZmpThlpjVkpzdlpjZmpjZlpjdkpTdkpDZlpThlpDdmpzdlpTdlpTZkpTZkpTdlpDZkpzdlpThlpTdlpTZkpTdlpjZlpTdlpjdlpTdlpTdkpjZlpTdlpTZlpTdlpTZlpjcZxWgKAAAAeHRSTlMAAQECAgMDBAQFBQYGBwgKCw0PDxETFBYYGh4gICEiJiYnKCkqLi8wMzQ1NjY4Ozw/P0BAQUJDREVISEhKTE1QUVJUVFZZW1xfYGBhZmlqbG1xc3N4e35/gICBgomKkJGSk5iZoaKkqKmts7a4vcDDzM/S2dnm5vG5lg/kAAAIJklEQVRo3u2aaVcTSxCGI4EkBpBFEIPsoCC4sCkoEAFBtgBhlbAJBAQiS9hCfv6dpaurprvm9vF+4p5DfetDcWb6SadT9b4VCChRvH13t10cMER07epqLWrKiiTPzpIRU1Z49vBwNmzKCo3t7IyFTFlFAysrA0WmrGDX1FRX0JRV0Do42Fpgygps563YNmWt5axYM2Uls1YkTVmzGStmTVljaSvGTFkDKSsGTFldCSu6TFmtcStajcDubGB3pqwrG9iVKevMBnZmyjq0gR2asnZsYDumrBUb2Iopa8oGNmXKGrSBDRqB5Z0wZeWcMGVlnTBlZZwwZaWdMGWlnDBlJZwwZcWd8Pnj8w8NHLDyas89VfG2lgPW+KmKZpW/jnHAGj48p1llzTUcsNq3FTTrWX01Byz2upxmlcQqOWA1zWWee7e6nANWXf+MZlV9auSAVcZKaNaX21xur0QFFmyPx4deYlbvRTa7GVWBlR7l8/ffMOv9SSazFFGBlezlcrdfMKt9N52eC6vAopvZ7EUvZrWsplKjIRVYZCmTOXmPWa9mEoneQhVYeC6d3m3HrJdD8Xh7UAUWGk2lVlsw69t9Pn9UqgIr7E0kZl6R83Vrb/93iRdY8J39D0PyjFVc2Nv/FfUCK/1j59/LM1Z+Ym//Z8QLrOS3nX8rz1jZrr39ZNgLLPrLzr+QZ+zZqr39HyEvsMhPO/9EnrGSGXv7Xwu9wMJJO39XnrHokL2bd0EvsNAPO39VnrGqe3s3f0q9wAq/2vkzeMY+uvt3iElgLq94HL4TgU53/w4xCczllc9/gqw37v4dYhKYyyuX+yCPjrt/h5gE5vLKZt9CVr27f4eYBObyymReQ1bM3b9DTAJzeaXTzZD1wt2NQ0wCc3mlUvWQ9dndjUNMAnN5JRIxCawhh8QAGPCKy0+yNovEABjwyjfK188gMQAGvHJwUQZq0kgMgAGvLFyUgeoUEgNgwCsjX78ygcQAGPBK18iTH0diAAx4peShaMwjMQAGvBKV+J3cA2JhKCsKgBe5BTaBWBjKimLgdYRZS0AsBGVFFHjtYdYcECuCsiICvDYxaxSIFUJZEQZeS+RuBWJBKCtCwGuO3JpA7AmUFUXAaxSzjoDYUygrgsCrl/7MwJaWoXBtIh+IvAZgSwkoXDfIByLLe9jSJBSuy+QAy/IetjQChWuCHGBZ3sOW+qBwnSQHGEIegQ4oXEfIAZblPRyBJihc+8gBhpBfmQ0oXDvIAdaJXUJr1K/zQmKn0Brd6LyQ2AG0Rpc6LyS2Ba3Rqc4LiS1Ca3Sg80JiE9Aabem8kFg/tEaLOi8kdgOt0QTHSxI7h3U3w0sSO4b1NcNLEtuH9TnDSxJbh/Uxw0sSm4f1PsNLEhuH9TrDSxLrhvU8w0sSu4b1OMsLiE3Dso7jBcS+w3KB4wXEhmE5zfECYj2w/M7xAmKdsBzmeAGxNlj2cLyAWJ382ed4AbEFWLbxvCwWy5fn07is6+5vesIIEInTY8kr8GTh+mbjKSNATB7sD+Ny+vxymZEjQiNb6z24/H58mmCyivoW5ztxObx/MMmIFsGOifE2XPasb40wokVBU393HS475xf7GBLFGzfXC7j3tvGJDqO08Rj/plm5t62mXFlXo3vfWRekdTG7t62mXFlXo3uXWhekdTG7t62mXFk/Je5dav2gWBeze9tqypX1U+L+Plg/KPTp/m9Mn66pbPKN6dM1lU2+MX26prLhGyezMpKMauRG12xGxiyjGrnROpaWMcaobG5sD6RkDDAqmxtr9OmMyibemD6dUdnEG9OnMyqbeGP6dEZlgzc+w8efMaqR+JQP8fGHjGokPuUdfPwOo7KJT3kFH7/CqGziU6ZPZ1Q28cb06YzKJt6YPp1R2cQb06czKhu88SOwvwT2+JX8y6/k46X/l5f+Y/zXUIpNn6JOKTZ9ijql2PQpgr3Fpl8RrBSbPkWwUmz6FMFKce5TBHuLc78iWGlnfNoGpZ3xaRuUdsanzVLaGZ82S2lnfNospZ3xabOU9s+nzVLaP582S22Y+cZUbZj5xlRtmPlGXm2Y+UZebZj5Rl5tmPlGXhUY+EZeFRj4Rh4lGSGjsNIHSjJCRmGlD5RkhIzCSkUoyQgZhZWKUJIRshMrFaEkI2QnVipCCUvITqxUhBKWkJ1YqYiIfkKo48Q1IvoJoY4T14joJ4Q6Towkop8Q6jgxkoh+QtjkxEgi+glhkxMjiUgqhE1OjCQiqRA2OTGSyspCCubkWyIrCymYk2+JrCykYE7uJrKykII5uZvIykI65+RuIisL6ZyTu4kML6RzTu4mMryQzjm5mxoXYDboBgE1LsBs0A0CalyA2aAbKtS4ALNBN1SocQHmjG6oUOMCzBndUKFGD5gzuqFCjR4wZ3RDxWONSTtLs6CoNSbtLM2CotaYtLM0y45aY9LO0iw7ao1J+0+z7Kg1Ju0/zbKjVqK0/zTLjlqJ0v7TLDuP+YqGqWpyUvMVDVPV5KTmKxqmqilMzVc0TFVTmJqvaDCrpjA1X9FgVk1halajwayawtSsRoNZNYU99j6x5FUbndj7xJJXbXRi7xNLXh07IPY+seTVsQNi75MRBnXsgNj7ZIRBHTsg4xBkhEEdOyDjEGSEQR07sM7Ymxg39KEMapS11HBDH8qgBg6QeIY+yl9E+QESz9BH42fPYEv0RTk3JNPw0TPYUvW5kRuSqe30DLY8/9jADcnE3ngGWyo6a7khmZqWsv/HWNGDH8N6sINrD3XQ78GORj7UUdIHO3z7UIaV/wExz03T3BQRRgAAAABJRU5ErkJggg=="

/***/ }),

/***/ "views/shared/splunkbar/find/FindProgress.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(304);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./FindProgress.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./FindProgress.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "contrib/moment":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js
	//! version : 2.8.3
	//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
	//! license : MIT
	//! momentjs.com

	(function (undefined) {
	    /************************************
	        Constants
	    ************************************/

	    var moment,
	        VERSION = '2.8.3',
	        // the global-scope this is NOT the global object in Node.js
	        globalScope = typeof global !== 'undefined' ? global : this,
	        oldGlobalMoment,
	        round = Math.round,
	        hasOwnProperty = Object.prototype.hasOwnProperty,
	        i,

	        YEAR = 0,
	        MONTH = 1,
	        DATE = 2,
	        HOUR = 3,
	        MINUTE = 4,
	        SECOND = 5,
	        MILLISECOND = 6,

	        // internal storage for locale config files
	        locales = {},

	        // extra moment internal properties (plugins register props here)
	        momentProperties = [],

	        // check for nodeJS
	        hasModule = (typeof module !== 'undefined' && module.exports),

	        // ASP.NET json date format regex
	        aspNetJsonRegex = /^\/?Date\((\-?\d+)/i,
	        aspNetTimeSpanJsonRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,

	        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
	        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
	        isoDurationRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,

	        // format tokens
	        formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g,
	        localFormattingTokens = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,

	        // parsing token regexes
	        parseTokenOneOrTwoDigits = /\d\d?/, // 0 - 99
	        parseTokenOneToThreeDigits = /\d{1,3}/, // 0 - 999
	        parseTokenOneToFourDigits = /\d{1,4}/, // 0 - 9999
	        parseTokenOneToSixDigits = /[+\-]?\d{1,6}/, // -999,999 - 999,999
	        parseTokenDigits = /\d+/, // nonzero number of digits
	        parseTokenWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, // any word (or two) characters or numbers including two/three word month in arabic.
	        parseTokenTimezone = /Z|[\+\-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
	        parseTokenT = /T/i, // T (ISO separator)
	        parseTokenTimestampMs = /[\+\-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
	        parseTokenOrdinal = /\d{1,2}/,

	        //strict parsing regexes
	        parseTokenOneDigit = /\d/, // 0 - 9
	        parseTokenTwoDigits = /\d\d/, // 00 - 99
	        parseTokenThreeDigits = /\d{3}/, // 000 - 999
	        parseTokenFourDigits = /\d{4}/, // 0000 - 9999
	        parseTokenSixDigits = /[+-]?\d{6}/, // -999,999 - 999,999
	        parseTokenSignedNumber = /[+-]?\d+/, // -inf - inf

	        // iso 8601 regex
	        // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
	        isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,

	        isoFormat = 'YYYY-MM-DDTHH:mm:ssZ',

	        isoDates = [
	            ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/],
	            ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/],
	            ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/],
	            ['GGGG-[W]WW', /\d{4}-W\d{2}/],
	            ['YYYY-DDD', /\d{4}-\d{3}/]
	        ],

	        // iso time formats and regexes
	        isoTimes = [
	            ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/],
	            ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/],
	            ['HH:mm', /(T| )\d\d:\d\d/],
	            ['HH', /(T| )\d\d/]
	        ],

	        // timezone chunker '+10:00' > ['10', '00'] or '-1530' > ['-15', '30']
	        parseTimezoneChunker = /([\+\-]|\d\d)/gi,

	        // getter and setter names
	        proxyGettersAndSetters = 'Date|Hours|Minutes|Seconds|Milliseconds'.split('|'),
	        unitMillisecondFactors = {
	            'Milliseconds' : 1,
	            'Seconds' : 1e3,
	            'Minutes' : 6e4,
	            'Hours' : 36e5,
	            'Days' : 864e5,
	            'Months' : 2592e6,
	            'Years' : 31536e6
	        },

	        unitAliases = {
	            ms : 'millisecond',
	            s : 'second',
	            m : 'minute',
	            h : 'hour',
	            d : 'day',
	            D : 'date',
	            w : 'week',
	            W : 'isoWeek',
	            M : 'month',
	            Q : 'quarter',
	            y : 'year',
	            DDD : 'dayOfYear',
	            e : 'weekday',
	            E : 'isoWeekday',
	            gg: 'weekYear',
	            GG: 'isoWeekYear'
	        },

	        camelFunctions = {
	            dayofyear : 'dayOfYear',
	            isoweekday : 'isoWeekday',
	            isoweek : 'isoWeek',
	            weekyear : 'weekYear',
	            isoweekyear : 'isoWeekYear'
	        },

	        // format function strings
	        formatFunctions = {},

	        // default relative time thresholds
	        relativeTimeThresholds = {
	            s: 45,  // seconds to minute
	            m: 45,  // minutes to hour
	            h: 22,  // hours to day
	            d: 26,  // days to month
	            M: 11   // months to year
	        },

	        // tokens to ordinalize and pad
	        ordinalizeTokens = 'DDD w W M D d'.split(' '),
	        paddedTokens = 'M D H h m s w W'.split(' '),

	        formatTokenFunctions = {
	            M    : function () {
	                return this.month() + 1;
	            },
	            MMM  : function (format) {
	                return this.localeData().monthsShort(this, format);
	            },
	            MMMM : function (format) {
	                return this.localeData().months(this, format);
	            },
	            D    : function () {
	                return this.date();
	            },
	            DDD  : function () {
	                return this.dayOfYear();
	            },
	            d    : function () {
	                return this.day();
	            },
	            dd   : function (format) {
	                return this.localeData().weekdaysMin(this, format);
	            },
	            ddd  : function (format) {
	                return this.localeData().weekdaysShort(this, format);
	            },
	            dddd : function (format) {
	                return this.localeData().weekdays(this, format);
	            },
	            w    : function () {
	                return this.week();
	            },
	            W    : function () {
	                return this.isoWeek();
	            },
	            YY   : function () {
	                return leftZeroFill(this.year() % 100, 2);
	            },
	            YYYY : function () {
	                return leftZeroFill(this.year(), 4);
	            },
	            YYYYY : function () {
	                return leftZeroFill(this.year(), 5);
	            },
	            YYYYYY : function () {
	                var y = this.year(), sign = y >= 0 ? '+' : '-';
	                return sign + leftZeroFill(Math.abs(y), 6);
	            },
	            gg   : function () {
	                return leftZeroFill(this.weekYear() % 100, 2);
	            },
	            gggg : function () {
	                return leftZeroFill(this.weekYear(), 4);
	            },
	            ggggg : function () {
	                return leftZeroFill(this.weekYear(), 5);
	            },
	            GG   : function () {
	                return leftZeroFill(this.isoWeekYear() % 100, 2);
	            },
	            GGGG : function () {
	                return leftZeroFill(this.isoWeekYear(), 4);
	            },
	            GGGGG : function () {
	                return leftZeroFill(this.isoWeekYear(), 5);
	            },
	            e : function () {
	                return this.weekday();
	            },
	            E : function () {
	                return this.isoWeekday();
	            },
	            a    : function () {
	                return this.localeData().meridiem(this.hours(), this.minutes(), true);
	            },
	            A    : function () {
	                return this.localeData().meridiem(this.hours(), this.minutes(), false);
	            },
	            H    : function () {
	                return this.hours();
	            },
	            h    : function () {
	                return this.hours() % 12 || 12;
	            },
	            m    : function () {
	                return this.minutes();
	            },
	            s    : function () {
	                return this.seconds();
	            },
	            S    : function () {
	                return toInt(this.milliseconds() / 100);
	            },
	            SS   : function () {
	                return leftZeroFill(toInt(this.milliseconds() / 10), 2);
	            },
	            SSS  : function () {
	                return leftZeroFill(this.milliseconds(), 3);
	            },
	            SSSS : function () {
	                return leftZeroFill(this.milliseconds(), 3);
	            },
	            Z    : function () {
	                var a = -this.zone(),
	                    b = '+';
	                if (a < 0) {
	                    a = -a;
	                    b = '-';
	                }
	                return b + leftZeroFill(toInt(a / 60), 2) + ':' + leftZeroFill(toInt(a) % 60, 2);
	            },
	            ZZ   : function () {
	                var a = -this.zone(),
	                    b = '+';
	                if (a < 0) {
	                    a = -a;
	                    b = '-';
	                }
	                return b + leftZeroFill(toInt(a / 60), 2) + leftZeroFill(toInt(a) % 60, 2);
	            },
	            z : function () {
	                return this.zoneAbbr();
	            },
	            zz : function () {
	                return this.zoneName();
	            },
	            X    : function () {
	                return this.unix();
	            },
	            Q : function () {
	                return this.quarter();
	            }
	        },

	        deprecations = {},

	        lists = ['months', 'monthsShort', 'weekdays', 'weekdaysShort', 'weekdaysMin'];

	    // Pick the first defined of two or three arguments. dfl comes from
	    // default.
	    function dfl(a, b, c) {
	        switch (arguments.length) {
	            case 2: return a != null ? a : b;
	            case 3: return a != null ? a : b != null ? b : c;
	            default: throw new Error('Implement me');
	        }
	    }

	    function hasOwnProp(a, b) {
	        return hasOwnProperty.call(a, b);
	    }

	    function defaultParsingFlags() {
	        // We need to deep clone this object, and es5 standard is not very
	        // helpful.
	        return {
	            empty : false,
	            unusedTokens : [],
	            unusedInput : [],
	            overflow : -2,
	            charsLeftOver : 0,
	            nullInput : false,
	            invalidMonth : null,
	            invalidFormat : false,
	            userInvalidated : false,
	            iso: false
	        };
	    }

	    function printMsg(msg) {
	        if (moment.suppressDeprecationWarnings === false &&
	                typeof console !== 'undefined' && console.warn) {
	            console.warn('Deprecation warning: ' + msg);
	        }
	    }

	    function deprecate(msg, fn) {
	        var firstTime = true;
	        return extend(function () {
	            if (firstTime) {
	                printMsg(msg);
	                firstTime = false;
	            }
	            return fn.apply(this, arguments);
	        }, fn);
	    }

	    function deprecateSimple(name, msg) {
	        if (!deprecations[name]) {
	            printMsg(msg);
	            deprecations[name] = true;
	        }
	    }

	    function padToken(func, count) {
	        return function (a) {
	            return leftZeroFill(func.call(this, a), count);
	        };
	    }
	    function ordinalizeToken(func, period) {
	        return function (a) {
	            return this.localeData().ordinal(func.call(this, a), period);
	        };
	    }

	    while (ordinalizeTokens.length) {
	        i = ordinalizeTokens.pop();
	        formatTokenFunctions[i + 'o'] = ordinalizeToken(formatTokenFunctions[i], i);
	    }
	    while (paddedTokens.length) {
	        i = paddedTokens.pop();
	        formatTokenFunctions[i + i] = padToken(formatTokenFunctions[i], 2);
	    }
	    formatTokenFunctions.DDDD = padToken(formatTokenFunctions.DDD, 3);


	    /************************************
	        Constructors
	    ************************************/

	    function Locale() {
	    }

	    // Moment prototype object
	    function Moment(config, skipOverflow) {
	        if (skipOverflow !== false) {
	            checkOverflow(config);
	        }
	        copyConfig(this, config);
	        this._d = new Date(+config._d);
	    }

	    // Duration Constructor
	    function Duration(duration) {
	        var normalizedInput = normalizeObjectUnits(duration),
	            years = normalizedInput.year || 0,
	            quarters = normalizedInput.quarter || 0,
	            months = normalizedInput.month || 0,
	            weeks = normalizedInput.week || 0,
	            days = normalizedInput.day || 0,
	            hours = normalizedInput.hour || 0,
	            minutes = normalizedInput.minute || 0,
	            seconds = normalizedInput.second || 0,
	            milliseconds = normalizedInput.millisecond || 0;

	        // representation for dateAddRemove
	        this._milliseconds = +milliseconds +
	            seconds * 1e3 + // 1000
	            minutes * 6e4 + // 1000 * 60
	            hours * 36e5; // 1000 * 60 * 60
	        // Because of dateAddRemove treats 24 hours as different from a
	        // day when working around DST, we need to store them separately
	        this._days = +days +
	            weeks * 7;
	        // It is impossible translate months into days without knowing
	        // which months you are are talking about, so we have to store
	        // it separately.
	        this._months = +months +
	            quarters * 3 +
	            years * 12;

	        this._data = {};

	        this._locale = moment.localeData();

	        this._bubble();
	    }

	    /************************************
	        Helpers
	    ************************************/


	    function extend(a, b) {
	        for (var i in b) {
	            if (hasOwnProp(b, i)) {
	                a[i] = b[i];
	            }
	        }

	        if (hasOwnProp(b, 'toString')) {
	            a.toString = b.toString;
	        }

	        if (hasOwnProp(b, 'valueOf')) {
	            a.valueOf = b.valueOf;
	        }

	        return a;
	    }

	    function copyConfig(to, from) {
	        var i, prop, val;

	        if (typeof from._isAMomentObject !== 'undefined') {
	            to._isAMomentObject = from._isAMomentObject;
	        }
	        if (typeof from._i !== 'undefined') {
	            to._i = from._i;
	        }
	        if (typeof from._f !== 'undefined') {
	            to._f = from._f;
	        }
	        if (typeof from._l !== 'undefined') {
	            to._l = from._l;
	        }
	        if (typeof from._strict !== 'undefined') {
	            to._strict = from._strict;
	        }
	        if (typeof from._tzm !== 'undefined') {
	            to._tzm = from._tzm;
	        }
	        if (typeof from._isUTC !== 'undefined') {
	            to._isUTC = from._isUTC;
	        }
	        if (typeof from._offset !== 'undefined') {
	            to._offset = from._offset;
	        }
	        if (typeof from._pf !== 'undefined') {
	            to._pf = from._pf;
	        }
	        if (typeof from._locale !== 'undefined') {
	            to._locale = from._locale;
	        }

	        if (momentProperties.length > 0) {
	            for (i in momentProperties) {
	                prop = momentProperties[i];
	                val = from[prop];
	                if (typeof val !== 'undefined') {
	                    to[prop] = val;
	                }
	            }
	        }

	        return to;
	    }

	    function absRound(number) {
	        if (number < 0) {
	            return Math.ceil(number);
	        } else {
	            return Math.floor(number);
	        }
	    }

	    // left zero fill a number
	    // see http://jsperf.com/left-zero-filling for performance comparison
	    function leftZeroFill(number, targetLength, forceSign) {
	        var output = '' + Math.abs(number),
	            sign = number >= 0;

	        while (output.length < targetLength) {
	            output = '0' + output;
	        }
	        return (sign ? (forceSign ? '+' : '') : '-') + output;
	    }

	    function positiveMomentsDifference(base, other) {
	        var res = {milliseconds: 0, months: 0};

	        res.months = other.month() - base.month() +
	            (other.year() - base.year()) * 12;
	        if (base.clone().add(res.months, 'M').isAfter(other)) {
	            --res.months;
	        }

	        res.milliseconds = +other - +(base.clone().add(res.months, 'M'));

	        return res;
	    }

	    function momentsDifference(base, other) {
	        var res;
	        other = makeAs(other, base);
	        if (base.isBefore(other)) {
	            res = positiveMomentsDifference(base, other);
	        } else {
	            res = positiveMomentsDifference(other, base);
	            res.milliseconds = -res.milliseconds;
	            res.months = -res.months;
	        }

	        return res;
	    }

	    // TODO: remove 'name' arg after deprecation is removed
	    function createAdder(direction, name) {
	        return function (val, period) {
	            var dur, tmp;
	            //invert the arguments, but complain about it
	            if (period !== null && !isNaN(+period)) {
	                deprecateSimple(name, 'moment().' + name  + '(period, number) is deprecated. Please use moment().' + name + '(number, period).');
	                tmp = val; val = period; period = tmp;
	            }

	            val = typeof val === 'string' ? +val : val;
	            dur = moment.duration(val, period);
	            addOrSubtractDurationFromMoment(this, dur, direction);
	            return this;
	        };
	    }

	    function addOrSubtractDurationFromMoment(mom, duration, isAdding, updateOffset) {
	        var milliseconds = duration._milliseconds,
	            days = duration._days,
	            months = duration._months;
	        updateOffset = updateOffset == null ? true : updateOffset;

	        if (milliseconds) {
	            mom._d.setTime(+mom._d + milliseconds * isAdding);
	        }
	        if (days) {
	            rawSetter(mom, 'Date', rawGetter(mom, 'Date') + days * isAdding);
	        }
	        if (months) {
	            rawMonthSetter(mom, rawGetter(mom, 'Month') + months * isAdding);
	        }
	        if (updateOffset) {
	            moment.updateOffset(mom, days || months);
	        }
	    }

	    // check if is an array
	    function isArray(input) {
	        return Object.prototype.toString.call(input) === '[object Array]';
	    }

	    function isDate(input) {
	        return Object.prototype.toString.call(input) === '[object Date]' ||
	            input instanceof Date;
	    }

	    // compare two arrays, return the number of differences
	    function compareArrays(array1, array2, dontConvert) {
	        var len = Math.min(array1.length, array2.length),
	            lengthDiff = Math.abs(array1.length - array2.length),
	            diffs = 0,
	            i;
	        for (i = 0; i < len; i++) {
	            if ((dontConvert && array1[i] !== array2[i]) ||
	                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
	                diffs++;
	            }
	        }
	        return diffs + lengthDiff;
	    }

	    function normalizeUnits(units) {
	        if (units) {
	            var lowered = units.toLowerCase().replace(/(.)s$/, '$1');
	            units = unitAliases[units] || camelFunctions[lowered] || lowered;
	        }
	        return units;
	    }

	    function normalizeObjectUnits(inputObject) {
	        var normalizedInput = {},
	            normalizedProp,
	            prop;

	        for (prop in inputObject) {
	            if (hasOwnProp(inputObject, prop)) {
	                normalizedProp = normalizeUnits(prop);
	                if (normalizedProp) {
	                    normalizedInput[normalizedProp] = inputObject[prop];
	                }
	            }
	        }

	        return normalizedInput;
	    }

	    function makeList(field) {
	        var count, setter;

	        if (field.indexOf('week') === 0) {
	            count = 7;
	            setter = 'day';
	        }
	        else if (field.indexOf('month') === 0) {
	            count = 12;
	            setter = 'month';
	        }
	        else {
	            return;
	        }

	        moment[field] = function (format, index) {
	            var i, getter,
	                method = moment._locale[field],
	                results = [];

	            if (typeof format === 'number') {
	                index = format;
	                format = undefined;
	            }

	            getter = function (i) {
	                var m = moment().utc().set(setter, i);
	                return method.call(moment._locale, m, format || '');
	            };

	            if (index != null) {
	                return getter(index);
	            }
	            else {
	                for (i = 0; i < count; i++) {
	                    results.push(getter(i));
	                }
	                return results;
	            }
	        };
	    }

	    function toInt(argumentForCoercion) {
	        var coercedNumber = +argumentForCoercion,
	            value = 0;

	        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
	            if (coercedNumber >= 0) {
	                value = Math.floor(coercedNumber);
	            } else {
	                value = Math.ceil(coercedNumber);
	            }
	        }

	        return value;
	    }

	    function daysInMonth(year, month) {
	        return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
	    }

	    function weeksInYear(year, dow, doy) {
	        return weekOfYear(moment([year, 11, 31 + dow - doy]), dow, doy).week;
	    }

	    function daysInYear(year) {
	        return isLeapYear(year) ? 366 : 365;
	    }

	    function isLeapYear(year) {
	        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
	    }

	    function checkOverflow(m) {
	        var overflow;
	        if (m._a && m._pf.overflow === -2) {
	            overflow =
	                m._a[MONTH] < 0 || m._a[MONTH] > 11 ? MONTH :
	                m._a[DATE] < 1 || m._a[DATE] > daysInMonth(m._a[YEAR], m._a[MONTH]) ? DATE :
	                m._a[HOUR] < 0 || m._a[HOUR] > 23 ? HOUR :
	                m._a[MINUTE] < 0 || m._a[MINUTE] > 59 ? MINUTE :
	                m._a[SECOND] < 0 || m._a[SECOND] > 59 ? SECOND :
	                m._a[MILLISECOND] < 0 || m._a[MILLISECOND] > 999 ? MILLISECOND :
	                -1;

	            if (m._pf._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
	                overflow = DATE;
	            }

	            m._pf.overflow = overflow;
	        }
	    }

	    function isValid(m) {
	        if (m._isValid == null) {
	            m._isValid = !isNaN(m._d.getTime()) &&
	                m._pf.overflow < 0 &&
	                !m._pf.empty &&
	                !m._pf.invalidMonth &&
	                !m._pf.nullInput &&
	                !m._pf.invalidFormat &&
	                !m._pf.userInvalidated;

	            if (m._strict) {
	                m._isValid = m._isValid &&
	                    m._pf.charsLeftOver === 0 &&
	                    m._pf.unusedTokens.length === 0;
	            }
	        }
	        return m._isValid;
	    }

	    function normalizeLocale(key) {
	        return key ? key.toLowerCase().replace('_', '-') : key;
	    }

	    // pick the locale from the array
	    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
	    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
	    function chooseLocale(names) {
	        var i = 0, j, next, locale, split;

	        while (i < names.length) {
	            split = normalizeLocale(names[i]).split('-');
	            j = split.length;
	            next = normalizeLocale(names[i + 1]);
	            next = next ? next.split('-') : null;
	            while (j > 0) {
	                locale = loadLocale(split.slice(0, j).join('-'));
	                if (locale) {
	                    return locale;
	                }
	                if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
	                    //the next array item is better than a shallower substring of this one
	                    break;
	                }
	                j--;
	            }
	            i++;
	        }
	        return null;
	    }

	    function loadLocale(name) {
	        var oldLocale = null;
	        if (!locales[name] && hasModule) {
	            try {
	                oldLocale = moment.locale();
	                __webpack_require__(267)("./" + name);
	                // because defineLocale currently also sets the global locale, we want to undo that for lazy loaded locales
	                moment.locale(oldLocale);
	            } catch (e) { }
	        }
	        return locales[name];
	    }

	    // Return a moment from input, that is local/utc/zone equivalent to model.
	    function makeAs(input, model) {
	        return model._isUTC ? moment(input).zone(model._offset || 0) :
	            moment(input).local();
	    }

	    /************************************
	        Locale
	    ************************************/


	    extend(Locale.prototype, {

	        set : function (config) {
	            var prop, i;
	            for (i in config) {
	                prop = config[i];
	                if (typeof prop === 'function') {
	                    this[i] = prop;
	                } else {
	                    this['_' + i] = prop;
	                }
	            }
	        },

	        _months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
	        months : function (m) {
	            return this._months[m.month()];
	        },

	        _monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
	        monthsShort : function (m) {
	            return this._monthsShort[m.month()];
	        },

	        monthsParse : function (monthName) {
	            var i, mom, regex;

	            if (!this._monthsParse) {
	                this._monthsParse = [];
	            }

	            for (i = 0; i < 12; i++) {
	                // make the regex if we don't have it already
	                if (!this._monthsParse[i]) {
	                    mom = moment.utc([2000, i]);
	                    regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
	                    this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
	                }
	                // test the regex
	                if (this._monthsParse[i].test(monthName)) {
	                    return i;
	                }
	            }
	        },

	        _weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
	        weekdays : function (m) {
	            return this._weekdays[m.day()];
	        },

	        _weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
	        weekdaysShort : function (m) {
	            return this._weekdaysShort[m.day()];
	        },

	        _weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
	        weekdaysMin : function (m) {
	            return this._weekdaysMin[m.day()];
	        },

	        weekdaysParse : function (weekdayName) {
	            var i, mom, regex;

	            if (!this._weekdaysParse) {
	                this._weekdaysParse = [];
	            }

	            for (i = 0; i < 7; i++) {
	                // make the regex if we don't have it already
	                if (!this._weekdaysParse[i]) {
	                    mom = moment([2000, 1]).day(i);
	                    regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
	                    this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
	                }
	                // test the regex
	                if (this._weekdaysParse[i].test(weekdayName)) {
	                    return i;
	                }
	            }
	        },

	        _longDateFormat : {
	            LT : 'h:mm A',
	            L : 'MM/DD/YYYY',
	            LL : 'MMMM D, YYYY',
	            LLL : 'MMMM D, YYYY LT',
	            LLLL : 'dddd, MMMM D, YYYY LT'
	        },
	        longDateFormat : function (key) {
	            var output = this._longDateFormat[key];
	            if (!output && this._longDateFormat[key.toUpperCase()]) {
	                output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function (val) {
	                    return val.slice(1);
	                });
	                this._longDateFormat[key] = output;
	            }
	            return output;
	        },

	        isPM : function (input) {
	            // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
	            // Using charAt should be more compatible.
	            return ((input + '').toLowerCase().charAt(0) === 'p');
	        },

	        _meridiemParse : /[ap]\.?m?\.?/i,
	        meridiem : function (hours, minutes, isLower) {
	            if (hours > 11) {
	                return isLower ? 'pm' : 'PM';
	            } else {
	                return isLower ? 'am' : 'AM';
	            }
	        },

	        _calendar : {
	            sameDay : '[Today at] LT',
	            nextDay : '[Tomorrow at] LT',
	            nextWeek : 'dddd [at] LT',
	            lastDay : '[Yesterday at] LT',
	            lastWeek : '[Last] dddd [at] LT',
	            sameElse : 'L'
	        },
	        calendar : function (key, mom) {
	            var output = this._calendar[key];
	            return typeof output === 'function' ? output.apply(mom) : output;
	        },

	        _relativeTime : {
	            future : 'in %s',
	            past : '%s ago',
	            s : 'a few seconds',
	            m : 'a minute',
	            mm : '%d minutes',
	            h : 'an hour',
	            hh : '%d hours',
	            d : 'a day',
	            dd : '%d days',
	            M : 'a month',
	            MM : '%d months',
	            y : 'a year',
	            yy : '%d years'
	        },

	        relativeTime : function (number, withoutSuffix, string, isFuture) {
	            var output = this._relativeTime[string];
	            return (typeof output === 'function') ?
	                output(number, withoutSuffix, string, isFuture) :
	                output.replace(/%d/i, number);
	        },

	        pastFuture : function (diff, output) {
	            var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
	            return typeof format === 'function' ? format(output) : format.replace(/%s/i, output);
	        },

	        ordinal : function (number) {
	            return this._ordinal.replace('%d', number);
	        },
	        _ordinal : '%d',

	        preparse : function (string) {
	            return string;
	        },

	        postformat : function (string) {
	            return string;
	        },

	        week : function (mom) {
	            return weekOfYear(mom, this._week.dow, this._week.doy).week;
	        },

	        _week : {
	            dow : 0, // Sunday is the first day of the week.
	            doy : 6  // The week that contains Jan 1st is the first week of the year.
	        },

	        _invalidDate: 'Invalid date',
	        invalidDate: function () {
	            return this._invalidDate;
	        }
	    });

	    /************************************
	        Formatting
	    ************************************/


	    function removeFormattingTokens(input) {
	        if (input.match(/\[[\s\S]/)) {
	            return input.replace(/^\[|\]$/g, '');
	        }
	        return input.replace(/\\/g, '');
	    }

	    function makeFormatFunction(format) {
	        var array = format.match(formattingTokens), i, length;

	        for (i = 0, length = array.length; i < length; i++) {
	            if (formatTokenFunctions[array[i]]) {
	                array[i] = formatTokenFunctions[array[i]];
	            } else {
	                array[i] = removeFormattingTokens(array[i]);
	            }
	        }

	        return function (mom) {
	            var output = '';
	            for (i = 0; i < length; i++) {
	                output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
	            }
	            return output;
	        };
	    }

	    // format date using native date object
	    function formatMoment(m, format) {
	        if (!m.isValid()) {
	            return m.localeData().invalidDate();
	        }

	        format = expandFormat(format, m.localeData());

	        if (!formatFunctions[format]) {
	            formatFunctions[format] = makeFormatFunction(format);
	        }

	        return formatFunctions[format](m);
	    }

	    function expandFormat(format, locale) {
	        var i = 5;

	        function replaceLongDateFormatTokens(input) {
	            return locale.longDateFormat(input) || input;
	        }

	        localFormattingTokens.lastIndex = 0;
	        while (i >= 0 && localFormattingTokens.test(format)) {
	            format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
	            localFormattingTokens.lastIndex = 0;
	            i -= 1;
	        }

	        return format;
	    }


	    /************************************
	        Parsing
	    ************************************/


	    // get the regex to find the next token
	    function getParseRegexForToken(token, config) {
	        var a, strict = config._strict;
	        switch (token) {
	        case 'Q':
	            return parseTokenOneDigit;
	        case 'DDDD':
	            return parseTokenThreeDigits;
	        case 'YYYY':
	        case 'GGGG':
	        case 'gggg':
	            return strict ? parseTokenFourDigits : parseTokenOneToFourDigits;
	        case 'Y':
	        case 'G':
	        case 'g':
	            return parseTokenSignedNumber;
	        case 'YYYYYY':
	        case 'YYYYY':
	        case 'GGGGG':
	        case 'ggggg':
	            return strict ? parseTokenSixDigits : parseTokenOneToSixDigits;
	        case 'S':
	            if (strict) {
	                return parseTokenOneDigit;
	            }
	            /* falls through */
	        case 'SS':
	            if (strict) {
	                return parseTokenTwoDigits;
	            }
	            /* falls through */
	        case 'SSS':
	            if (strict) {
	                return parseTokenThreeDigits;
	            }
	            /* falls through */
	        case 'DDD':
	            return parseTokenOneToThreeDigits;
	        case 'MMM':
	        case 'MMMM':
	        case 'dd':
	        case 'ddd':
	        case 'dddd':
	            return parseTokenWord;
	        case 'a':
	        case 'A':
	            return config._locale._meridiemParse;
	        case 'X':
	            return parseTokenTimestampMs;
	        case 'Z':
	        case 'ZZ':
	            return parseTokenTimezone;
	        case 'T':
	            return parseTokenT;
	        case 'SSSS':
	            return parseTokenDigits;
	        case 'MM':
	        case 'DD':
	        case 'YY':
	        case 'GG':
	        case 'gg':
	        case 'HH':
	        case 'hh':
	        case 'mm':
	        case 'ss':
	        case 'ww':
	        case 'WW':
	            return strict ? parseTokenTwoDigits : parseTokenOneOrTwoDigits;
	        case 'M':
	        case 'D':
	        case 'd':
	        case 'H':
	        case 'h':
	        case 'm':
	        case 's':
	        case 'w':
	        case 'W':
	        case 'e':
	        case 'E':
	            return parseTokenOneOrTwoDigits;
	        case 'Do':
	            return parseTokenOrdinal;
	        default :
	            a = new RegExp(regexpEscape(unescapeFormat(token.replace('\\', '')), 'i'));
	            return a;
	        }
	    }

	    function timezoneMinutesFromString(string) {
	        string = string || '';
	        var possibleTzMatches = (string.match(parseTokenTimezone) || []),
	            tzChunk = possibleTzMatches[possibleTzMatches.length - 1] || [],
	            parts = (tzChunk + '').match(parseTimezoneChunker) || ['-', 0, 0],
	            minutes = +(parts[1] * 60) + toInt(parts[2]);

	        return parts[0] === '+' ? -minutes : minutes;
	    }

	    // function to convert string input to date
	    function addTimeToArrayFromToken(token, input, config) {
	        var a, datePartArray = config._a;

	        switch (token) {
	        // QUARTER
	        case 'Q':
	            if (input != null) {
	                datePartArray[MONTH] = (toInt(input) - 1) * 3;
	            }
	            break;
	        // MONTH
	        case 'M' : // fall through to MM
	        case 'MM' :
	            if (input != null) {
	                datePartArray[MONTH] = toInt(input) - 1;
	            }
	            break;
	        case 'MMM' : // fall through to MMMM
	        case 'MMMM' :
	            a = config._locale.monthsParse(input);
	            // if we didn't find a month name, mark the date as invalid.
	            if (a != null) {
	                datePartArray[MONTH] = a;
	            } else {
	                config._pf.invalidMonth = input;
	            }
	            break;
	        // DAY OF MONTH
	        case 'D' : // fall through to DD
	        case 'DD' :
	            if (input != null) {
	                datePartArray[DATE] = toInt(input);
	            }
	            break;
	        case 'Do' :
	            if (input != null) {
	                datePartArray[DATE] = toInt(parseInt(input, 10));
	            }
	            break;
	        // DAY OF YEAR
	        case 'DDD' : // fall through to DDDD
	        case 'DDDD' :
	            if (input != null) {
	                config._dayOfYear = toInt(input);
	            }

	            break;
	        // YEAR
	        case 'YY' :
	            datePartArray[YEAR] = moment.parseTwoDigitYear(input);
	            break;
	        case 'YYYY' :
	        case 'YYYYY' :
	        case 'YYYYYY' :
	            datePartArray[YEAR] = toInt(input);
	            break;
	        // AM / PM
	        case 'a' : // fall through to A
	        case 'A' :
	            config._isPm = config._locale.isPM(input);
	            break;
	        // 24 HOUR
	        case 'H' : // fall through to hh
	        case 'HH' : // fall through to hh
	        case 'h' : // fall through to hh
	        case 'hh' :
	            datePartArray[HOUR] = toInt(input);
	            break;
	        // MINUTE
	        case 'm' : // fall through to mm
	        case 'mm' :
	            datePartArray[MINUTE] = toInt(input);
	            break;
	        // SECOND
	        case 's' : // fall through to ss
	        case 'ss' :
	            datePartArray[SECOND] = toInt(input);
	            break;
	        // MILLISECOND
	        case 'S' :
	        case 'SS' :
	        case 'SSS' :
	        case 'SSSS' :
	            datePartArray[MILLISECOND] = toInt(('0.' + input) * 1000);
	            break;
	        // UNIX TIMESTAMP WITH MS
	        case 'X':
	            config._d = new Date(parseFloat(input) * 1000);
	            break;
	        // TIMEZONE
	        case 'Z' : // fall through to ZZ
	        case 'ZZ' :
	            config._useUTC = true;
	            config._tzm = timezoneMinutesFromString(input);
	            break;
	        // WEEKDAY - human
	        case 'dd':
	        case 'ddd':
	        case 'dddd':
	            a = config._locale.weekdaysParse(input);
	            // if we didn't get a weekday name, mark the date as invalid
	            if (a != null) {
	                config._w = config._w || {};
	                config._w['d'] = a;
	            } else {
	                config._pf.invalidWeekday = input;
	            }
	            break;
	        // WEEK, WEEK DAY - numeric
	        case 'w':
	        case 'ww':
	        case 'W':
	        case 'WW':
	        case 'd':
	        case 'e':
	        case 'E':
	            token = token.substr(0, 1);
	            /* falls through */
	        case 'gggg':
	        case 'GGGG':
	        case 'GGGGG':
	            token = token.substr(0, 2);
	            if (input) {
	                config._w = config._w || {};
	                config._w[token] = toInt(input);
	            }
	            break;
	        case 'gg':
	        case 'GG':
	            config._w = config._w || {};
	            config._w[token] = moment.parseTwoDigitYear(input);
	        }
	    }

	    function dayOfYearFromWeekInfo(config) {
	        var w, weekYear, week, weekday, dow, doy, temp;

	        w = config._w;
	        if (w.GG != null || w.W != null || w.E != null) {
	            dow = 1;
	            doy = 4;

	            // TODO: We need to take the current isoWeekYear, but that depends on
	            // how we interpret now (local, utc, fixed offset). So create
	            // a now version of current config (take local/utc/offset flags, and
	            // create now).
	            weekYear = dfl(w.GG, config._a[YEAR], weekOfYear(moment(), 1, 4).year);
	            week = dfl(w.W, 1);
	            weekday = dfl(w.E, 1);
	        } else {
	            dow = config._locale._week.dow;
	            doy = config._locale._week.doy;

	            weekYear = dfl(w.gg, config._a[YEAR], weekOfYear(moment(), dow, doy).year);
	            week = dfl(w.w, 1);

	            if (w.d != null) {
	                // weekday -- low day numbers are considered next week
	                weekday = w.d;
	                if (weekday < dow) {
	                    ++week;
	                }
	            } else if (w.e != null) {
	                // local weekday -- counting starts from begining of week
	                weekday = w.e + dow;
	            } else {
	                // default to begining of week
	                weekday = dow;
	            }
	        }
	        temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);

	        config._a[YEAR] = temp.year;
	        config._dayOfYear = temp.dayOfYear;
	    }

	    // convert an array to a date.
	    // the array should mirror the parameters below
	    // note: all values past the year are optional and will default to the lowest possible value.
	    // [year, month, day , hour, minute, second, millisecond]
	    function dateFromConfig(config) {
	        var i, date, input = [], currentDate, yearToUse;

	        if (config._d) {
	            return;
	        }

	        currentDate = currentDateArray(config);

	        //compute day of the year from weeks and weekdays
	        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
	            dayOfYearFromWeekInfo(config);
	        }

	        //if the day of the year is set, figure out what it is
	        if (config._dayOfYear) {
	            yearToUse = dfl(config._a[YEAR], currentDate[YEAR]);

	            if (config._dayOfYear > daysInYear(yearToUse)) {
	                config._pf._overflowDayOfYear = true;
	            }

	            date = makeUTCDate(yearToUse, 0, config._dayOfYear);
	            config._a[MONTH] = date.getUTCMonth();
	            config._a[DATE] = date.getUTCDate();
	        }

	        // Default to current date.
	        // * if no year, month, day of month are given, default to today
	        // * if day of month is given, default month and year
	        // * if month is given, default only year
	        // * if year is given, don't default anything
	        for (i = 0; i < 3 && config._a[i] == null; ++i) {
	            config._a[i] = input[i] = currentDate[i];
	        }

	        // Zero out whatever was not defaulted, including time
	        for (; i < 7; i++) {
	            config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
	        }

	        config._d = (config._useUTC ? makeUTCDate : makeDate).apply(null, input);
	        // Apply timezone offset from input. The actual zone can be changed
	        // with parseZone.
	        if (config._tzm != null) {
	            config._d.setUTCMinutes(config._d.getUTCMinutes() + config._tzm);
	        }
	    }

	    function dateFromObject(config) {
	        var normalizedInput;

	        if (config._d) {
	            return;
	        }

	        normalizedInput = normalizeObjectUnits(config._i);
	        config._a = [
	            normalizedInput.year,
	            normalizedInput.month,
	            normalizedInput.day,
	            normalizedInput.hour,
	            normalizedInput.minute,
	            normalizedInput.second,
	            normalizedInput.millisecond
	        ];

	        dateFromConfig(config);
	    }

	    function currentDateArray(config) {
	        var now = new Date();
	        if (config._useUTC) {
	            return [
	                now.getUTCFullYear(),
	                now.getUTCMonth(),
	                now.getUTCDate()
	            ];
	        } else {
	            return [now.getFullYear(), now.getMonth(), now.getDate()];
	        }
	    }

	    // date from string and format string
	    function makeDateFromStringAndFormat(config) {
	        if (config._f === moment.ISO_8601) {
	            parseISO(config);
	            return;
	        }

	        config._a = [];
	        config._pf.empty = true;

	        // This array is used to make a Date, either with `new Date` or `Date.UTC`
	        var string = '' + config._i,
	            i, parsedInput, tokens, token, skipped,
	            stringLength = string.length,
	            totalParsedInputLength = 0;

	        tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];

	        for (i = 0; i < tokens.length; i++) {
	            token = tokens[i];
	            parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
	            if (parsedInput) {
	                skipped = string.substr(0, string.indexOf(parsedInput));
	                if (skipped.length > 0) {
	                    config._pf.unusedInput.push(skipped);
	                }
	                string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
	                totalParsedInputLength += parsedInput.length;
	            }
	            // don't parse if it's not a known token
	            if (formatTokenFunctions[token]) {
	                if (parsedInput) {
	                    config._pf.empty = false;
	                }
	                else {
	                    config._pf.unusedTokens.push(token);
	                }
	                addTimeToArrayFromToken(token, parsedInput, config);
	            }
	            else if (config._strict && !parsedInput) {
	                config._pf.unusedTokens.push(token);
	            }
	        }

	        // add remaining unparsed input length to the string
	        config._pf.charsLeftOver = stringLength - totalParsedInputLength;
	        if (string.length > 0) {
	            config._pf.unusedInput.push(string);
	        }

	        // handle am pm
	        if (config._isPm && config._a[HOUR] < 12) {
	            config._a[HOUR] += 12;
	        }
	        // if is 12 am, change hours to 0
	        if (config._isPm === false && config._a[HOUR] === 12) {
	            config._a[HOUR] = 0;
	        }

	        dateFromConfig(config);
	        checkOverflow(config);
	    }

	    function unescapeFormat(s) {
	        return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
	            return p1 || p2 || p3 || p4;
	        });
	    }

	    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
	    function regexpEscape(s) {
	        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
	    }

	    // date from string and array of format strings
	    function makeDateFromStringAndArray(config) {
	        var tempConfig,
	            bestMoment,

	            scoreToBeat,
	            i,
	            currentScore;

	        if (config._f.length === 0) {
	            config._pf.invalidFormat = true;
	            config._d = new Date(NaN);
	            return;
	        }

	        for (i = 0; i < config._f.length; i++) {
	            currentScore = 0;
	            tempConfig = copyConfig({}, config);
	            if (config._useUTC != null) {
	                tempConfig._useUTC = config._useUTC;
	            }
	            tempConfig._pf = defaultParsingFlags();
	            tempConfig._f = config._f[i];
	            makeDateFromStringAndFormat(tempConfig);

	            if (!isValid(tempConfig)) {
	                continue;
	            }

	            // if there is any input that was not parsed add a penalty for that format
	            currentScore += tempConfig._pf.charsLeftOver;

	            //or tokens
	            currentScore += tempConfig._pf.unusedTokens.length * 10;

	            tempConfig._pf.score = currentScore;

	            if (scoreToBeat == null || currentScore < scoreToBeat) {
	                scoreToBeat = currentScore;
	                bestMoment = tempConfig;
	            }
	        }

	        extend(config, bestMoment || tempConfig);
	    }

	    // date from iso format
	    function parseISO(config) {
	        var i, l,
	            string = config._i,
	            match = isoRegex.exec(string);

	        if (match) {
	            config._pf.iso = true;
	            for (i = 0, l = isoDates.length; i < l; i++) {
	                if (isoDates[i][1].exec(string)) {
	                    // match[5] should be 'T' or undefined
	                    config._f = isoDates[i][0] + (match[6] || ' ');
	                    break;
	                }
	            }
	            for (i = 0, l = isoTimes.length; i < l; i++) {
	                if (isoTimes[i][1].exec(string)) {
	                    config._f += isoTimes[i][0];
	                    break;
	                }
	            }
	            if (string.match(parseTokenTimezone)) {
	                config._f += 'Z';
	            }
	            makeDateFromStringAndFormat(config);
	        } else {
	            config._isValid = false;
	        }
	    }

	    // date from iso format or fallback
	    function makeDateFromString(config) {
	        parseISO(config);
	        if (config._isValid === false) {
	            delete config._isValid;
	            moment.createFromInputFallback(config);
	        }
	    }

	    function map(arr, fn) {
	        var res = [], i;
	        for (i = 0; i < arr.length; ++i) {
	            res.push(fn(arr[i], i));
	        }
	        return res;
	    }

	    function makeDateFromInput(config) {
	        var input = config._i, matched;
	        if (input === undefined) {
	            config._d = new Date();
	        } else if (isDate(input)) {
	            config._d = new Date(+input);
	        } else if ((matched = aspNetJsonRegex.exec(input)) !== null) {
	            config._d = new Date(+matched[1]);
	        } else if (typeof input === 'string') {
	            makeDateFromString(config);
	        } else if (isArray(input)) {
	            config._a = map(input.slice(0), function (obj) {
	                return parseInt(obj, 10);
	            });
	            dateFromConfig(config);
	        } else if (typeof(input) === 'object') {
	            dateFromObject(config);
	        } else if (typeof(input) === 'number') {
	            // from milliseconds
	            config._d = new Date(input);
	        } else {
	            moment.createFromInputFallback(config);
	        }
	    }

	    function makeDate(y, m, d, h, M, s, ms) {
	        //can't just apply() to create a date:
	        //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
	        var date = new Date(y, m, d, h, M, s, ms);

	        //the date constructor doesn't accept years < 1970
	        if (y < 1970) {
	            date.setFullYear(y);
	        }
	        return date;
	    }

	    function makeUTCDate(y) {
	        var date = new Date(Date.UTC.apply(null, arguments));
	        if (y < 1970) {
	            date.setUTCFullYear(y);
	        }
	        return date;
	    }

	    function parseWeekday(input, locale) {
	        if (typeof input === 'string') {
	            if (!isNaN(input)) {
	                input = parseInt(input, 10);
	            }
	            else {
	                input = locale.weekdaysParse(input);
	                if (typeof input !== 'number') {
	                    return null;
	                }
	            }
	        }
	        return input;
	    }

	    /************************************
	        Relative Time
	    ************************************/


	    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
	    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
	        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
	    }

	    function relativeTime(posNegDuration, withoutSuffix, locale) {
	        var duration = moment.duration(posNegDuration).abs(),
	            seconds = round(duration.as('s')),
	            minutes = round(duration.as('m')),
	            hours = round(duration.as('h')),
	            days = round(duration.as('d')),
	            months = round(duration.as('M')),
	            years = round(duration.as('y')),

	            args = seconds < relativeTimeThresholds.s && ['s', seconds] ||
	                minutes === 1 && ['m'] ||
	                minutes < relativeTimeThresholds.m && ['mm', minutes] ||
	                hours === 1 && ['h'] ||
	                hours < relativeTimeThresholds.h && ['hh', hours] ||
	                days === 1 && ['d'] ||
	                days < relativeTimeThresholds.d && ['dd', days] ||
	                months === 1 && ['M'] ||
	                months < relativeTimeThresholds.M && ['MM', months] ||
	                years === 1 && ['y'] || ['yy', years];

	        args[2] = withoutSuffix;
	        args[3] = +posNegDuration > 0;
	        args[4] = locale;
	        return substituteTimeAgo.apply({}, args);
	    }


	    /************************************
	        Week of Year
	    ************************************/


	    // firstDayOfWeek       0 = sun, 6 = sat
	    //                      the day of the week that starts the week
	    //                      (usually sunday or monday)
	    // firstDayOfWeekOfYear 0 = sun, 6 = sat
	    //                      the first week is the week that contains the first
	    //                      of this day of the week
	    //                      (eg. ISO weeks use thursday (4))
	    function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
	        var end = firstDayOfWeekOfYear - firstDayOfWeek,
	            daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),
	            adjustedMoment;


	        if (daysToDayOfWeek > end) {
	            daysToDayOfWeek -= 7;
	        }

	        if (daysToDayOfWeek < end - 7) {
	            daysToDayOfWeek += 7;
	        }

	        adjustedMoment = moment(mom).add(daysToDayOfWeek, 'd');
	        return {
	            week: Math.ceil(adjustedMoment.dayOfYear() / 7),
	            year: adjustedMoment.year()
	        };
	    }

	    //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
	    function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
	        var d = makeUTCDate(year, 0, 1).getUTCDay(), daysToAdd, dayOfYear;

	        d = d === 0 ? 7 : d;
	        weekday = weekday != null ? weekday : firstDayOfWeek;
	        daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (d < firstDayOfWeek ? 7 : 0);
	        dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1;

	        return {
	            year: dayOfYear > 0 ? year : year - 1,
	            dayOfYear: dayOfYear > 0 ?  dayOfYear : daysInYear(year - 1) + dayOfYear
	        };
	    }

	    /************************************
	        Top Level Functions
	    ************************************/

	    function makeMoment(config) {
	        var input = config._i,
	            format = config._f;

	        config._locale = config._locale || moment.localeData(config._l);

	        if (input === null || (format === undefined && input === '')) {
	            return moment.invalid({nullInput: true});
	        }

	        if (typeof input === 'string') {
	            config._i = input = config._locale.preparse(input);
	        }

	        if (moment.isMoment(input)) {
	            return new Moment(input, true);
	        } else if (format) {
	            if (isArray(format)) {
	                makeDateFromStringAndArray(config);
	            } else {
	                makeDateFromStringAndFormat(config);
	            }
	        } else {
	            makeDateFromInput(config);
	        }

	        return new Moment(config);
	    }

	    moment = function (input, format, locale, strict) {
	        var c;

	        if (typeof(locale) === 'boolean') {
	            strict = locale;
	            locale = undefined;
	        }
	        // object construction must be done this way.
	        // https://github.com/moment/moment/issues/1423
	        c = {};
	        c._isAMomentObject = true;
	        c._i = input;
	        c._f = format;
	        c._l = locale;
	        c._strict = strict;
	        c._isUTC = false;
	        c._pf = defaultParsingFlags();

	        return makeMoment(c);
	    };

	    moment.suppressDeprecationWarnings = false;

	    moment.createFromInputFallback = deprecate(
	        'moment construction falls back to js Date. This is ' +
	        'discouraged and will be removed in upcoming major ' +
	        'release. Please refer to ' +
	        'https://github.com/moment/moment/issues/1407 for more info.',
	        function (config) {
	            config._d = new Date(config._i);
	        }
	    );

	    // Pick a moment m from moments so that m[fn](other) is true for all
	    // other. This relies on the function fn to be transitive.
	    //
	    // moments should either be an array of moment objects or an array, whose
	    // first element is an array of moment objects.
	    function pickBy(fn, moments) {
	        var res, i;
	        if (moments.length === 1 && isArray(moments[0])) {
	            moments = moments[0];
	        }
	        if (!moments.length) {
	            return moment();
	        }
	        res = moments[0];
	        for (i = 1; i < moments.length; ++i) {
	            if (moments[i][fn](res)) {
	                res = moments[i];
	            }
	        }
	        return res;
	    }

	    moment.min = function () {
	        var args = [].slice.call(arguments, 0);

	        return pickBy('isBefore', args);
	    };

	    moment.max = function () {
	        var args = [].slice.call(arguments, 0);

	        return pickBy('isAfter', args);
	    };

	    // creating with utc
	    moment.utc = function (input, format, locale, strict) {
	        var c;

	        if (typeof(locale) === 'boolean') {
	            strict = locale;
	            locale = undefined;
	        }
	        // object construction must be done this way.
	        // https://github.com/moment/moment/issues/1423
	        c = {};
	        c._isAMomentObject = true;
	        c._useUTC = true;
	        c._isUTC = true;
	        c._l = locale;
	        c._i = input;
	        c._f = format;
	        c._strict = strict;
	        c._pf = defaultParsingFlags();

	        return makeMoment(c).utc();
	    };

	    // creating with unix timestamp (in seconds)
	    moment.unix = function (input) {
	        return moment(input * 1000);
	    };

	    // duration
	    moment.duration = function (input, key) {
	        var duration = input,
	            // matching against regexp is expensive, do it on demand
	            match = null,
	            sign,
	            ret,
	            parseIso,
	            diffRes;

	        if (moment.isDuration(input)) {
	            duration = {
	                ms: input._milliseconds,
	                d: input._days,
	                M: input._months
	            };
	        } else if (typeof input === 'number') {
	            duration = {};
	            if (key) {
	                duration[key] = input;
	            } else {
	                duration.milliseconds = input;
	            }
	        } else if (!!(match = aspNetTimeSpanJsonRegex.exec(input))) {
	            sign = (match[1] === '-') ? -1 : 1;
	            duration = {
	                y: 0,
	                d: toInt(match[DATE]) * sign,
	                h: toInt(match[HOUR]) * sign,
	                m: toInt(match[MINUTE]) * sign,
	                s: toInt(match[SECOND]) * sign,
	                ms: toInt(match[MILLISECOND]) * sign
	            };
	        } else if (!!(match = isoDurationRegex.exec(input))) {
	            sign = (match[1] === '-') ? -1 : 1;
	            parseIso = function (inp) {
	                // We'd normally use ~~inp for this, but unfortunately it also
	                // converts floats to ints.
	                // inp may be undefined, so careful calling replace on it.
	                var res = inp && parseFloat(inp.replace(',', '.'));
	                // apply sign while we're at it
	                return (isNaN(res) ? 0 : res) * sign;
	            };
	            duration = {
	                y: parseIso(match[2]),
	                M: parseIso(match[3]),
	                d: parseIso(match[4]),
	                h: parseIso(match[5]),
	                m: parseIso(match[6]),
	                s: parseIso(match[7]),
	                w: parseIso(match[8])
	            };
	        } else if (typeof duration === 'object' &&
	                ('from' in duration || 'to' in duration)) {
	            diffRes = momentsDifference(moment(duration.from), moment(duration.to));

	            duration = {};
	            duration.ms = diffRes.milliseconds;
	            duration.M = diffRes.months;
	        }

	        ret = new Duration(duration);

	        if (moment.isDuration(input) && hasOwnProp(input, '_locale')) {
	            ret._locale = input._locale;
	        }

	        return ret;
	    };

	    // version number
	    moment.version = VERSION;

	    // default format
	    moment.defaultFormat = isoFormat;

	    // constant that refers to the ISO standard
	    moment.ISO_8601 = function () {};

	    // Plugins that add properties should also add the key here (null value),
	    // so we can properly clone ourselves.
	    moment.momentProperties = momentProperties;

	    // This function will be called whenever a moment is mutated.
	    // It is intended to keep the offset in sync with the timezone.
	    moment.updateOffset = function () {};

	    // This function allows you to set a threshold for relative time strings
	    moment.relativeTimeThreshold = function (threshold, limit) {
	        if (relativeTimeThresholds[threshold] === undefined) {
	            return false;
	        }
	        if (limit === undefined) {
	            return relativeTimeThresholds[threshold];
	        }
	        relativeTimeThresholds[threshold] = limit;
	        return true;
	    };

	    moment.lang = deprecate(
	        'moment.lang is deprecated. Use moment.locale instead.',
	        function (key, value) {
	            return moment.locale(key, value);
	        }
	    );

	    // This function will load locale and then set the global locale.  If
	    // no arguments are passed in, it will simply return the current global
	    // locale key.
	    moment.locale = function (key, values) {
	        var data;
	        if (key) {
	            if (typeof(values) !== 'undefined') {
	                data = moment.defineLocale(key, values);
	            }
	            else {
	                data = moment.localeData(key);
	            }

	            if (data) {
	                moment.duration._locale = moment._locale = data;
	            }
	        }

	        return moment._locale._abbr;
	    };

	    moment.defineLocale = function (name, values) {
	        if (values !== null) {
	            values.abbr = name;
	            if (!locales[name]) {
	                locales[name] = new Locale();
	            }
	            locales[name].set(values);

	            // backwards compat for now: also set the locale
	            moment.locale(name);

	            return locales[name];
	        } else {
	            // useful for testing
	            delete locales[name];
	            return null;
	        }
	    };

	    moment.langData = deprecate(
	        'moment.langData is deprecated. Use moment.localeData instead.',
	        function (key) {
	            return moment.localeData(key);
	        }
	    );

	    // returns locale data
	    moment.localeData = function (key) {
	        var locale;

	        if (key && key._locale && key._locale._abbr) {
	            key = key._locale._abbr;
	        }

	        if (!key) {
	            return moment._locale;
	        }

	        if (!isArray(key)) {
	            //short-circuit everything else
	            locale = loadLocale(key);
	            if (locale) {
	                return locale;
	            }
	            key = [key];
	        }

	        return chooseLocale(key);
	    };

	    // compare moment object
	    moment.isMoment = function (obj) {
	        return obj instanceof Moment ||
	            (obj != null && hasOwnProp(obj, '_isAMomentObject'));
	    };

	    // for typechecking Duration objects
	    moment.isDuration = function (obj) {
	        return obj instanceof Duration;
	    };

	    for (i = lists.length - 1; i >= 0; --i) {
	        makeList(lists[i]);
	    }

	    moment.normalizeUnits = function (units) {
	        return normalizeUnits(units);
	    };

	    moment.invalid = function (flags) {
	        var m = moment.utc(NaN);
	        if (flags != null) {
	            extend(m._pf, flags);
	        }
	        else {
	            m._pf.userInvalidated = true;
	        }

	        return m;
	    };

	    moment.parseZone = function () {
	        return moment.apply(null, arguments).parseZone();
	    };

	    moment.parseTwoDigitYear = function (input) {
	        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
	    };

	    /************************************
	        Moment Prototype
	    ************************************/


	    extend(moment.fn = Moment.prototype, {

	        clone : function () {
	            return moment(this);
	        },

	        valueOf : function () {
	            return +this._d + ((this._offset || 0) * 60000);
	        },

	        unix : function () {
	            return Math.floor(+this / 1000);
	        },

	        toString : function () {
	            return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
	        },

	        toDate : function () {
	            return this._offset ? new Date(+this) : this._d;
	        },

	        toISOString : function () {
	            var m = moment(this).utc();
	            if (0 < m.year() && m.year() <= 9999) {
	                return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
	            } else {
	                return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
	            }
	        },

	        toArray : function () {
	            var m = this;
	            return [
	                m.year(),
	                m.month(),
	                m.date(),
	                m.hours(),
	                m.minutes(),
	                m.seconds(),
	                m.milliseconds()
	            ];
	        },

	        isValid : function () {
	            return isValid(this);
	        },

	        isDSTShifted : function () {
	            if (this._a) {
	                return this.isValid() && compareArrays(this._a, (this._isUTC ? moment.utc(this._a) : moment(this._a)).toArray()) > 0;
	            }

	            return false;
	        },

	        parsingFlags : function () {
	            return extend({}, this._pf);
	        },

	        invalidAt: function () {
	            return this._pf.overflow;
	        },

	        utc : function (keepLocalTime) {
	            return this.zone(0, keepLocalTime);
	        },

	        local : function (keepLocalTime) {
	            if (this._isUTC) {
	                this.zone(0, keepLocalTime);
	                this._isUTC = false;

	                if (keepLocalTime) {
	                    this.add(this._dateTzOffset(), 'm');
	                }
	            }
	            return this;
	        },

	        format : function (inputString) {
	            var output = formatMoment(this, inputString || moment.defaultFormat);
	            return this.localeData().postformat(output);
	        },

	        add : createAdder(1, 'add'),

	        subtract : createAdder(-1, 'subtract'),

	        diff : function (input, units, asFloat) {
	            var that = makeAs(input, this),
	                zoneDiff = (this.zone() - that.zone()) * 6e4,
	                diff, output, daysAdjust;

	            units = normalizeUnits(units);

	            if (units === 'year' || units === 'month') {
	                // average number of days in the months in the given dates
	                diff = (this.daysInMonth() + that.daysInMonth()) * 432e5; // 24 * 60 * 60 * 1000 / 2
	                // difference in months
	                output = ((this.year() - that.year()) * 12) + (this.month() - that.month());
	                // adjust by taking difference in days, average number of days
	                // and dst in the given months.
	                daysAdjust = (this - moment(this).startOf('month')) -
	                    (that - moment(that).startOf('month'));
	                // same as above but with zones, to negate all dst
	                daysAdjust -= ((this.zone() - moment(this).startOf('month').zone()) -
	                        (that.zone() - moment(that).startOf('month').zone())) * 6e4;
	                output += daysAdjust / diff;
	                if (units === 'year') {
	                    output = output / 12;
	                }
	            } else {
	                diff = (this - that);
	                output = units === 'second' ? diff / 1e3 : // 1000
	                    units === 'minute' ? diff / 6e4 : // 1000 * 60
	                    units === 'hour' ? diff / 36e5 : // 1000 * 60 * 60
	                    units === 'day' ? (diff - zoneDiff) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
	                    units === 'week' ? (diff - zoneDiff) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
	                    diff;
	            }
	            return asFloat ? output : absRound(output);
	        },

	        from : function (time, withoutSuffix) {
	            return moment.duration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
	        },

	        fromNow : function (withoutSuffix) {
	            return this.from(moment(), withoutSuffix);
	        },

	        calendar : function (time) {
	            // We want to compare the start of today, vs this.
	            // Getting start-of-today depends on whether we're zone'd or not.
	            var now = time || moment(),
	                sod = makeAs(now, this).startOf('day'),
	                diff = this.diff(sod, 'days', true),
	                format = diff < -6 ? 'sameElse' :
	                    diff < -1 ? 'lastWeek' :
	                    diff < 0 ? 'lastDay' :
	                    diff < 1 ? 'sameDay' :
	                    diff < 2 ? 'nextDay' :
	                    diff < 7 ? 'nextWeek' : 'sameElse';
	            return this.format(this.localeData().calendar(format, this));
	        },

	        isLeapYear : function () {
	            return isLeapYear(this.year());
	        },

	        isDST : function () {
	            return (this.zone() < this.clone().month(0).zone() ||
	                this.zone() < this.clone().month(5).zone());
	        },

	        day : function (input) {
	            var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
	            if (input != null) {
	                input = parseWeekday(input, this.localeData());
	                return this.add(input - day, 'd');
	            } else {
	                return day;
	            }
	        },

	        month : makeAccessor('Month', true),

	        startOf : function (units) {
	            units = normalizeUnits(units);
	            // the following switch intentionally omits break keywords
	            // to utilize falling through the cases.
	            switch (units) {
	            case 'year':
	                this.month(0);
	                /* falls through */
	            case 'quarter':
	            case 'month':
	                this.date(1);
	                /* falls through */
	            case 'week':
	            case 'isoWeek':
	            case 'day':
	                this.hours(0);
	                /* falls through */
	            case 'hour':
	                this.minutes(0);
	                /* falls through */
	            case 'minute':
	                this.seconds(0);
	                /* falls through */
	            case 'second':
	                this.milliseconds(0);
	                /* falls through */
	            }

	            // weeks are a special case
	            if (units === 'week') {
	                this.weekday(0);
	            } else if (units === 'isoWeek') {
	                this.isoWeekday(1);
	            }

	            // quarters are also special
	            if (units === 'quarter') {
	                this.month(Math.floor(this.month() / 3) * 3);
	            }

	            return this;
	        },

	        endOf: function (units) {
	            units = normalizeUnits(units);
	            return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
	        },

	        isAfter: function (input, units) {
	            units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
	            if (units === 'millisecond') {
	                input = moment.isMoment(input) ? input : moment(input);
	                return +this > +input;
	            } else {
	                return +this.clone().startOf(units) > +moment(input).startOf(units);
	            }
	        },

	        isBefore: function (input, units) {
	            units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
	            if (units === 'millisecond') {
	                input = moment.isMoment(input) ? input : moment(input);
	                return +this < +input;
	            } else {
	                return +this.clone().startOf(units) < +moment(input).startOf(units);
	            }
	        },

	        isSame: function (input, units) {
	            units = normalizeUnits(units || 'millisecond');
	            if (units === 'millisecond') {
	                input = moment.isMoment(input) ? input : moment(input);
	                return +this === +input;
	            } else {
	                return +this.clone().startOf(units) === +makeAs(input, this).startOf(units);
	            }
	        },

	        min: deprecate(
	                 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548',
	                 function (other) {
	                     other = moment.apply(null, arguments);
	                     return other < this ? this : other;
	                 }
	         ),

	        max: deprecate(
	                'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',
	                function (other) {
	                    other = moment.apply(null, arguments);
	                    return other > this ? this : other;
	                }
	        ),

	        // keepLocalTime = true means only change the timezone, without
	        // affecting the local hour. So 5:31:26 +0300 --[zone(2, true)]-->
	        // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist int zone
	        // +0200, so we adjust the time as needed, to be valid.
	        //
	        // Keeping the time actually adds/subtracts (one hour)
	        // from the actual represented time. That is why we call updateOffset
	        // a second time. In case it wants us to change the offset again
	        // _changeInProgress == true case, then we have to adjust, because
	        // there is no such time in the given timezone.
	        zone : function (input, keepLocalTime) {
	            var offset = this._offset || 0,
	                localAdjust;
	            if (input != null) {
	                if (typeof input === 'string') {
	                    input = timezoneMinutesFromString(input);
	                }
	                if (Math.abs(input) < 16) {
	                    input = input * 60;
	                }
	                if (!this._isUTC && keepLocalTime) {
	                    localAdjust = this._dateTzOffset();
	                }
	                this._offset = input;
	                this._isUTC = true;
	                if (localAdjust != null) {
	                    this.subtract(localAdjust, 'm');
	                }
	                if (offset !== input) {
	                    if (!keepLocalTime || this._changeInProgress) {
	                        addOrSubtractDurationFromMoment(this,
	                                moment.duration(offset - input, 'm'), 1, false);
	                    } else if (!this._changeInProgress) {
	                        this._changeInProgress = true;
	                        moment.updateOffset(this, true);
	                        this._changeInProgress = null;
	                    }
	                }
	            } else {
	                return this._isUTC ? offset : this._dateTzOffset();
	            }
	            return this;
	        },

	        zoneAbbr : function () {
	            return this._isUTC ? 'UTC' : '';
	        },

	        zoneName : function () {
	            return this._isUTC ? 'Coordinated Universal Time' : '';
	        },

	        parseZone : function () {
	            if (this._tzm) {
	                this.zone(this._tzm);
	            } else if (typeof this._i === 'string') {
	                this.zone(this._i);
	            }
	            return this;
	        },

	        hasAlignedHourOffset : function (input) {
	            if (!input) {
	                input = 0;
	            }
	            else {
	                input = moment(input).zone();
	            }

	            return (this.zone() - input) % 60 === 0;
	        },

	        daysInMonth : function () {
	            return daysInMonth(this.year(), this.month());
	        },

	        dayOfYear : function (input) {
	            var dayOfYear = round((moment(this).startOf('day') - moment(this).startOf('year')) / 864e5) + 1;
	            return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
	        },

	        quarter : function (input) {
	            return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
	        },

	        weekYear : function (input) {
	            var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year;
	            return input == null ? year : this.add((input - year), 'y');
	        },

	        isoWeekYear : function (input) {
	            var year = weekOfYear(this, 1, 4).year;
	            return input == null ? year : this.add((input - year), 'y');
	        },

	        week : function (input) {
	            var week = this.localeData().week(this);
	            return input == null ? week : this.add((input - week) * 7, 'd');
	        },

	        isoWeek : function (input) {
	            var week = weekOfYear(this, 1, 4).week;
	            return input == null ? week : this.add((input - week) * 7, 'd');
	        },

	        weekday : function (input) {
	            var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
	            return input == null ? weekday : this.add(input - weekday, 'd');
	        },

	        isoWeekday : function (input) {
	            // behaves the same as moment#day except
	            // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
	            // as a setter, sunday should belong to the previous week.
	            return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
	        },

	        isoWeeksInYear : function () {
	            return weeksInYear(this.year(), 1, 4);
	        },

	        weeksInYear : function () {
	            var weekInfo = this.localeData()._week;
	            return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
	        },

	        get : function (units) {
	            units = normalizeUnits(units);
	            return this[units]();
	        },

	        set : function (units, value) {
	            units = normalizeUnits(units);
	            if (typeof this[units] === 'function') {
	                this[units](value);
	            }
	            return this;
	        },

	        // If passed a locale key, it will set the locale for this
	        // instance.  Otherwise, it will return the locale configuration
	        // variables for this instance.
	        locale : function (key) {
	            var newLocaleData;

	            if (key === undefined) {
	                return this._locale._abbr;
	            } else {
	                newLocaleData = moment.localeData(key);
	                if (newLocaleData != null) {
	                    this._locale = newLocaleData;
	                }
	                return this;
	            }
	        },

	        lang : deprecate(
	            'moment().lang() is deprecated. Use moment().localeData() instead.',
	            function (key) {
	                if (key === undefined) {
	                    return this.localeData();
	                } else {
	                    return this.locale(key);
	                }
	            }
	        ),

	        localeData : function () {
	            return this._locale;
	        },

	        _dateTzOffset : function () {
	            // On Firefox.24 Date#getTimezoneOffset returns a floating point.
	            // https://github.com/moment/moment/pull/1871
	            return Math.round(this._d.getTimezoneOffset() / 15) * 15;
	        }
	    });

	    function rawMonthSetter(mom, value) {
	        var dayOfMonth;

	        // TODO: Move this out of here!
	        if (typeof value === 'string') {
	            value = mom.localeData().monthsParse(value);
	            // TODO: Another silent failure?
	            if (typeof value !== 'number') {
	                return mom;
	            }
	        }

	        dayOfMonth = Math.min(mom.date(),
	                daysInMonth(mom.year(), value));
	        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
	        return mom;
	    }

	    function rawGetter(mom, unit) {
	        return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]();
	    }

	    function rawSetter(mom, unit, value) {
	        if (unit === 'Month') {
	            return rawMonthSetter(mom, value);
	        } else {
	            return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
	        }
	    }

	    function makeAccessor(unit, keepTime) {
	        return function (value) {
	            if (value != null) {
	                rawSetter(this, unit, value);
	                moment.updateOffset(this, keepTime);
	                return this;
	            } else {
	                return rawGetter(this, unit);
	            }
	        };
	    }

	    moment.fn.millisecond = moment.fn.milliseconds = makeAccessor('Milliseconds', false);
	    moment.fn.second = moment.fn.seconds = makeAccessor('Seconds', false);
	    moment.fn.minute = moment.fn.minutes = makeAccessor('Minutes', false);
	    // Setting the hour should keep the time, because the user explicitly
	    // specified which hour he wants. So trying to maintain the same hour (in
	    // a new timezone) makes sense. Adding/subtracting hours does not follow
	    // this rule.
	    moment.fn.hour = moment.fn.hours = makeAccessor('Hours', true);
	    // moment.fn.month is defined separately
	    moment.fn.date = makeAccessor('Date', true);
	    moment.fn.dates = deprecate('dates accessor is deprecated. Use date instead.', makeAccessor('Date', true));
	    moment.fn.year = makeAccessor('FullYear', true);
	    moment.fn.years = deprecate('years accessor is deprecated. Use year instead.', makeAccessor('FullYear', true));

	    // add plural methods
	    moment.fn.days = moment.fn.day;
	    moment.fn.months = moment.fn.month;
	    moment.fn.weeks = moment.fn.week;
	    moment.fn.isoWeeks = moment.fn.isoWeek;
	    moment.fn.quarters = moment.fn.quarter;

	    // add aliased format methods
	    moment.fn.toJSON = moment.fn.toISOString;

	    /************************************
	        Duration Prototype
	    ************************************/


	    function daysToYears (days) {
	        // 400 years have 146097 days (taking into account leap year rules)
	        return days * 400 / 146097;
	    }

	    function yearsToDays (years) {
	        // years * 365 + absRound(years / 4) -
	        //     absRound(years / 100) + absRound(years / 400);
	        return years * 146097 / 400;
	    }

	    extend(moment.duration.fn = Duration.prototype, {

	        _bubble : function () {
	            var milliseconds = this._milliseconds,
	                days = this._days,
	                months = this._months,
	                data = this._data,
	                seconds, minutes, hours, years = 0;

	            // The following code bubbles up values, see the tests for
	            // examples of what that means.
	            data.milliseconds = milliseconds % 1000;

	            seconds = absRound(milliseconds / 1000);
	            data.seconds = seconds % 60;

	            minutes = absRound(seconds / 60);
	            data.minutes = minutes % 60;

	            hours = absRound(minutes / 60);
	            data.hours = hours % 24;

	            days += absRound(hours / 24);

	            // Accurately convert days to years, assume start from year 0.
	            years = absRound(daysToYears(days));
	            days -= absRound(yearsToDays(years));

	            // 30 days to a month
	            // TODO (iskren): Use anchor date (like 1st Jan) to compute this.
	            months += absRound(days / 30);
	            days %= 30;

	            // 12 months -> 1 year
	            years += absRound(months / 12);
	            months %= 12;

	            data.days = days;
	            data.months = months;
	            data.years = years;
	        },

	        abs : function () {
	            this._milliseconds = Math.abs(this._milliseconds);
	            this._days = Math.abs(this._days);
	            this._months = Math.abs(this._months);

	            this._data.milliseconds = Math.abs(this._data.milliseconds);
	            this._data.seconds = Math.abs(this._data.seconds);
	            this._data.minutes = Math.abs(this._data.minutes);
	            this._data.hours = Math.abs(this._data.hours);
	            this._data.months = Math.abs(this._data.months);
	            this._data.years = Math.abs(this._data.years);

	            return this;
	        },

	        weeks : function () {
	            return absRound(this.days() / 7);
	        },

	        valueOf : function () {
	            return this._milliseconds +
	              this._days * 864e5 +
	              (this._months % 12) * 2592e6 +
	              toInt(this._months / 12) * 31536e6;
	        },

	        humanize : function (withSuffix) {
	            var output = relativeTime(this, !withSuffix, this.localeData());

	            if (withSuffix) {
	                output = this.localeData().pastFuture(+this, output);
	            }

	            return this.localeData().postformat(output);
	        },

	        add : function (input, val) {
	            // supports only 2.0-style add(1, 's') or add(moment)
	            var dur = moment.duration(input, val);

	            this._milliseconds += dur._milliseconds;
	            this._days += dur._days;
	            this._months += dur._months;

	            this._bubble();

	            return this;
	        },

	        subtract : function (input, val) {
	            var dur = moment.duration(input, val);

	            this._milliseconds -= dur._milliseconds;
	            this._days -= dur._days;
	            this._months -= dur._months;

	            this._bubble();

	            return this;
	        },

	        get : function (units) {
	            units = normalizeUnits(units);
	            return this[units.toLowerCase() + 's']();
	        },

	        as : function (units) {
	            var days, months;
	            units = normalizeUnits(units);

	            if (units === 'month' || units === 'year') {
	                days = this._days + this._milliseconds / 864e5;
	                months = this._months + daysToYears(days) * 12;
	                return units === 'month' ? months : months / 12;
	            } else {
	                // handle milliseconds separately because of floating point math errors (issue #1867)
	                days = this._days + yearsToDays(this._months / 12);
	                switch (units) {
	                    case 'week': return days / 7 + this._milliseconds / 6048e5;
	                    case 'day': return days + this._milliseconds / 864e5;
	                    case 'hour': return days * 24 + this._milliseconds / 36e5;
	                    case 'minute': return days * 24 * 60 + this._milliseconds / 6e4;
	                    case 'second': return days * 24 * 60 * 60 + this._milliseconds / 1000;
	                    // Math.floor prevents floating point math errors here
	                    case 'millisecond': return Math.floor(days * 24 * 60 * 60 * 1000) + this._milliseconds;
	                    default: throw new Error('Unknown unit ' + units);
	                }
	            }
	        },

	        lang : moment.fn.lang,
	        locale : moment.fn.locale,

	        toIsoString : deprecate(
	            'toIsoString() is deprecated. Please use toISOString() instead ' +
	            '(notice the capitals)',
	            function () {
	                return this.toISOString();
	            }
	        ),

	        toISOString : function () {
	            // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
	            var years = Math.abs(this.years()),
	                months = Math.abs(this.months()),
	                days = Math.abs(this.days()),
	                hours = Math.abs(this.hours()),
	                minutes = Math.abs(this.minutes()),
	                seconds = Math.abs(this.seconds() + this.milliseconds() / 1000);

	            if (!this.asSeconds()) {
	                // this is the same as C#'s (Noda) and python (isodate)...
	                // but not other JS (goog.date)
	                return 'P0D';
	            }

	            return (this.asSeconds() < 0 ? '-' : '') +
	                'P' +
	                (years ? years + 'Y' : '') +
	                (months ? months + 'M' : '') +
	                (days ? days + 'D' : '') +
	                ((hours || minutes || seconds) ? 'T' : '') +
	                (hours ? hours + 'H' : '') +
	                (minutes ? minutes + 'M' : '') +
	                (seconds ? seconds + 'S' : '');
	        },

	        localeData : function () {
	            return this._locale;
	        }
	    });

	    moment.duration.fn.toString = moment.duration.fn.toISOString;

	    function makeDurationGetter(name) {
	        moment.duration.fn[name] = function () {
	            return this._data[name];
	        };
	    }

	    for (i in unitMillisecondFactors) {
	        if (hasOwnProp(unitMillisecondFactors, i)) {
	            makeDurationGetter(i.toLowerCase());
	        }
	    }

	    moment.duration.fn.asMilliseconds = function () {
	        return this.as('ms');
	    };
	    moment.duration.fn.asSeconds = function () {
	        return this.as('s');
	    };
	    moment.duration.fn.asMinutes = function () {
	        return this.as('m');
	    };
	    moment.duration.fn.asHours = function () {
	        return this.as('h');
	    };
	    moment.duration.fn.asDays = function () {
	        return this.as('d');
	    };
	    moment.duration.fn.asWeeks = function () {
	        return this.as('weeks');
	    };
	    moment.duration.fn.asMonths = function () {
	        return this.as('M');
	    };
	    moment.duration.fn.asYears = function () {
	        return this.as('y');
	    };

	    /************************************
	        Default Locale
	    ************************************/


	    // Set default locale, other locale will inherit from English.
	    moment.locale('en', {
	        ordinal : function (number) {
	            var b = number % 10,
	                output = (toInt(number % 100 / 10) === 1) ? 'th' :
	                (b === 1) ? 'st' :
	                (b === 2) ? 'nd' :
	                (b === 3) ? 'rd' : 'th';
	            return number + output;
	        }
	    });

	    /* EMBED_LOCALES */

	    /************************************
	        Exposing Moment
	    ************************************/

	    function makeGlobal(shouldDeprecate) {
	        /*global ender:false */
	        if (typeof ender !== 'undefined') {
	            return;
	        }
	        oldGlobalMoment = globalScope.moment;
	        if (shouldDeprecate) {
	            globalScope.moment = deprecate(
	                    'Accessing Moment through the global scope is ' +
	                    'deprecated, and will be removed in an upcoming ' +
	                    'release.',
	                    moment);
	        } else {
	            globalScope.moment = moment;
	        }
	    }

	    // CommonJS module is defined
	    if (hasModule) {
	        module.exports = moment;
	    } else if (true) {
	        !(__WEBPACK_AMD_DEFINE_RESULT__ = function (require, exports, module) {
	            if (module.config && module.config() && module.config().noGlobal === true) {
	                // release the global variable
	                globalScope.moment = oldGlobalMoment;
	            }

	            return moment;
	        }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
	        makeGlobal(true);
	    } else {
	        makeGlobal();
	    }
	}).call(this);
	/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(266)(module)))

/***/ }),

/***/ "views/shared/splunkbar/find/Input":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        module,
	        __webpack_require__("views/shared/FindInput"),
	        __webpack_require__("views/shared/splunkbar/find/Input.pcssm")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        module,
	        FindInputView,
	        css
	    ){
	        return FindInputView.extend({
	            moduleId: module.id,
	            useLocalClassNames: true,
	            css: css
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/FindInput":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        module,
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("views/Base"),
	        __webpack_require__("util/splunkd_utils"),
	        __webpack_require__("util/keyboard"),
	        __webpack_require__("views/shared/controls/TextControl")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        module,
	        _,
	        BaseModel,
	        BaseView,
	        splunkdUtils,
	        keyboardUtil,
	        TextControl
	    )
	    {
	        return TextControl.extend({
	            moduleId: module.id,
	            // manually setting all classNames so subclassed views still work.
	            className: 'control shared-controls-textcontrol shared-findinput',
	            initialize: function() {
	                var defaults = {
	                    canClear: true,
	                    style: 'search',
	                    placeholder: _('filter').t(),
	                    key: 'name',
	                    updateOnKeyUp: true,
	                    updateOnAutofill: true,
	                    fetchDataFilter: false
	                };
	                this.rawSearch = this.options.rawSearch || new BaseModel({});
	                this.conditions = this.options.conditions || {};
	                _.defaults(this.options, defaults);
	                TextControl.prototype.initialize.apply(this, arguments);
	            },
	           events: _.extend({}, TextControl.prototype.events, {
	                'submit': function(e) {
	                    return false;
	                }
	            }),
	            setValueFromModel: function(render) {
	                this._setValue(this.rawSearch.get('rawSearch'), render);
	                return this;
	            },
	            isEmpty: function() {
	                return this.$input ? this.$input.val() === '' : true;
	            },
	            updateModel: _.debounce(function() {
	                var value = this._value;
	                if(this.options.fetchDataFilter && !value && this.model.get('filter')) {
	                    this.model.unset('filter');
	                } else {
	                    var keys = _.isArray(this.options.key) ? this.options.key : this.options.key.split(' ');
	                    if(this.options.fetchDataFilter) {
	                        var newVal = splunkdUtils.createSearchFilterObj(value, keys);
	                        var oldVal = this.model.get('filter');
	                        if (this.hasNotChanged(newVal, oldVal)) {
	                            return;
	                        }
	                        this.model.set('filter', newVal);
	                    } else {
	                        //in the future, consumers of the shared input should refactor away
	                        //from passing fetch data as the state model
	                        newVal = splunkdUtils.createSearchFilterString(value, keys, {coditions: this.conditions});
	                        oldVal = this.model.get('search');
	                        if (this.hasNotChanged(newVal, oldVal)) {
	                            return;
	                        }
	                        this.model.set('search', newVal);
	                    }
	                }
	                this.model.set({'offset': '0'});
	                this.rawSearch.set('rawSearch', this._value);
	            }, 250),
	            hasNotChanged: function(newVal, oldVal) {
	                oldVal = oldVal || (!_.isObject(oldVal) && "search=*");
	                newVal = newVal || (!_.isObject(newVal) && "search=*");
	                return _.isEqual(newVal, oldVal);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/find/Input.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(305);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Input.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Input.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "require/underscore":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("contrib/underscore"), __webpack_require__("stubs/i18n")], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, i18n) {
	    // use underscore's mixin functionality to add the ability to localize a string
	    _.mixin({
	        t: function(string) {
	            return i18n._(string);
	        }
	    });

	    return _.noConflict();
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "collections/shared/Dashboards":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("collections/services/data/ui/Views"),
	        __webpack_require__("models/search/Dashboard")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, Backbone, ViewsCollection, DashboardModel) {
	        return ViewsCollection.extend({
	            model: DashboardModel,
	            initialize: function() {
	                ViewsCollection.prototype.initialize.apply(this, arguments);
	            },
	            sync: function(method, collection, options) {
	                options = options || {};
	                options.data = options.data || {};
	                var baseSearch = '(isDashboard=1 AND isVisible=1)';
	                if (!options.data.search) {
	                    options.data.search = baseSearch;
	                } else {
	                    options.data.search = '(' + baseSearch + ' AND ' + options.data.search + ')';
	                }
	                return ViewsCollection.prototype.sync.call(this, method, collection, options);
	            },
	            fetchSafe: function(options) {
	                var defaults = { 
	                    data: {
	                        sort_dir: 'asc',
	                        sort_key: 'label',
	                        sort_mode: 'natural',
	                        count: 1000,
	                        digest: '1'
	                    }
	                };

	                $.extend(true, defaults, options || {});
	                
	                var eaiApp = defaults.data["eai:acl.app"] || '*';
	                delete defaults.data["eai:acl.app"];

	                var baseSearch = '(eai:acl.can_write="1" AND (NOT name="pdf_activity") AND eai:acl.app="' + eaiApp  + '")';
	                if (options && options.data && options.data.search) {
	                    defaults.data.search = '(' + baseSearch + ' AND ' + options.data.search + ')';
	                } else {
	                    defaults.data.search = baseSearch;
	                }
	                return this.fetch(defaults);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "collections/services/data/ui/Views":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("models/services/data/ui/View"),
	        __webpack_require__("collections/SplunkDsBase"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, Backbone, ViewModel, SplunkDsBaseCollection, splunk_utils) {
	        return SplunkDsBaseCollection.extend({
	            url: 'data/ui/views',
	            model: ViewModel,
	            initialize: function() {
	                SplunkDsBaseCollection.prototype.initialize.apply(this, arguments);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/data/ui/View":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	     __webpack_require__("shim/jquery"),
	     __webpack_require__("shim/splunk.util"),
	     __webpack_require__("models/SplunkDBase"),
	     __webpack_require__("require/underscore"),
	     __webpack_require__("util/xml")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, splunkutil, SplunkDBaseModel, _, XML) {
	        return SplunkDBaseModel.extend({
	            url: "data/ui/views",
	            initialize: function() {
	                SplunkDBaseModel.prototype.initialize.apply(this, arguments);
	            },
	            isXML: function() {
	                return this.entry.content.get('eai:type') === 'views';
	            },
	            isHTML: function() {
	                return this.entry.content.get('eai:type') === 'html';
	            },
	            getViewType: function() {
	                var typeLabel = 'n/a';
	                if(this.isXML()) {
	                    typeLabel = 'XML';
	                } else if(this.isHTML()) {
	                    typeLabel = 'HTML';
	                }
	                return typeLabel;
	            },
	            canSchedulePDF: function() {
	                // We can PDF-schdedule a view if...
	                return this.isSimpleXML() && // it's a simple xml dashboard
	                    this.isRoot('dashboard'); // and not a form
	            },
	            getLabel: function() {
	                return this.entry.content.get('label') || this.entry.get('name');
	            },
	            isRoot: function(nodeName) {
	                if(!this.isXML()) {
	                    return false;
	                }
	                var rootNodeName = this.entry.content.get('rootNode');
	                if (!rootNodeName) {
	                    // fall back to root node name from XML if we didn't receive it explicitly
	                    var $xmlDoc = this.getReadOnly$XML();
	                    var rootNode = XML.root($xmlDoc)[0];
	                    if (rootNode) {
	                        rootNodeName = rootNode.nodeName;
	                    } else {
	                        return false;
	                    }
	                }
	                function lower(s){ return (s && s.toLowerCase()) || s; }
	                return arguments.length > 1 ?
	                        _.any(arguments, function(nodeName){ return lower(rootNodeName) === lower(nodeName); }) :
	                        lower(rootNodeName) === lower(nodeName);
	            },
	            isAdvanced: function(visibility) {
	                var $xmlDoc, $root, type, isVisible;
	                if (!this.isRoot('view')) {
	                    return false;
	                }
	                if (visibility) {
	                    $xmlDoc = this.getReadOnly$XML();
	                    $root = XML.root($xmlDoc);
	                    type = $root.attr('type');
	                    isVisible = $root.attr('isVisible');
	                    if (type && type == 'html') {
	                        return false;
	                    }
	                    if (isVisible && !splunkutil.normalizeBoolean(isVisible)){
	                        return false;
	                    }
	                }
	                return true;
	            },
	            getXMLContent: function() {
	                return (this.isXML() && this.entry.content.get('eai:data')) || '<dashboard/>';
	            },
	            get$XML: function() {
	                var data = this.getXMLContent();
	                var xmlDoc;
	                try {
	                    xmlDoc = XML.parse(data);
	                } catch (e) {
	                    xmlDoc = XML.parse('<dashboard/>');
	                }
	                // SPL-68158 Prevent any kind of XSS when modifying XML using jQuery
	                xmlDoc.find('script').remove();
	                return xmlDoc;
	            },
	            getReadOnly$XML: function() {
	                var data = this.getXMLContent();
	                if (data !== this._readOnlyXML) {
	                    this._readOnly$XML = this.get$XML();
	                    this._readOnlyXML = data;
	                }
	                return this._readOnly$XML;
	            },
	            isDashboard: function() {
	                return this.isRoot('dashboard');
	            },
	            isForm: function() {
	                return this.isRoot('form');
	            },
	            isSimpleXML: function() {
	                return this.isXML() && this.isRoot('dashboard', 'form');
	            },
	            isValidXML: function() {
	                if (!this.isXML()) {
	                    return false;
	                }
	                try {
	                    XML.parse(this.entry.content.get('eai:data'));
	                } catch (e) {
	                    return false;
	                }
	                return true;
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "util/xml":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("shim/jquery"), __webpack_require__("require/underscore"), __webpack_require__("util/console"), __webpack_require__("util/SaxDom")], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, console, SaxDom) {

	    var tmpDoc = _.once(function(){
	        return $.parseXML('<tmp/>');
	    });

	    /**
	     * Parse the given XML string
	     * @param {String} str - the XMl string to parse 
	     * @returns {jQuery} the jQuery-wrapped XML document
	     */
	    function parse(str) {
	        return $($.parseXML(str));
	    }
	    
	    /**
	     * Create a new XML node
	     * @param str {string} the XML source
	     * @returns {*} the jQuery wrapped XML node
	     */
	    function $node(str) {
	        var document = $.parseXML(str);
	        return $(document.childNodes[0]);
	    }

	    /**
	     * Create a new, empty XML node with the given tag name  
	     * @param name the tag name
	     * @returns {*} the jQuery wrapped XML node
	     */
	    function $tag(name) {
	        return $node('<' + name + '/>');
	    }

	    /**
	     * Create a new XML text node
	     * @param txt {String} the text content
	     * @returns {*} the XML text node
	     */
	    function text(txt) {
	        return tmpDoc().createTextNode(txt);
	    }
	    
	    /**
	     * Clone the given XML node
	     * @param node the node the clone
	     * @returns the cloned node
	     */
	    function clone(node) {
	        return $node(serialize(node));
	    }

	    /**
	     * Create a new CDATA section from the given text
	     * @param str the text
	     * @returns {CDATASection} the resulting XML CDATA node
	     */
	    function cdata(str) {
	        return tmpDoc().createCDATASection(str);
	    }

	    /**
	     * Replaces CDATA nodes with regular text nodes in the given XML fragment
	     * @param node - the node to process recursively 
	     * @param deep - whether to replace cdata in nested nodes 
	     */
	    function replaceCdataNodes(node, deep) {
	        if (node) {
	            var domNode = _unwrap(node);
	            var CDATA = domNode.CDATA_SECTION_NODE;
	            for (var i = domNode.childNodes.length - 1; i >= 0; i--) {
	                var child = domNode.childNodes[i];
	                if (child.nodeType === CDATA) {
	                    var txt = text(child.nodeValue);
	                    domNode.insertBefore(txt, child);
	                    domNode.removeChild(child);
	                } else if (deep && child.nodeType === domNode.ELEMENT_NODE || child.nodeType === domNode.DOCUMENT_NODE) {
	                    replaceCdataNodes(child, deep);
	                }
	            }
	        }
	        return node;
	    }
	    
	    /**
	     * Remove all empty text nodes from the given XML document or node and trim all leading and trailing whitespace
	     * for all other text nodes
	     * @param n the XML document or node
	     * @param exceptions on object for nodes to exclude from whitespace cleanup (keys correspond to node names, values
	     * should be truthy)
	     */
	    function stripEmptyTextNodes(n, exceptions) {
	        //IE <9 does not have TEXT_NODE
	        var TEXT_NODE = n.TEXT_NODE || 3,
	            i, child, childNodes = n.childNodes;
	        for (i = childNodes.length - 1; i >= 0; i--) {
	            child = childNodes[i];
	            if (child !== undefined) {
	                if (child.nodeType === TEXT_NODE) {
	                    if (/^\s*$/.test(child.nodeValue)) {
	                        n.removeChild(child);
	                    } else {
	                        child.nodeValue = $.trim(child.nodeValue);
	                    }
	                }
	            }
	        }
	        childNodes = n.childNodes;
	        if (childNodes.length === 0) {
	            n.appendChild(text(''));
	        } else {
	            for (i = childNodes.length - 1; i >= 0; i--) {
	                child = childNodes[i];
	                if (child.nodeType === n.ELEMENT_NODE || child.nodeType === n.DOCUMENT_NODE) {
	                    if (exceptions == null || !exceptions[child.nodeName]) {
	                        stripEmptyTextNodes(child, exceptions);
	                    }
	                }
	            }
	        }
	    }

	    var INDENT = '  ';

	    function indentTxt(level) {
	        var txt = ['\n'], x = level;
	        while (x--) {
	            txt.push(INDENT);
	        }
	        return txt.join('');
	    }

	    function indent(n, level) {
	        //IE <9 does not have TEXT_NODE
	        var TEXT_NODE = n.TEXT_NODE || 3;

	        for (var i = 0; i <= n.childNodes.length; i++) {
	            var child1 = n.childNodes[i - 1], child2 = n.childNodes[i];
	            if (child2 && child2.nodeType !== TEXT_NODE && ((!child1) || child1.nodeType !== TEXT_NODE)) {
	                n.insertBefore(text(indentTxt(level)), child2);
	            }
	            if (i === n.childNodes.length && child1 && child1.nodeType !== TEXT_NODE) {
	                n.appendChild(text(indentTxt(level - 1)));
	            }
	        }
	        _.chain(n.childNodes).filter(function(c) {
	            return c.nodeType === n.ELEMENT_NODE;
	        }).each(function(c) {
	                indent(c, level + 1);
	            });
	    }

	    /**
	     * Format the given jQuery-XML document by stripping out empty text nodes and indenting XML elements
	     * @param $xml the jQuery-wrapped XML document
	     * @param noStrip an array of node names to exclude from whitespace cleanup
	     * @returns the formatted XML document
	     */
	    function formatXMLDocument($xml, noStrip) {
	        if (!isDocument($xml)) {
	            console.warn('Called formatXMLDocument with an argument which is not a XML document');
	            return formatXML($xml);
	        }
	        stripEmptyTextNodes($xml[0], _.object(noStrip, noStrip));
	        indent($xml[0].childNodes[0], 1);
	        return $xml;
	    }
	    
	    function formatXML($xml, noStrip) {
	        stripEmptyTextNodes(_unwrap($xml), _.object(noStrip, noStrip));
	        indent(_unwrap(isDocument($xml) ? root($xml) : $xml), 1);
	        return $xml;
	    }
	    
	    function formatDashboardXML($xml) {
	        return formatXML($xml, ['html', 'delimiter', 'prefix', 'suffix', 'query']);
	    }

	    function isDocument(node) {
	        var n = _unwrap(node);
	        return n && n.nodeType === n.DOCUMENT_NODE;
	    }
	    
	    function _unwrap(node) {
	        return node instanceof $ ? node[0] : node;
	    }
	    
	    /**
	     * Serialize the given XML document to string
	     * @param xml either a plain XML document or an jQuery-wrapped XML document
	     * @returns {string} the formatted XML
	     */
	    function serialize(xml) {
	        xml = _unwrap(xml);
	        return Object.prototype.hasOwnProperty.call(xml, 'xml') ? xml.xml : new XMLSerializer().serializeToString(xml);
	    }

	    function serializeDashboardXML(xml, indent) {
	        if (indent) {
	            xml = formatDashboardXML(xml);
	        }
	        return serialize(xml);
	    }
	    
	    /**
	     * Utility method to inject a node into a container by inserting it before or after particular child elements of a
	     * container. If none of the child elements can be found then a fallback can be used to either append or prepend the
	     * element or to execute a function to run arbitrary alternative injection.
	     *
	     * @param options {object} - {
	     *      node {Element}: the node to inject
	     *      container {Element}: the container where the node is to be injected into
	     *      where {String}: "after" or "before" - where, relative to the selectors should the node be injected
	     *      selectors {Array}: child selectors of elements where node is to be injected before or after. The first match will
	     *                 be used.
	     *      fallback {String|Function}:
	     * }
	     * @returns {boolean} true if the node has been injected, false if not
	     */
	    function inject(options) {
	        var node = options.node;
	        var where = options.where;
	        var container = options.container;
	        var selectors = options.selectors || [];
	        var fallback = options.fallback;
	        var $container = $(container);
	        for (var i = 0; i < selectors.length; i++) {
	            var selector = selectors[i];
	            var target = $container.children(selector);
	            if (target.length) {
	                target[where](node);
	                return true;
	            }
	        }
	        if (_.isString(fallback)) {
	            $container[fallback](node);
	            return true;
	        } else if (_.isFunction(fallback)) {
	            fallback($container, node);
	            return true;
	        }
	        return false;
	    }

	    /**
	     * Replace a child element matched by a selector within a container with a new node. If the no child element
	     * matches the selector, then the new node is appended to the container.
	     *
	     * @param options {object} - {
	     *      node {Element|Array|String} the node(s) to insert into the container
	     *      container {element}: the container
	     *      selector {String}: the child selector to use to match the elements to replace
	     * }
	     */
	    function replaceOrAppend(options) {
	        replaceOrInject(options.node, options.selector, options.container, 'append');
	    }

	    /**
	     * Replace a child element matched by a selector within a container with a new node. If the no child element
	     * matches the selector, then the new node is prepended to the container.
	     *
	     * @param options {object} - {
	     *      node {Element|Array|String} the node(s) to insert into the container
	     *      container {element}: the container
	     *      selector {String}: the child selector to use to match the elements to replace
	     * }
	     */
	    function replaceOrPrepend(options) {
	        replaceOrInject(options.node, options.selector, options.container, 'prepend');
	    }

	    function replaceOrInject(node, selector, container, fallback) {
	        var $container = $(container);
	        var existing = $container.children(selector);
	        if (existing.length) {
	            $(_.rest(existing)).remove();
	            $(existing.first()).replaceWith(node);
	        } else {
	            $container[fallback](node);
	        }
	    }

	    /**
	     * Get the root node of the given XML document
	     * @param doc the xml document
	     * @returns {*} the jQuery wrapped root node
	     */
	    function root(doc) {
	        var docNode = _unwrap(doc);
	        var rootEl;
	        for (var i = docNode.childNodes.length; i;) {
	            if (docNode.childNodes[--i].nodeType === docNode.ELEMENT_NODE) {
	                rootEl = docNode.childNodes[i];
	                break;
	            }
	        }
	        return $(rootEl);
	    }

	    /**
	     * Move all children from the source node to the destination node
	     * @param src {*} the source node
	     * @param dst {*} the destination node
	     * @returns {*} the updated destination node
	     */
	    function moveChildren(src, dst) {
	        src = $(src)[0];
	        dst = $(dst)[0];
	        while (src.firstChild) {
	            dst.appendChild(src.firstChild);
	        }
	        return $(dst);
	    }
	    
	    function parseSaxDocument(xml) {
	        return SaxDom.parse(_.isString(xml) ? xml : serialize(xml));
	    }
	    
	    return {
	        parse: parse,
	        $node: $node,
	        $tag: $tag,
	        text: text,
	        cdata: cdata,
	        replaceCdataNodes: replaceCdataNodes,
	        stripEmptyTextNodes: stripEmptyTextNodes,
	        formatXMLDocument: formatXMLDocument,
	        formatXML: formatXML,
	        serialize: serialize,
	        formatDashboardXML: formatDashboardXML,
	        serializeDashboardXML: serializeDashboardXML,
	        clone: clone,
	        inject: inject,
	        replaceOrAppend: replaceOrAppend,
	        replaceOrPrepend: replaceOrPrepend,
	        root: root,
	        moveChildren: moveChildren,
	        parseSaxDocument: parseSaxDocument,
	        SaxParserError: SaxDom.Error
	    };
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "util/SaxDom":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("require/underscore"), __webpack_require__("contrib/sax")], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, Sax) {

	    // ~~ SAX Document Object Model ~~
	    // 
	    // Simple document object model that uses sax.js - a pure JS XML parser - to parse XML 
	    // and produces a lightweight object structure representing the XML. Also retains 
	    // position (line/column) information as part of DOM elements.

	    /**
	     * @class SaxElement represents a parsed XML element. It's primary properties are:
	     * - name {String} (tag name of the element)
	     * - attr {Object} key/value paris of attribute of the element
	     * - children {Array} of child elements
	     * - val {String} text content of the element
	     */
	    var SaxElement = function(saxAttrs, parent) {
	        this.parent = parent;
	        this.name = saxAttrs.name;
	        this.attr = saxAttrs.attributes || {};
	        this.children = [];
	        this.firstChild = null;
	        this.lastChild = null;

	        this.val = null;

	        this.textNodes = [];
	        this.cdataNodes = [];
	    };

	    _.extend(SaxElement.prototype, {
	        _updatePositionInfo: function(parser) {
	            this.line = parser.line;
	            this.column = parser.column;
	            this.position = parser.position;
	            this.startTagPosition = parser.startTagPosition;
	        },
	        _opentag: function(tag) {
	            var child = new SaxElement(tag, this);
	            this.children.push(child);
	            this.firstChild = this.firstChild || child;
	            this.lastChild = child;
	            return child;
	        },
	        _closetag: function(tag, parser) {
	            if (this.val == null && !parser.tag.isSelfClosing) {
	                this.val = "";
	            }
	            this.endPosition = parser.position;
	            this.endTagPosition = parser.startTagPosition;
	            this._closed = true;
	        },
	        _text: function(text) {
	            this.textNodes.push(text);
	            this.val = (this.val || '') + text;
	        },
	        _cdata: function(text) {
	            this.cdataNodes.push(text);
	            this.val = (this.val || '') + text;
	        },
	        _rootDoc: function() {
	            var cur = this;
	            while (cur.parent) {
	                cur = cur.parent;
	            }
	            return cur;
	        },
	        _documentSource: function() {
	            var source = this._rootDoc().source;
	            if (!source) {
	                throw new SaxParserError("Cannot access raw content of node (see retainRaw option)");
	            }
	            return source;
	        },
	        /**
	         * Get the raw XML representation of the XML element as it occurs in the source code originally
	         * @returns {String} the raw XML source fragment defining the element
	         */
	        raw: function() {
	            return this._documentSource().slice(this.startTagPosition - 1, this.endPosition);
	        },
	        /**
	         * Get the raw XML content of the given XML element as it occurs in the source code originally
	         * @returns {String} the raw XML source fragment of the content of this element 
	         */
	        rawContent: function() {
	            return this._documentSource().slice(this.position, this.endTagPosition - 1);
	        },
	        /**
	         * Iterate over each child element of this element 
	         * @param {Function} iterator
	         * @param {Function} context (optional)
	         */
	        eachChild: function(iterator, context) {
	            _.each(this.children, iterator, context);
	        },
	        /**
	         * Get the first child element with the given tag name
	         * @param {String} name
	         * @returns {SaxElement}
	         */
	        childNamed: function(name) {
	            return _.findWhere(this.children, {name: name});
	        },
	        /**
	         * Get all child elements with the given tag name
	         * @param {String} name
	         * @returns {Array} of elements
	         */
	        childrenNamed: function(name) {
	            return _.where(this.children, {name: name});
	        },
	        /**
	         * Find the first child with the given attribute (and optionally attribute value)
	         * @param {String} name of the attribute
	         * @param {String} value (optinally) the value of the attribute
	         * @returns {SaxElement}
	         */
	        childWithAttribute: function(name, value) {
	            return _.find(this.children, function(child) {
	                return value !== undefined ? child.attr[name] === value : child.attr[name] !== undefined;
	            });
	        },
	        toString: function(options) {
	            return this.toStringWithIndent("", options);
	        },
	        toStringWithIndent: function(indent, options) {
	            var s = indent + "<" + this.name;
	            var linebreak = options && options.compressed ? "" : "\n";

	            for (var name in this.attr) {
	                if (Object.prototype.hasOwnProperty.call(this.attr, name)) {
	                    s += " " + name + '="' + _.escape(this.attr[name]) + '"';
	                }
	            }

	            var finalVal = _.escape((this.val || '').trim());

	            if (options && options.trimmed && finalVal.length > 25) {
	                finalVal = finalVal.substring(0, 25).trim() + "…";
	            }

	            if (this.children.length) {
	                s += ">" + linebreak;

	                var childIndent = indent + (options && options.compressed ? "" : "  ");

	                if (finalVal.length) {
	                    s += childIndent + finalVal + linebreak;
	                }

	                for (var i = 0, l = this.children.length; i < l; i++) {
	                    s += this.children[i].toStringWithIndent(childIndent, options) + linebreak;
	                }

	                s += indent + "</" + this.name + ">";
	            } else if (finalVal.length) {
	                s += ">" + finalVal + "</" + this.name + ">";
	            } else {
	                s += "/>";
	            }

	            return s;
	        }
	    });

	    /**
	     * @class SaxDocument is a root element of an XML document
	     */
	    function SaxDocument(tag, raw) {
	        SaxElement.call(this, tag);
	        this.source = raw;
	    }

	    _.extend(SaxDocument.prototype, SaxElement.prototype);


	    function SaxParserError(message, line, column) {
	        Error.call(this, message);
	        this.name = "SaxParserError";
	        this.line = line;
	        this.column = column;
	        this.message = message;
	    }


	    _.extend(SaxParserError.prototype, Error.prototype);

	    SaxParserError.of = function(error) {
	        if (error instanceof SaxParserError) {
	            return error;
	        } else {
	            var m = /^(.+?)\.?\nLine: ([-\d]+)\nColumn: ([-\d]+)\n/g.exec(error.message);
	            return new SaxParserError(m ? m[1] : error.message, m ? +m[2] + 1 : -1, m ? +m[3] : -1);
	        }
	    };

	    /**
	     * Parse the given XML string
	     * 
	     * @param {String} xml
	     * @param {Object} options (optional) {
	     *      position: {Boolean} enable or disable the tracking of the position with the XML document
	     *      retainRaw: {Boolean} true to keep a reference to the original XML source. Necessary for raw() and rawContent() to work
	     *      * {*}: Any option supported by the sax.js parser
	     * }
	     * @returns {SaxDocument}
	     */
	    function parseSaxDom(xml, options) {
	        options = _.extend({
	            // Track and store position of nodes within the XML document
	            position: true,
	            // Retain the source of the XML so it can be accessed using raw() and rawContent() methods
	            retainRaw: true
	        }, options);
	        var parser = Sax.parser(true, options);

	        var document = null;
	        var currentElement = null;

	        parser.onopentag = function(tag) {
	            var newElement;
	            if (currentElement == null) {
	                if (document != null) {
	                    throw new SaxParserError("Unexpected element after document end", parser.line + 1, parser.column);
	                }
	                document = newElement = new SaxDocument(tag, options.retainRaw ? xml : null);
	            } else {
	                newElement = currentElement._opentag(tag);
	            }
	            newElement._updatePositionInfo(parser);
	            currentElement = newElement;
	        };
	        parser.onclosetag = function(tag) {
	            if (currentElement) {
	                currentElement._closetag(tag, parser);
	                currentElement = currentElement.parent;
	            }
	        };
	        parser.ontext = function(text) {
	            if (currentElement) {
	                currentElement._text.apply(currentElement, arguments);
	            }
	        };
	        parser.oncdata = function() {
	            if (currentElement) {
	                currentElement._cdata.apply(currentElement, arguments);
	            }
	        };
	        parser.onerror = function(e) {
	            throw SaxParserError.of(e);
	        };

	        parser.write(xml).close();

	        if (!document) {
	            throw new SaxParserError('No document', 1, 1);
	        }

	        return document;
	    }

	    return {
	        parse: parseSaxDom,
	        Document: SaxDocument,
	        Element: SaxElement,
	        Error: SaxParserError
	    };
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "contrib/sax":
/***/ (function(module, exports, __webpack_require__) {

	/* WEBPACK VAR INJECTION */(function(Buffer) {// wrapper for non-node envs
	;(function (sax) {

	sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }
	sax.SAXParser = SAXParser
	sax.SAXStream = SAXStream
	sax.createStream = createStream

	// When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.
	// When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),
	// since that's the earliest that a buffer overrun could occur.  This way, checks are
	// as rare as required, but as often as necessary to ensure never crossing this bound.
	// Furthermore, buffers are only tested at most once per write(), so passing a very
	// large string into write() might have undesirable effects, but this is manageable by
	// the caller, so it is assumed to be safe.  Thus, a call to write() may, in the extreme
	// edge case, result in creating at most one complete copy of the string passed in.
	// Set to Infinity to have unlimited buffers.
	sax.MAX_BUFFER_LENGTH = 64 * 1024

	var buffers = [
	  "comment", "sgmlDecl", "textNode", "tagName", "doctype",
	  "procInstName", "procInstBody", "entity", "attribName",
	  "attribValue", "cdata", "script"
	]

	sax.EVENTS = // for discoverability.
	  [ "text"
	  , "processinginstruction"
	  , "sgmldeclaration"
	  , "doctype"
	  , "comment"
	  , "attribute"
	  , "opentag"
	  , "closetag"
	  , "opencdata"
	  , "cdata"
	  , "closecdata"
	  , "error"
	  , "end"
	  , "ready"
	  , "script"
	  , "opennamespace"
	  , "closenamespace"
	  ]

	function SAXParser (strict, opt) {
	  if (!(this instanceof SAXParser)) return new SAXParser(strict, opt)

	  var parser = this
	  clearBuffers(parser)
	  parser.q = parser.c = ""
	  parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH
	  parser.opt = opt || {}
	  parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags
	  parser.looseCase = parser.opt.lowercase ? "toLowerCase" : "toUpperCase"
	  parser.tags = []
	  parser.closed = parser.closedRoot = parser.sawRoot = false
	  parser.tag = parser.error = null
	  parser.strict = !!strict
	  parser.noscript = !!(strict || parser.opt.noscript)
	  parser.state = S.BEGIN
	  parser.strictEntities = parser.opt.strictEntities
	  parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)
	  parser.attribList = []

	  // namespaces form a prototype chain.
	  // it always points at the current tag,
	  // which protos to its parent tag.
	  if (parser.opt.xmlns) parser.ns = Object.create(rootNS)

	  // mostly just for error reporting
	  parser.trackPosition = parser.opt.position !== false
	  if (parser.trackPosition) {
	    parser.position = parser.line = parser.column = 0
	  }
	  emit(parser, "onready")
	}

	if (!Object.create) Object.create = function (o) {
	  function f () { this.__proto__ = o }
	  f.prototype = o
	  return new f
	}

	if (!Object.getPrototypeOf) Object.getPrototypeOf = function (o) {
	  return o.__proto__
	}

	if (!Object.keys) Object.keys = function (o) {
	  var a = []
	  for (var i in o) if (o.hasOwnProperty(i)) a.push(i)
	  return a
	}

	function checkBufferLength (parser) {
	  var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)
	    , maxActual = 0
	  for (var i = 0, l = buffers.length; i < l; i ++) {
	    var len = parser[buffers[i]].length
	    if (len > maxAllowed) {
	      // Text/cdata nodes can get big, and since they're buffered,
	      // we can get here under normal conditions.
	      // Avoid issues by emitting the text node now,
	      // so at least it won't get any bigger.
	      switch (buffers[i]) {
	        case "textNode":
	          closeText(parser)
	        break

	        case "cdata":
	          emitNode(parser, "oncdata", parser.cdata)
	          parser.cdata = ""
	        break

	        case "script":
	          emitNode(parser, "onscript", parser.script)
	          parser.script = ""
	        break

	        default:
	          error(parser, "Max buffer length exceeded: "+buffers[i])
	      }
	    }
	    maxActual = Math.max(maxActual, len)
	  }
	  // schedule the next check for the earliest possible buffer overrun.
	  parser.bufferCheckPosition = (sax.MAX_BUFFER_LENGTH - maxActual)
	                             + parser.position
	}

	function clearBuffers (parser) {
	  for (var i = 0, l = buffers.length; i < l; i ++) {
	    parser[buffers[i]] = ""
	  }
	}

	function flushBuffers (parser) {
	  closeText(parser)
	  if (parser.cdata !== "") {
	    emitNode(parser, "oncdata", parser.cdata)
	    parser.cdata = ""
	  }
	  if (parser.script !== "") {
	    emitNode(parser, "onscript", parser.script)
	    parser.script = ""
	  }
	}

	SAXParser.prototype =
	  { end: function () { end(this) }
	  , write: write
	  , resume: function () { this.error = null; return this }
	  , close: function () { return this.write(null) }
	  , flush: function () { flushBuffers(this) }
	  }

	try {
	  var Stream = __webpack_require__(310).Stream
	} catch (ex) {
	  var Stream = function () {}
	}


	var streamWraps = sax.EVENTS.filter(function (ev) {
	  return ev !== "error" && ev !== "end"
	})

	function createStream (strict, opt) {
	  return new SAXStream(strict, opt)
	}

	function SAXStream (strict, opt) {
	  if (!(this instanceof SAXStream)) return new SAXStream(strict, opt)

	  Stream.apply(this)

	  this._parser = new SAXParser(strict, opt)
	  this.writable = true
	  this.readable = true


	  var me = this

	  this._parser.onend = function () {
	    me.emit("end")
	  }

	  this._parser.onerror = function (er) {
	    me.emit("error", er)

	    // if didn't throw, then means error was handled.
	    // go ahead and clear error, so we can write again.
	    me._parser.error = null
	  }

	  this._decoder = null;

	  streamWraps.forEach(function (ev) {
	    Object.defineProperty(me, "on" + ev, {
	      get: function () { return me._parser["on" + ev] },
	      set: function (h) {
	        if (!h) {
	          me.removeAllListeners(ev)
	          return me._parser["on"+ev] = h
	        }
	        me.on(ev, h)
	      },
	      enumerable: true,
	      configurable: false
	    })
	  })
	}

	SAXStream.prototype = Object.create(Stream.prototype,
	  { constructor: { value: SAXStream } })

	SAXStream.prototype.write = function (data) {
	  if (typeof Buffer === 'function' &&
	      typeof Buffer.isBuffer === 'function' &&
	      Buffer.isBuffer(data)) {
	    if (!this._decoder) {
	      var SD = __webpack_require__(336).StringDecoder
	      this._decoder = new SD('utf8')
	    }
	    data = this._decoder.write(data);
	  }

	  this._parser.write(data.toString())
	  this.emit("data", data)
	  return true
	}

	SAXStream.prototype.end = function (chunk) {
	  if (chunk && chunk.length) this.write(chunk)
	  this._parser.end()
	  return true
	}

	SAXStream.prototype.on = function (ev, handler) {
	  var me = this
	  if (!me._parser["on"+ev] && streamWraps.indexOf(ev) !== -1) {
	    me._parser["on"+ev] = function () {
	      var args = arguments.length === 1 ? [arguments[0]]
	               : Array.apply(null, arguments)
	      args.splice(0, 0, ev)
	      me.emit.apply(me, args)
	    }
	  }

	  return Stream.prototype.on.call(me, ev, handler)
	}



	// character classes and tokens
	var whitespace = "\r\n\t "
	  // this really needs to be replaced with character classes.
	  // XML allows all manner of ridiculous numbers and digits.
	  , number = "0124356789"
	  , letter = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
	  // (Letter | "_" | ":")
	  , quote = "'\""
	  , entity = number+letter+"#"
	  , attribEnd = whitespace + ">"
	  , CDATA = "[CDATA["
	  , DOCTYPE = "DOCTYPE"
	  , XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace"
	  , XMLNS_NAMESPACE = "http://www.w3.org/2000/xmlns/"
	  , rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }

	// turn all the string character sets into character class objects.
	whitespace = charClass(whitespace)
	number = charClass(number)
	letter = charClass(letter)

	// http://www.w3.org/TR/REC-xml/#NT-NameStartChar
	// This implementation works on strings, a single character at a time
	// as such, it cannot ever support astral-plane characters (10000-EFFFF)
	// without a significant breaking change to either this  parser, or the
	// JavaScript language.  Implementation of an emoji-capable xml parser
	// is left as an exercise for the reader.
	var nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/

	var nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/

	quote = charClass(quote)
	entity = charClass(entity)
	attribEnd = charClass(attribEnd)

	function charClass (str) {
	  return str.split("").reduce(function (s, c) {
	    s[c] = true
	    return s
	  }, {})
	}

	function isRegExp (c) {
	  return Object.prototype.toString.call(c) === '[object RegExp]'
	}

	function is (charclass, c) {
	  return isRegExp(charclass) ? !!c.match(charclass) : charclass[c]
	}

	function not (charclass, c) {
	  return !is(charclass, c)
	}

	var S = 0
	sax.STATE =
	{ BEGIN                     : S++ // leading byte order mark or whitespace
	, BEGIN_WHITESPACE          : S++ // leading whitespace
	, TEXT                      : S++ // general stuff
	, TEXT_ENTITY               : S++ // &amp and such.
	, OPEN_WAKA                 : S++ // <
	, SGML_DECL                 : S++ // <!BLARG
	, SGML_DECL_QUOTED          : S++ // <!BLARG foo "bar
	, DOCTYPE                   : S++ // <!DOCTYPE
	, DOCTYPE_QUOTED            : S++ // <!DOCTYPE "//blah
	, DOCTYPE_DTD               : S++ // <!DOCTYPE "//blah" [ ...
	, DOCTYPE_DTD_QUOTED        : S++ // <!DOCTYPE "//blah" [ "foo
	, COMMENT_STARTING          : S++ // <!-
	, COMMENT                   : S++ // <!--
	, COMMENT_ENDING            : S++ // <!-- blah -
	, COMMENT_ENDED             : S++ // <!-- blah --
	, CDATA                     : S++ // <![CDATA[ something
	, CDATA_ENDING              : S++ // ]
	, CDATA_ENDING_2            : S++ // ]]
	, PROC_INST                 : S++ // <?hi
	, PROC_INST_BODY            : S++ // <?hi there
	, PROC_INST_ENDING          : S++ // <?hi "there" ?
	, OPEN_TAG                  : S++ // <strong
	, OPEN_TAG_SLASH            : S++ // <strong /
	, ATTRIB                    : S++ // <a
	, ATTRIB_NAME               : S++ // <a foo
	, ATTRIB_NAME_SAW_WHITE     : S++ // <a foo _
	, ATTRIB_VALUE              : S++ // <a foo=
	, ATTRIB_VALUE_QUOTED       : S++ // <a foo="bar
	, ATTRIB_VALUE_CLOSED       : S++ // <a foo="bar"
	, ATTRIB_VALUE_UNQUOTED     : S++ // <a foo=bar
	, ATTRIB_VALUE_ENTITY_Q     : S++ // <foo bar="&quot;"
	, ATTRIB_VALUE_ENTITY_U     : S++ // <foo bar=&quot;
	, CLOSE_TAG                 : S++ // </a
	, CLOSE_TAG_SAW_WHITE       : S++ // </a   >
	, SCRIPT                    : S++ // <script> ...
	, SCRIPT_ENDING             : S++ // <script> ... <
	}

	sax.XML_ENTITIES =
	{ "amp" : "&"
	, "gt" : ">"
	, "lt" : "<"
	, "quot" : "\""
	, "apos" : "'"
	}

	sax.ENTITIES =
	{ "amp" : "&"
	, "gt" : ">"
	, "lt" : "<"
	, "quot" : "\""
	, "apos" : "'"
	, "AElig" : 198
	, "Aacute" : 193
	, "Acirc" : 194
	, "Agrave" : 192
	, "Aring" : 197
	, "Atilde" : 195
	, "Auml" : 196
	, "Ccedil" : 199
	, "ETH" : 208
	, "Eacute" : 201
	, "Ecirc" : 202
	, "Egrave" : 200
	, "Euml" : 203
	, "Iacute" : 205
	, "Icirc" : 206
	, "Igrave" : 204
	, "Iuml" : 207
	, "Ntilde" : 209
	, "Oacute" : 211
	, "Ocirc" : 212
	, "Ograve" : 210
	, "Oslash" : 216
	, "Otilde" : 213
	, "Ouml" : 214
	, "THORN" : 222
	, "Uacute" : 218
	, "Ucirc" : 219
	, "Ugrave" : 217
	, "Uuml" : 220
	, "Yacute" : 221
	, "aacute" : 225
	, "acirc" : 226
	, "aelig" : 230
	, "agrave" : 224
	, "aring" : 229
	, "atilde" : 227
	, "auml" : 228
	, "ccedil" : 231
	, "eacute" : 233
	, "ecirc" : 234
	, "egrave" : 232
	, "eth" : 240
	, "euml" : 235
	, "iacute" : 237
	, "icirc" : 238
	, "igrave" : 236
	, "iuml" : 239
	, "ntilde" : 241
	, "oacute" : 243
	, "ocirc" : 244
	, "ograve" : 242
	, "oslash" : 248
	, "otilde" : 245
	, "ouml" : 246
	, "szlig" : 223
	, "thorn" : 254
	, "uacute" : 250
	, "ucirc" : 251
	, "ugrave" : 249
	, "uuml" : 252
	, "yacute" : 253
	, "yuml" : 255
	, "copy" : 169
	, "reg" : 174
	, "nbsp" : 160
	, "iexcl" : 161
	, "cent" : 162
	, "pound" : 163
	, "curren" : 164
	, "yen" : 165
	, "brvbar" : 166
	, "sect" : 167
	, "uml" : 168
	, "ordf" : 170
	, "laquo" : 171
	, "not" : 172
	, "shy" : 173
	, "macr" : 175
	, "deg" : 176
	, "plusmn" : 177
	, "sup1" : 185
	, "sup2" : 178
	, "sup3" : 179
	, "acute" : 180
	, "micro" : 181
	, "para" : 182
	, "middot" : 183
	, "cedil" : 184
	, "ordm" : 186
	, "raquo" : 187
	, "frac14" : 188
	, "frac12" : 189
	, "frac34" : 190
	, "iquest" : 191
	, "times" : 215
	, "divide" : 247
	, "OElig" : 338
	, "oelig" : 339
	, "Scaron" : 352
	, "scaron" : 353
	, "Yuml" : 376
	, "fnof" : 402
	, "circ" : 710
	, "tilde" : 732
	, "Alpha" : 913
	, "Beta" : 914
	, "Gamma" : 915
	, "Delta" : 916
	, "Epsilon" : 917
	, "Zeta" : 918
	, "Eta" : 919
	, "Theta" : 920
	, "Iota" : 921
	, "Kappa" : 922
	, "Lambda" : 923
	, "Mu" : 924
	, "Nu" : 925
	, "Xi" : 926
	, "Omicron" : 927
	, "Pi" : 928
	, "Rho" : 929
	, "Sigma" : 931
	, "Tau" : 932
	, "Upsilon" : 933
	, "Phi" : 934
	, "Chi" : 935
	, "Psi" : 936
	, "Omega" : 937
	, "alpha" : 945
	, "beta" : 946
	, "gamma" : 947
	, "delta" : 948
	, "epsilon" : 949
	, "zeta" : 950
	, "eta" : 951
	, "theta" : 952
	, "iota" : 953
	, "kappa" : 954
	, "lambda" : 955
	, "mu" : 956
	, "nu" : 957
	, "xi" : 958
	, "omicron" : 959
	, "pi" : 960
	, "rho" : 961
	, "sigmaf" : 962
	, "sigma" : 963
	, "tau" : 964
	, "upsilon" : 965
	, "phi" : 966
	, "chi" : 967
	, "psi" : 968
	, "omega" : 969
	, "thetasym" : 977
	, "upsih" : 978
	, "piv" : 982
	, "ensp" : 8194
	, "emsp" : 8195
	, "thinsp" : 8201
	, "zwnj" : 8204
	, "zwj" : 8205
	, "lrm" : 8206
	, "rlm" : 8207
	, "ndash" : 8211
	, "mdash" : 8212
	, "lsquo" : 8216
	, "rsquo" : 8217
	, "sbquo" : 8218
	, "ldquo" : 8220
	, "rdquo" : 8221
	, "bdquo" : 8222
	, "dagger" : 8224
	, "Dagger" : 8225
	, "bull" : 8226
	, "hellip" : 8230
	, "permil" : 8240
	, "prime" : 8242
	, "Prime" : 8243
	, "lsaquo" : 8249
	, "rsaquo" : 8250
	, "oline" : 8254
	, "frasl" : 8260
	, "euro" : 8364
	, "image" : 8465
	, "weierp" : 8472
	, "real" : 8476
	, "trade" : 8482
	, "alefsym" : 8501
	, "larr" : 8592
	, "uarr" : 8593
	, "rarr" : 8594
	, "darr" : 8595
	, "harr" : 8596
	, "crarr" : 8629
	, "lArr" : 8656
	, "uArr" : 8657
	, "rArr" : 8658
	, "dArr" : 8659
	, "hArr" : 8660
	, "forall" : 8704
	, "part" : 8706
	, "exist" : 8707
	, "empty" : 8709
	, "nabla" : 8711
	, "isin" : 8712
	, "notin" : 8713
	, "ni" : 8715
	, "prod" : 8719
	, "sum" : 8721
	, "minus" : 8722
	, "lowast" : 8727
	, "radic" : 8730
	, "prop" : 8733
	, "infin" : 8734
	, "ang" : 8736
	, "and" : 8743
	, "or" : 8744
	, "cap" : 8745
	, "cup" : 8746
	, "int" : 8747
	, "there4" : 8756
	, "sim" : 8764
	, "cong" : 8773
	, "asymp" : 8776
	, "ne" : 8800
	, "equiv" : 8801
	, "le" : 8804
	, "ge" : 8805
	, "sub" : 8834
	, "sup" : 8835
	, "nsub" : 8836
	, "sube" : 8838
	, "supe" : 8839
	, "oplus" : 8853
	, "otimes" : 8855
	, "perp" : 8869
	, "sdot" : 8901
	, "lceil" : 8968
	, "rceil" : 8969
	, "lfloor" : 8970
	, "rfloor" : 8971
	, "lang" : 9001
	, "rang" : 9002
	, "loz" : 9674
	, "spades" : 9824
	, "clubs" : 9827
	, "hearts" : 9829
	, "diams" : 9830
	}

	Object.keys(sax.ENTITIES).forEach(function (key) {
	    var e = sax.ENTITIES[key]
	    var s = typeof e === 'number' ? String.fromCharCode(e) : e
	    sax.ENTITIES[key] = s
	})

	for (var S in sax.STATE) sax.STATE[sax.STATE[S]] = S

	// shorthand
	S = sax.STATE

	function emit (parser, event, data) {
	  parser[event] && parser[event](data)
	}

	function emitNode (parser, nodeType, data) {
	  if (parser.textNode) closeText(parser)
	  emit(parser, nodeType, data)
	}

	function closeText (parser) {
	  parser.textNode = textopts(parser.opt, parser.textNode)
	  if (parser.textNode) emit(parser, "ontext", parser.textNode)
	  parser.textNode = ""
	}

	function textopts (opt, text) {
	  if (opt.trim) text = text.trim()
	  if (opt.normalize) text = text.replace(/\s+/g, " ")
	  return text
	}

	function error (parser, er) {
	  closeText(parser)
	  if (parser.trackPosition) {
	    er += "\nLine: "+parser.line+
	          "\nColumn: "+parser.column+
	          "\nChar: "+parser.c
	  }
	  er = new Error(er)
	  parser.error = er
	  emit(parser, "onerror", er)
	  return parser
	}

	function end (parser) {
	  if (parser.sawRoot && !parser.closedRoot) strictFail(parser, "Unclosed root tag")
	  if ((parser.state !== S.BEGIN) &&
	      (parser.state !== S.BEGIN_WHITESPACE) &&
	      (parser.state !== S.TEXT))
	    error(parser, "Unexpected end")
	  closeText(parser)
	  parser.c = ""
	  parser.closed = true
	  emit(parser, "onend")
	  SAXParser.call(parser, parser.strict, parser.opt)
	  return parser
	}

	function strictFail (parser, message) {
	  if (typeof parser !== 'object' || !(parser instanceof SAXParser))
	    throw new Error('bad call to strictFail');
	  if (parser.strict) error(parser, message)
	}

	function newTag (parser) {
	  if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()
	  var parent = parser.tags[parser.tags.length - 1] || parser
	    , tag = parser.tag = { name : parser.tagName, attributes : {} }

	  // will be overridden if tag contails an xmlns="foo" or xmlns:foo="bar"
	  if (parser.opt.xmlns) tag.ns = parent.ns
	  parser.attribList.length = 0
	}

	function qname (name, attribute) {
	  var i = name.indexOf(":")
	    , qualName = i < 0 ? [ "", name ] : name.split(":")
	    , prefix = qualName[0]
	    , local = qualName[1]

	  // <x "xmlns"="http://foo">
	  if (attribute && name === "xmlns") {
	    prefix = "xmlns"
	    local = ""
	  }

	  return { prefix: prefix, local: local }
	}

	function attrib (parser) {
	  if (!parser.strict) parser.attribName = parser.attribName[parser.looseCase]()

	  if (parser.attribList.indexOf(parser.attribName) !== -1 ||
	      parser.tag.attributes.hasOwnProperty(parser.attribName)) {
	    return parser.attribName = parser.attribValue = ""
	  }

	  if (parser.opt.xmlns) {
	    var qn = qname(parser.attribName, true)
	      , prefix = qn.prefix
	      , local = qn.local

	    if (prefix === "xmlns") {
	      // namespace binding attribute; push the binding into scope
	      if (local === "xml" && parser.attribValue !== XML_NAMESPACE) {
	        strictFail( parser
	                  , "xml: prefix must be bound to " + XML_NAMESPACE + "\n"
	                  + "Actual: " + parser.attribValue )
	      } else if (local === "xmlns" && parser.attribValue !== XMLNS_NAMESPACE) {
	        strictFail( parser
	                  , "xmlns: prefix must be bound to " + XMLNS_NAMESPACE + "\n"
	                  + "Actual: " + parser.attribValue )
	      } else {
	        var tag = parser.tag
	          , parent = parser.tags[parser.tags.length - 1] || parser
	        if (tag.ns === parent.ns) {
	          tag.ns = Object.create(parent.ns)
	        }
	        tag.ns[local] = parser.attribValue
	      }
	    }

	    // defer onattribute events until all attributes have been seen
	    // so any new bindings can take effect; preserve attribute order
	    // so deferred events can be emitted in document order
	    parser.attribList.push([parser.attribName, parser.attribValue])
	  } else {
	    // in non-xmlns mode, we can emit the event right away
	    parser.tag.attributes[parser.attribName] = parser.attribValue
	    emitNode( parser
	            , "onattribute"
	            , { name: parser.attribName
	              , value: parser.attribValue } )
	  }

	  parser.attribName = parser.attribValue = ""
	}

	function openTag (parser, selfClosing) {
	  if (parser.opt.xmlns) {
	    // emit namespace binding events
	    var tag = parser.tag

	    // add namespace info to tag
	    var qn = qname(parser.tagName)
	    tag.prefix = qn.prefix
	    tag.local = qn.local
	    tag.uri = tag.ns[qn.prefix] || ""

	    if (tag.prefix && !tag.uri) {
	      strictFail(parser, "Unbound namespace prefix: "
	                       + JSON.stringify(parser.tagName))
	      tag.uri = qn.prefix
	    }

	    var parent = parser.tags[parser.tags.length - 1] || parser
	    if (tag.ns && parent.ns !== tag.ns) {
	      Object.keys(tag.ns).forEach(function (p) {
	        emitNode( parser
	                , "onopennamespace"
	                , { prefix: p , uri: tag.ns[p] } )
	      })
	    }

	    // handle deferred onattribute events
	    // Note: do not apply default ns to attributes:
	    //   http://www.w3.org/TR/REC-xml-names/#defaulting
	    for (var i = 0, l = parser.attribList.length; i < l; i ++) {
	      var nv = parser.attribList[i]
	      var name = nv[0]
	        , value = nv[1]
	        , qualName = qname(name, true)
	        , prefix = qualName.prefix
	        , local = qualName.local
	        , uri = prefix == "" ? "" : (tag.ns[prefix] || "")
	        , a = { name: name
	              , value: value
	              , prefix: prefix
	              , local: local
	              , uri: uri
	              }

	      // if there's any attributes with an undefined namespace,
	      // then fail on them now.
	      if (prefix && prefix != "xmlns" && !uri) {
	        strictFail(parser, "Unbound namespace prefix: "
	                         + JSON.stringify(prefix))
	        a.uri = prefix
	      }
	      parser.tag.attributes[name] = a
	      emitNode(parser, "onattribute", a)
	    }
	    parser.attribList.length = 0
	  }

	  parser.tag.isSelfClosing = !!selfClosing

	  // process the tag
	  parser.sawRoot = true
	  parser.tags.push(parser.tag)
	  emitNode(parser, "onopentag", parser.tag)
	  if (!selfClosing) {
	    // special case for <script> in non-strict mode.
	    if (!parser.noscript && parser.tagName.toLowerCase() === "script") {
	      parser.state = S.SCRIPT
	    } else {
	      parser.state = S.TEXT
	    }
	    parser.tag = null
	    parser.tagName = ""
	  }
	  parser.attribName = parser.attribValue = ""
	  parser.attribList.length = 0
	}

	function closeTag (parser) {
	  if (!parser.tagName) {
	    strictFail(parser, "Weird empty close tag.")
	    parser.textNode += "</>"
	    parser.state = S.TEXT
	    return
	  }

	  if (parser.script) {
	    if (parser.tagName !== "script") {
	      parser.script += "</" + parser.tagName + ">"
	      parser.tagName = ""
	      parser.state = S.SCRIPT
	      return
	    }
	    emitNode(parser, "onscript", parser.script)
	    parser.script = ""
	  }

	  // first make sure that the closing tag actually exists.
	  // <a><b></c></b></a> will close everything, otherwise.
	  var t = parser.tags.length
	  var tagName = parser.tagName
	  if (!parser.strict) tagName = tagName[parser.looseCase]()
	  var closeTo = tagName
	  while (t --) {
	    var close = parser.tags[t]
	    if (close.name !== closeTo) {
	      // fail the first time in strict mode
	      strictFail(parser, "Unexpected close tag")
	    } else break
	  }

	  // didn't find it.  we already failed for strict, so just abort.
	  if (t < 0) {
	    strictFail(parser, "Unmatched closing tag: "+parser.tagName)
	    parser.textNode += "</" + parser.tagName + ">"
	    parser.state = S.TEXT
	    return
	  }
	  parser.tagName = tagName
	  var s = parser.tags.length
	  while (s --> t) {
	    var tag = parser.tag = parser.tags.pop()
	    parser.tagName = parser.tag.name
	    emitNode(parser, "onclosetag", parser.tagName)

	    var x = {}
	    for (var i in tag.ns) x[i] = tag.ns[i]

	    var parent = parser.tags[parser.tags.length - 1] || parser
	    if (parser.opt.xmlns && tag.ns !== parent.ns) {
	      // remove namespace bindings introduced by tag
	      Object.keys(tag.ns).forEach(function (p) {
	        var n = tag.ns[p]
	        emitNode(parser, "onclosenamespace", { prefix: p, uri: n })
	      })
	    }
	  }
	  if (t === 0) parser.closedRoot = true
	  parser.tagName = parser.attribValue = parser.attribName = ""
	  parser.attribList.length = 0
	  parser.state = S.TEXT
	}

	function parseEntity (parser) {
	  var entity = parser.entity
	    , entityLC = entity.toLowerCase()
	    , num
	    , numStr = ""
	  if (parser.ENTITIES[entity])
	    return parser.ENTITIES[entity]
	  if (parser.ENTITIES[entityLC])
	    return parser.ENTITIES[entityLC]
	  entity = entityLC
	  if (entity.charAt(0) === "#") {
	    if (entity.charAt(1) === "x") {
	      entity = entity.slice(2)
	      num = parseInt(entity, 16)
	      numStr = num.toString(16)
	    } else {
	      entity = entity.slice(1)
	      num = parseInt(entity, 10)
	      numStr = num.toString(10)
	    }
	  }
	  entity = entity.replace(/^0+/, "")
	  if (numStr.toLowerCase() !== entity) {
	    strictFail(parser, "Invalid character entity")
	    return "&"+parser.entity + ";"
	  }

	  return String.fromCodePoint(num)
	}

	function write (chunk) {
	  var parser = this
	  if (this.error) throw this.error
	  if (parser.closed) return error(parser,
	    "Cannot write after close. Assign an onready handler.")
	  if (chunk === null) return end(parser)
	  var i = 0, c = ""
	  while (parser.c = c = chunk.charAt(i++)) {
	    if (parser.trackPosition) {
	      parser.position ++
	      if (c === "\n") {
	        parser.line ++
	        parser.column = 0
	      } else parser.column ++
	    }
	    switch (parser.state) {

	      case S.BEGIN:
	        parser.state = S.BEGIN_WHITESPACE
	        if (c === "\uFEFF") {
	          continue;
	        }
	      // no continue - fall through

	      case S.BEGIN_WHITESPACE:
	        if (c === "<") {
	          parser.state = S.OPEN_WAKA
	          parser.startTagPosition = parser.position
	        } else if (not(whitespace,c)) {
	          // have to process this as a text node.
	          // weird, but happens.
	          strictFail(parser, "Non-whitespace before first tag.")
	          parser.textNode = c
	          parser.state = S.TEXT
	        }
	      continue

	      case S.TEXT:
	        if (parser.sawRoot && !parser.closedRoot) {
	          var starti = i-1
	          while (c && c!=="<" && c!=="&") {
	            c = chunk.charAt(i++)
	            if (c && parser.trackPosition) {
	              parser.position ++
	              if (c === "\n") {
	                parser.line ++
	                parser.column = 0
	              } else parser.column ++
	            }
	          }
	          parser.textNode += chunk.substring(starti, i-1)
	        }
	        if (c === "<" && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {
	          parser.state = S.OPEN_WAKA
	          parser.startTagPosition = parser.position
	        } else {
	          if (not(whitespace, c) && (!parser.sawRoot || parser.closedRoot))
	            strictFail(parser, "Text data outside of root node.")
	          if (c === "&") parser.state = S.TEXT_ENTITY
	          else parser.textNode += c
	        }
	      continue

	      case S.SCRIPT:
	        // only non-strict
	        if (c === "<") {
	          parser.state = S.SCRIPT_ENDING
	        } else parser.script += c
	      continue

	      case S.SCRIPT_ENDING:
	        if (c === "/") {
	          parser.state = S.CLOSE_TAG
	        } else {
	          parser.script += "<" + c
	          parser.state = S.SCRIPT
	        }
	      continue

	      case S.OPEN_WAKA:
	        // either a /, ?, !, or text is coming next.
	        if (c === "!") {
	          parser.state = S.SGML_DECL
	          parser.sgmlDecl = ""
	        } else if (is(whitespace, c)) {
	          // wait for it...
	        } else if (is(nameStart,c)) {
	          parser.state = S.OPEN_TAG
	          parser.tagName = c
	        } else if (c === "/") {
	          parser.state = S.CLOSE_TAG
	          parser.tagName = ""
	        } else if (c === "?") {
	          parser.state = S.PROC_INST
	          parser.procInstName = parser.procInstBody = ""
	        } else {
	          strictFail(parser, "Unencoded <")
	          // if there was some whitespace, then add that in.
	          if (parser.startTagPosition + 1 < parser.position) {
	            var pad = parser.position - parser.startTagPosition
	            c = new Array(pad).join(" ") + c
	          }
	          parser.textNode += "<" + c
	          parser.state = S.TEXT
	        }
	      continue

	      case S.SGML_DECL:
	        if ((parser.sgmlDecl+c).toUpperCase() === CDATA) {
	          emitNode(parser, "onopencdata")
	          parser.state = S.CDATA
	          parser.sgmlDecl = ""
	          parser.cdata = ""
	        } else if (parser.sgmlDecl+c === "--") {
	          parser.state = S.COMMENT
	          parser.comment = ""
	          parser.sgmlDecl = ""
	        } else if ((parser.sgmlDecl+c).toUpperCase() === DOCTYPE) {
	          parser.state = S.DOCTYPE
	          if (parser.doctype || parser.sawRoot) strictFail(parser,
	            "Inappropriately located doctype declaration")
	          parser.doctype = ""
	          parser.sgmlDecl = ""
	        } else if (c === ">") {
	          emitNode(parser, "onsgmldeclaration", parser.sgmlDecl)
	          parser.sgmlDecl = ""
	          parser.state = S.TEXT
	        } else if (is(quote, c)) {
	          parser.state = S.SGML_DECL_QUOTED
	          parser.sgmlDecl += c
	        } else parser.sgmlDecl += c
	      continue

	      case S.SGML_DECL_QUOTED:
	        if (c === parser.q) {
	          parser.state = S.SGML_DECL
	          parser.q = ""
	        }
	        parser.sgmlDecl += c
	      continue

	      case S.DOCTYPE:
	        if (c === ">") {
	          parser.state = S.TEXT
	          emitNode(parser, "ondoctype", parser.doctype)
	          parser.doctype = true // just remember that we saw it.
	        } else {
	          parser.doctype += c
	          if (c === "[") parser.state = S.DOCTYPE_DTD
	          else if (is(quote, c)) {
	            parser.state = S.DOCTYPE_QUOTED
	            parser.q = c
	          }
	        }
	      continue

	      case S.DOCTYPE_QUOTED:
	        parser.doctype += c
	        if (c === parser.q) {
	          parser.q = ""
	          parser.state = S.DOCTYPE
	        }
	      continue

	      case S.DOCTYPE_DTD:
	        parser.doctype += c
	        if (c === "]") parser.state = S.DOCTYPE
	        else if (is(quote,c)) {
	          parser.state = S.DOCTYPE_DTD_QUOTED
	          parser.q = c
	        }
	      continue

	      case S.DOCTYPE_DTD_QUOTED:
	        parser.doctype += c
	        if (c === parser.q) {
	          parser.state = S.DOCTYPE_DTD
	          parser.q = ""
	        }
	      continue

	      case S.COMMENT:
	        if (c === "-") parser.state = S.COMMENT_ENDING
	        else parser.comment += c
	      continue

	      case S.COMMENT_ENDING:
	        if (c === "-") {
	          parser.state = S.COMMENT_ENDED
	          parser.comment = textopts(parser.opt, parser.comment)
	          if (parser.comment) emitNode(parser, "oncomment", parser.comment)
	          parser.comment = ""
	        } else {
	          parser.comment += "-" + c
	          parser.state = S.COMMENT
	        }
	      continue

	      case S.COMMENT_ENDED:
	        if (c !== ">") {
	          strictFail(parser, "Malformed comment")
	          // allow <!-- blah -- bloo --> in non-strict mode,
	          // which is a comment of " blah -- bloo "
	          parser.comment += "--" + c
	          parser.state = S.COMMENT
	        } else parser.state = S.TEXT
	      continue

	      case S.CDATA:
	        if (c === "]") parser.state = S.CDATA_ENDING
	        else parser.cdata += c
	      continue

	      case S.CDATA_ENDING:
	        if (c === "]") parser.state = S.CDATA_ENDING_2
	        else {
	          parser.cdata += "]" + c
	          parser.state = S.CDATA
	        }
	      continue

	      case S.CDATA_ENDING_2:
	        if (c === ">") {
	          if (parser.cdata) emitNode(parser, "oncdata", parser.cdata)
	          emitNode(parser, "onclosecdata")
	          parser.cdata = ""
	          parser.state = S.TEXT
	        } else if (c === "]") {
	          parser.cdata += "]"
	        } else {
	          parser.cdata += "]]" + c
	          parser.state = S.CDATA
	        }
	      continue

	      case S.PROC_INST:
	        if (c === "?") parser.state = S.PROC_INST_ENDING
	        else if (is(whitespace, c)) parser.state = S.PROC_INST_BODY
	        else parser.procInstName += c
	      continue

	      case S.PROC_INST_BODY:
	        if (!parser.procInstBody && is(whitespace, c)) continue
	        else if (c === "?") parser.state = S.PROC_INST_ENDING
	        else parser.procInstBody += c
	      continue

	      case S.PROC_INST_ENDING:
	        if (c === ">") {
	          emitNode(parser, "onprocessinginstruction", {
	            name : parser.procInstName,
	            body : parser.procInstBody
	          })
	          parser.procInstName = parser.procInstBody = ""
	          parser.state = S.TEXT
	        } else {
	          parser.procInstBody += "?" + c
	          parser.state = S.PROC_INST_BODY
	        }
	      continue

	      case S.OPEN_TAG:
	        if (is(nameBody, c)) parser.tagName += c
	        else {
	          newTag(parser)
	          if (c === ">") openTag(parser)
	          else if (c === "/") parser.state = S.OPEN_TAG_SLASH
	          else {
	            if (not(whitespace, c)) strictFail(
	              parser, "Invalid character in tag name")
	            parser.state = S.ATTRIB
	          }
	        }
	      continue

	      case S.OPEN_TAG_SLASH:
	        if (c === ">") {
	          openTag(parser, true)
	          closeTag(parser)
	        } else {
	          strictFail(parser, "Forward-slash in opening tag not followed by >")
	          parser.state = S.ATTRIB
	        }
	      continue

	      case S.ATTRIB:
	        // haven't read the attribute name yet.
	        if (is(whitespace, c)) continue
	        else if (c === ">") openTag(parser)
	        else if (c === "/") parser.state = S.OPEN_TAG_SLASH
	        else if (is(nameStart, c)) {
	          parser.attribName = c
	          parser.attribValue = ""
	          parser.state = S.ATTRIB_NAME
	        } else strictFail(parser, "Invalid attribute name")
	      continue

	      case S.ATTRIB_NAME:
	        if (c === "=") parser.state = S.ATTRIB_VALUE
	        else if (c === ">") {
	          strictFail(parser, "Attribute without value")
	          parser.attribValue = parser.attribName
	          attrib(parser)
	          openTag(parser)
	        }
	        else if (is(whitespace, c)) parser.state = S.ATTRIB_NAME_SAW_WHITE
	        else if (is(nameBody, c)) parser.attribName += c
	        else strictFail(parser, "Invalid attribute name")
	      continue

	      case S.ATTRIB_NAME_SAW_WHITE:
	        if (c === "=") parser.state = S.ATTRIB_VALUE
	        else if (is(whitespace, c)) continue
	        else {
	          strictFail(parser, "Attribute without value")
	          parser.tag.attributes[parser.attribName] = ""
	          parser.attribValue = ""
	          emitNode(parser, "onattribute",
	                   { name : parser.attribName, value : "" })
	          parser.attribName = ""
	          if (c === ">") openTag(parser)
	          else if (is(nameStart, c)) {
	            parser.attribName = c
	            parser.state = S.ATTRIB_NAME
	          } else {
	            strictFail(parser, "Invalid attribute name")
	            parser.state = S.ATTRIB
	          }
	        }
	      continue

	      case S.ATTRIB_VALUE:
	        if (is(whitespace, c)) continue
	        else if (is(quote, c)) {
	          parser.q = c
	          parser.state = S.ATTRIB_VALUE_QUOTED
	        } else {
	          strictFail(parser, "Unquoted attribute value")
	          parser.state = S.ATTRIB_VALUE_UNQUOTED
	          parser.attribValue = c
	        }
	      continue

	      case S.ATTRIB_VALUE_QUOTED:
	        if (c !== parser.q) {
	          if (c === "&") parser.state = S.ATTRIB_VALUE_ENTITY_Q
	          else parser.attribValue += c
	          continue
	        }
	        attrib(parser)
	        parser.q = ""
	        parser.state = S.ATTRIB_VALUE_CLOSED
	      continue

	      case S.ATTRIB_VALUE_CLOSED:
	        if (is(whitespace, c)) {
	          parser.state = S.ATTRIB
	        } else if (c === ">") openTag(parser)
	        else if (c === "/") parser.state = S.OPEN_TAG_SLASH
	        else if (is(nameStart, c)) {
	          strictFail(parser, "No whitespace between attributes")
	          parser.attribName = c
	          parser.attribValue = ""
	          parser.state = S.ATTRIB_NAME
	        } else strictFail(parser, "Invalid attribute name")
	      continue

	      case S.ATTRIB_VALUE_UNQUOTED:
	        if (not(attribEnd,c)) {
	          if (c === "&") parser.state = S.ATTRIB_VALUE_ENTITY_U
	          else parser.attribValue += c
	          continue
	        }
	        attrib(parser)
	        if (c === ">") openTag(parser)
	        else parser.state = S.ATTRIB
	      continue

	      case S.CLOSE_TAG:
	        if (!parser.tagName) {
	          if (is(whitespace, c)) continue
	          else if (not(nameStart, c)) {
	            if (parser.script) {
	              parser.script += "</" + c
	              parser.state = S.SCRIPT
	            } else {
	              strictFail(parser, "Invalid tagname in closing tag.")
	            }
	          } else parser.tagName = c
	        }
	        else if (c === ">") closeTag(parser)
	        else if (is(nameBody, c)) parser.tagName += c
	        else if (parser.script) {
	          parser.script += "</" + parser.tagName
	          parser.tagName = ""
	          parser.state = S.SCRIPT
	        } else {
	          if (not(whitespace, c)) strictFail(parser,
	            "Invalid tagname in closing tag")
	          parser.state = S.CLOSE_TAG_SAW_WHITE
	        }
	      continue

	      case S.CLOSE_TAG_SAW_WHITE:
	        if (is(whitespace, c)) continue
	        if (c === ">") closeTag(parser)
	        else strictFail(parser, "Invalid characters in closing tag")
	      continue

	      case S.TEXT_ENTITY:
	      case S.ATTRIB_VALUE_ENTITY_Q:
	      case S.ATTRIB_VALUE_ENTITY_U:
	        switch(parser.state) {
	          case S.TEXT_ENTITY:
	            var returnState = S.TEXT, buffer = "textNode"
	          break

	          case S.ATTRIB_VALUE_ENTITY_Q:
	            var returnState = S.ATTRIB_VALUE_QUOTED, buffer = "attribValue"
	          break

	          case S.ATTRIB_VALUE_ENTITY_U:
	            var returnState = S.ATTRIB_VALUE_UNQUOTED, buffer = "attribValue"
	          break
	        }
	        if (c === ";") {
	          parser[buffer] += parseEntity(parser)
	          parser.entity = ""
	          parser.state = returnState
	        }
	        else if (is(entity, c)) parser.entity += c
	        else {
	          strictFail(parser, "Invalid character entity")
	          parser[buffer] += "&" + parser.entity + c
	          parser.entity = ""
	          parser.state = returnState
	        }
	      continue

	      default:
	        throw new Error(parser, "Unknown state: " + parser.state)
	    }
	  } // while
	  // cdata blocks can get very big under normal conditions. emit and move on.
	  // if (parser.state === S.CDATA && parser.cdata) {
	  //   emitNode(parser, "oncdata", parser.cdata)
	  //   parser.cdata = ""
	  // }
	  if (parser.position >= parser.bufferCheckPosition) checkBufferLength(parser)
	  return parser
	}

	/*! http://mths.be/fromcodepoint v0.1.0 by @mathias */
	if (!String.fromCodePoint) {
	        (function() {
	                var stringFromCharCode = String.fromCharCode;
	                var floor = Math.floor;
	                var fromCodePoint = function() {
	                        var MAX_SIZE = 0x4000;
	                        var codeUnits = [];
	                        var highSurrogate;
	                        var lowSurrogate;
	                        var index = -1;
	                        var length = arguments.length;
	                        if (!length) {
	                                return '';
	                        }
	                        var result = '';
	                        while (++index < length) {
	                                var codePoint = Number(arguments[index]);
	                                if (
	                                        !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`
	                                        codePoint < 0 || // not a valid Unicode code point
	                                        codePoint > 0x10FFFF || // not a valid Unicode code point
	                                        floor(codePoint) != codePoint // not an integer
	                                ) {
	                                        throw RangeError('Invalid code point: ' + codePoint);
	                                }
	                                if (codePoint <= 0xFFFF) { // BMP code point
	                                        codeUnits.push(codePoint);
	                                } else { // Astral code point; split in surrogate halves
	                                        // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
	                                        codePoint -= 0x10000;
	                                        highSurrogate = (codePoint >> 10) + 0xD800;
	                                        lowSurrogate = (codePoint % 0x400) + 0xDC00;
	                                        codeUnits.push(highSurrogate, lowSurrogate);
	                                }
	                                if (index + 1 == length || codeUnits.length > MAX_SIZE) {
	                                        result += stringFromCharCode.apply(null, codeUnits);
	                                        codeUnits.length = 0;
	                                }
	                        }
	                        return result;
	                };
	                if (Object.defineProperty) {
	                        Object.defineProperty(String, 'fromCodePoint', {
	                                'value': fromCodePoint,
	                                'configurable': true,
	                                'writable': true
	                        });
	                } else {
	                        String.fromCodePoint = fromCodePoint;
	                }
	        }());
	}

	})( false ? sax = {} : exports);
	/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(306).Buffer))

/***/ }),

/***/ "contrib/underscore":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;//     Underscore.js 1.6.0
	//     http://underscorejs.org
	//     (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
	//     Underscore may be freely distributed under the MIT license.

	(function() {

	  // Baseline setup
	  // --------------

	  // Establish the root object, `window` in the browser, or `exports` on the server.
	  var root = this;

	  // Save the previous value of the `_` variable.
	  var previousUnderscore = root._;

	  // Establish the object that gets returned to break out of a loop iteration.
	  var breaker = {};

	  // Save bytes in the minified (but not gzipped) version:
	  var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;

	  // Create quick reference variables for speed access to core prototypes.
	  var
	    push             = ArrayProto.push,
	    slice            = ArrayProto.slice,
	    concat           = ArrayProto.concat,
	    toString         = ObjProto.toString,
	    hasOwnProperty   = ObjProto.hasOwnProperty;

	  // All **ECMAScript 5** native function implementations that we hope to use
	  // are declared here.
	  var
	    nativeForEach      = ArrayProto.forEach,
	    nativeMap          = ArrayProto.map,
	    nativeReduce       = ArrayProto.reduce,
	    nativeReduceRight  = ArrayProto.reduceRight,
	    nativeFilter       = ArrayProto.filter,
	    nativeEvery        = ArrayProto.every,
	    nativeSome         = ArrayProto.some,
	    nativeIndexOf      = ArrayProto.indexOf,
	    nativeLastIndexOf  = ArrayProto.lastIndexOf,
	    nativeIsArray      = Array.isArray,
	    nativeKeys         = Object.keys,
	    nativeBind         = FuncProto.bind;

	  // Create a safe reference to the Underscore object for use below.
	  var _ = function(obj) {
	    if (obj instanceof _) return obj;
	    if (!(this instanceof _)) return new _(obj);
	    this._wrapped = obj;
	  };

	  // Export the Underscore object for **Node.js**, with
	  // backwards-compatibility for the old `require()` API. If we're in
	  // the browser, add `_` as a global object via a string identifier,
	  // for Closure Compiler "advanced" mode.
	  if (true) {
	    if (typeof module !== 'undefined' && module.exports) {
	      exports = module.exports = _;
	    }
	    exports._ = _;
	  } else {
	    root._ = _;
	  }

	  // Current version.
	  _.VERSION = '1.6.0';

	  // Collection Functions
	  // --------------------

	  // The cornerstone, an `each` implementation, aka `forEach`.
	  // Handles objects with the built-in `forEach`, arrays, and raw objects.
	  // Delegates to **ECMAScript 5**'s native `forEach` if available.
	  var each = _.each = _.forEach = function(obj, iterator, context) {
	    if (obj == null) return obj;
	    if (nativeForEach && obj.forEach === nativeForEach) {
	      obj.forEach(iterator, context);
	    } else if (obj.length === +obj.length) {
	      for (var i = 0, length = obj.length; i < length; i++) {
	        if (iterator.call(context, obj[i], i, obj) === breaker) return;
	      }
	    } else {
	      var keys = _.keys(obj);
	      for (var i = 0, length = keys.length; i < length; i++) {
	        if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
	      }
	    }
	    return obj;
	  };

	  // Return the results of applying the iterator to each element.
	  // Delegates to **ECMAScript 5**'s native `map` if available.
	  _.map = _.collect = function(obj, iterator, context) {
	    var results = [];
	    if (obj == null) return results;
	    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
	    each(obj, function(value, index, list) {
	      results.push(iterator.call(context, value, index, list));
	    });
	    return results;
	  };

	  var reduceError = 'Reduce of empty array with no initial value';

	  // **Reduce** builds up a single result from a list of values, aka `inject`,
	  // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
	  _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
	    var initial = arguments.length > 2;
	    if (obj == null) obj = [];
	    if (nativeReduce && obj.reduce === nativeReduce) {
	      if (context) iterator = _.bind(iterator, context);
	      return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
	    }
	    each(obj, function(value, index, list) {
	      if (!initial) {
	        memo = value;
	        initial = true;
	      } else {
	        memo = iterator.call(context, memo, value, index, list);
	      }
	    });
	    if (!initial) throw new TypeError(reduceError);
	    return memo;
	  };

	  // The right-associative version of reduce, also known as `foldr`.
	  // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
	  _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
	    var initial = arguments.length > 2;
	    if (obj == null) obj = [];
	    if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
	      if (context) iterator = _.bind(iterator, context);
	      return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
	    }
	    var length = obj.length;
	    if (length !== +length) {
	      var keys = _.keys(obj);
	      length = keys.length;
	    }
	    each(obj, function(value, index, list) {
	      index = keys ? keys[--length] : --length;
	      if (!initial) {
	        memo = obj[index];
	        initial = true;
	      } else {
	        memo = iterator.call(context, memo, obj[index], index, list);
	      }
	    });
	    if (!initial) throw new TypeError(reduceError);
	    return memo;
	  };

	  // Return the first value which passes a truth test. Aliased as `detect`.
	  _.find = _.detect = function(obj, predicate, context) {
	    var result;
	    any(obj, function(value, index, list) {
	      if (predicate.call(context, value, index, list)) {
	        result = value;
	        return true;
	      }
	    });
	    return result;
	  };

	  // Return all the elements that pass a truth test.
	  // Delegates to **ECMAScript 5**'s native `filter` if available.
	  // Aliased as `select`.
	  _.filter = _.select = function(obj, predicate, context) {
	    var results = [];
	    if (obj == null) return results;
	    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
	    each(obj, function(value, index, list) {
	      if (predicate.call(context, value, index, list)) results.push(value);
	    });
	    return results;
	  };

	  // Return all the elements for which a truth test fails.
	  _.reject = function(obj, predicate, context) {
	    return _.filter(obj, function(value, index, list) {
	      return !predicate.call(context, value, index, list);
	    }, context);
	  };

	  // Determine whether all of the elements match a truth test.
	  // Delegates to **ECMAScript 5**'s native `every` if available.
	  // Aliased as `all`.
	  _.every = _.all = function(obj, predicate, context) {
	    predicate || (predicate = _.identity);
	    var result = true;
	    if (obj == null) return result;
	    if (nativeEvery && obj.every === nativeEvery) return obj.every(predicate, context);
	    each(obj, function(value, index, list) {
	      if (!(result = result && predicate.call(context, value, index, list))) return breaker;
	    });
	    return !!result;
	  };

	  // Determine if at least one element in the object matches a truth test.
	  // Delegates to **ECMAScript 5**'s native `some` if available.
	  // Aliased as `any`.
	  var any = _.some = _.any = function(obj, predicate, context) {
	    predicate || (predicate = _.identity);
	    var result = false;
	    if (obj == null) return result;
	    if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
	    each(obj, function(value, index, list) {
	      if (result || (result = predicate.call(context, value, index, list))) return breaker;
	    });
	    return !!result;
	  };

	  // Determine if the array or object contains a given value (using `===`).
	  // Aliased as `include`.
	  _.contains = _.include = function(obj, target) {
	    if (obj == null) return false;
	    if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
	    return any(obj, function(value) {
	      return value === target;
	    });
	  };

	  // Invoke a method (with arguments) on every item in a collection.
	  _.invoke = function(obj, method) {
	    var args = slice.call(arguments, 2);
	    var isFunc = _.isFunction(method);
	    return _.map(obj, function(value) {
	      return (isFunc ? method : value[method]).apply(value, args);
	    });
	  };

	  // Convenience version of a common use case of `map`: fetching a property.
	  _.pluck = function(obj, key) {
	    return _.map(obj, _.property(key));
	  };

	  // Convenience version of a common use case of `filter`: selecting only objects
	  // containing specific `key:value` pairs.
	  _.where = function(obj, attrs) {
	    return _.filter(obj, _.matches(attrs));
	  };

	  // Convenience version of a common use case of `find`: getting the first object
	  // containing specific `key:value` pairs.
	  _.findWhere = function(obj, attrs) {
	    return _.find(obj, _.matches(attrs));
	  };

	  // Return the maximum element or (element-based computation).
	  // Can't optimize arrays of integers longer than 65,535 elements.
	  // See [WebKit Bug 80797](https://bugs.webkit.org/show_bug.cgi?id=80797)
	  _.max = function(obj, iterator, context) {
	    if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
	      return Math.max.apply(Math, obj);
	    }
	    var result = -Infinity, lastComputed = -Infinity;
	    each(obj, function(value, index, list) {
	      var computed = iterator ? iterator.call(context, value, index, list) : value;
	      if (computed > lastComputed) {
	        result = value;
	        lastComputed = computed;
	      }
	    });
	    return result;
	  };

	  // Return the minimum element (or element-based computation).
	  _.min = function(obj, iterator, context) {
	    if (!iterator && _.isArray(obj) && obj[0] === +obj[0] && obj.length < 65535) {
	      return Math.min.apply(Math, obj);
	    }
	    var result = Infinity, lastComputed = Infinity;
	    each(obj, function(value, index, list) {
	      var computed = iterator ? iterator.call(context, value, index, list) : value;
	      if (computed < lastComputed) {
	        result = value;
	        lastComputed = computed;
	      }
	    });
	    return result;
	  };

	  // Shuffle an array, using the modern version of the
	  // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).
	  _.shuffle = function(obj) {
	    var rand;
	    var index = 0;
	    var shuffled = [];
	    each(obj, function(value) {
	      rand = _.random(index++);
	      shuffled[index - 1] = shuffled[rand];
	      shuffled[rand] = value;
	    });
	    return shuffled;
	  };

	  // Sample **n** random values from a collection.
	  // If **n** is not specified, returns a single random element.
	  // The internal `guard` argument allows it to work with `map`.
	  _.sample = function(obj, n, guard) {
	    if (n == null || guard) {
	      if (obj.length !== +obj.length) obj = _.values(obj);
	      return obj[_.random(obj.length - 1)];
	    }
	    return _.shuffle(obj).slice(0, Math.max(0, n));
	  };

	  // An internal function to generate lookup iterators.
	  var lookupIterator = function(value) {
	    if (value == null) return _.identity;
	    if (_.isFunction(value)) return value;
	    return _.property(value);
	  };

	  // Sort the object's values by a criterion produced by an iterator.
	  _.sortBy = function(obj, iterator, context) {
	    iterator = lookupIterator(iterator);
	    return _.pluck(_.map(obj, function(value, index, list) {
	      return {
	        value: value,
	        index: index,
	        criteria: iterator.call(context, value, index, list)
	      };
	    }).sort(function(left, right) {
	      var a = left.criteria;
	      var b = right.criteria;
	      if (a !== b) {
	        if (a > b || a === void 0) return 1;
	        if (a < b || b === void 0) return -1;
	      }
	      return left.index - right.index;
	    }), 'value');
	  };

	  // An internal function used for aggregate "group by" operations.
	  var group = function(behavior) {
	    return function(obj, iterator, context) {
	      var result = {};
	      iterator = lookupIterator(iterator);
	      each(obj, function(value, index) {
	        var key = iterator.call(context, value, index, obj);
	        behavior(result, key, value);
	      });
	      return result;
	    };
	  };

	  // Groups the object's values by a criterion. Pass either a string attribute
	  // to group by, or a function that returns the criterion.
	  _.groupBy = group(function(result, key, value) {
	    _.has(result, key) ? result[key].push(value) : result[key] = [value];
	  });

	  // Indexes the object's values by a criterion, similar to `groupBy`, but for
	  // when you know that your index values will be unique.
	  _.indexBy = group(function(result, key, value) {
	    result[key] = value;
	  });

	  // Counts instances of an object that group by a certain criterion. Pass
	  // either a string attribute to count by, or a function that returns the
	  // criterion.
	  _.countBy = group(function(result, key) {
	    _.has(result, key) ? result[key]++ : result[key] = 1;
	  });

	  // Use a comparator function to figure out the smallest index at which
	  // an object should be inserted so as to maintain order. Uses binary search.
	  _.sortedIndex = function(array, obj, iterator, context) {
	    iterator = lookupIterator(iterator);
	    var value = iterator.call(context, obj);
	    var low = 0, high = array.length;
	    while (low < high) {
	      var mid = (low + high) >>> 1;
	      iterator.call(context, array[mid]) < value ? low = mid + 1 : high = mid;
	    }
	    return low;
	  };

	  // Safely create a real, live array from anything iterable.
	  _.toArray = function(obj) {
	    if (!obj) return [];
	    if (_.isArray(obj)) return slice.call(obj);
	    if (obj.length === +obj.length) return _.map(obj, _.identity);
	    return _.values(obj);
	  };

	  // Return the number of elements in an object.
	  _.size = function(obj) {
	    if (obj == null) return 0;
	    return (obj.length === +obj.length) ? obj.length : _.keys(obj).length;
	  };

	  // Array Functions
	  // ---------------

	  // Get the first element of an array. Passing **n** will return the first N
	  // values in the array. Aliased as `head` and `take`. The **guard** check
	  // allows it to work with `_.map`.
	  _.first = _.head = _.take = function(array, n, guard) {
	    if (array == null) return void 0;
	    if ((n == null) || guard) return array[0];
	    if (n < 0) return [];
	    return slice.call(array, 0, n);
	  };

	  // Returns everything but the last entry of the array. Especially useful on
	  // the arguments object. Passing **n** will return all the values in
	  // the array, excluding the last N. The **guard** check allows it to work with
	  // `_.map`.
	  _.initial = function(array, n, guard) {
	    return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
	  };

	  // Get the last element of an array. Passing **n** will return the last N
	  // values in the array. The **guard** check allows it to work with `_.map`.
	  _.last = function(array, n, guard) {
	    if (array == null) return void 0;
	    if ((n == null) || guard) return array[array.length - 1];
	    return slice.call(array, Math.max(array.length - n, 0));
	  };

	  // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.
	  // Especially useful on the arguments object. Passing an **n** will return
	  // the rest N values in the array. The **guard**
	  // check allows it to work with `_.map`.
	  _.rest = _.tail = _.drop = function(array, n, guard) {
	    return slice.call(array, (n == null) || guard ? 1 : n);
	  };

	  // Trim out all falsy values from an array.
	  _.compact = function(array) {
	    return _.filter(array, _.identity);
	  };

	  // Internal implementation of a recursive `flatten` function.
	  var flatten = function(input, shallow, output) {
	    if (shallow && _.every(input, _.isArray)) {
	      return concat.apply(output, input);
	    }
	    each(input, function(value) {
	      if (_.isArray(value) || _.isArguments(value)) {
	        shallow ? push.apply(output, value) : flatten(value, shallow, output);
	      } else {
	        output.push(value);
	      }
	    });
	    return output;
	  };

	  // Flatten out an array, either recursively (by default), or just one level.
	  _.flatten = function(array, shallow) {
	    return flatten(array, shallow, []);
	  };

	  // Return a version of the array that does not contain the specified value(s).
	  _.without = function(array) {
	    return _.difference(array, slice.call(arguments, 1));
	  };

	  // Split an array into two arrays: one whose elements all satisfy the given
	  // predicate, and one whose elements all do not satisfy the predicate.
	  _.partition = function(array, predicate, context) {
	    predicate = lookupIterator(predicate);
	    var pass = [], fail = [];
	    each(array, function(elem) {
	      (predicate.call(context, elem) ? pass : fail).push(elem);
	    });
	    return [pass, fail];
	  };

	  // Produce a duplicate-free version of the array. If the array has already
	  // been sorted, you have the option of using a faster algorithm.
	  // Aliased as `unique`.
	  _.uniq = _.unique = function(array, isSorted, iterator, context) {
	    if (_.isFunction(isSorted)) {
	      context = iterator;
	      iterator = isSorted;
	      isSorted = false;
	    }
	    var initial = iterator ? _.map(array, iterator, context) : array;
	    var results = [];
	    var seen = [];
	    each(initial, function(value, index) {
	      if (isSorted ? (!index || seen[seen.length - 1] !== value) : !_.contains(seen, value)) {
	        seen.push(value);
	        results.push(array[index]);
	      }
	    });
	    return results;
	  };

	  // Produce an array that contains the union: each distinct element from all of
	  // the passed-in arrays.
	  _.union = function() {
	    return _.uniq(_.flatten(arguments, true));
	  };

	  // Produce an array that contains every item shared between all the
	  // passed-in arrays.
	  _.intersection = function(array) {
	    var rest = slice.call(arguments, 1);
	    return _.filter(_.uniq(array), function(item) {
	      return _.every(rest, function(other) {
	        return _.contains(other, item);
	      });
	    });
	  };

	  // Take the difference between one array and a number of other arrays.
	  // Only the elements present in just the first array will remain.
	  _.difference = function(array) {
	    var rest = concat.apply(ArrayProto, slice.call(arguments, 1));
	    return _.filter(array, function(value){ return !_.contains(rest, value); });
	  };

	  // Zip together multiple lists into a single array -- elements that share
	  // an index go together.
	  _.zip = function() {
	    var length = _.max(_.pluck(arguments, 'length').concat(0));
	    var results = new Array(length);
	    for (var i = 0; i < length; i++) {
	      results[i] = _.pluck(arguments, '' + i);
	    }
	    return results;
	  };

	  // Converts lists into objects. Pass either a single array of `[key, value]`
	  // pairs, or two parallel arrays of the same length -- one of keys, and one of
	  // the corresponding values.
	  _.object = function(list, values) {
	    if (list == null) return {};
	    var result = {};
	    for (var i = 0, length = list.length; i < length; i++) {
	      if (values) {
	        result[list[i]] = values[i];
	      } else {
	        result[list[i][0]] = list[i][1];
	      }
	    }
	    return result;
	  };

	  // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
	  // we need this function. Return the position of the first occurrence of an
	  // item in an array, or -1 if the item is not included in the array.
	  // Delegates to **ECMAScript 5**'s native `indexOf` if available.
	  // If the array is large and already in sort order, pass `true`
	  // for **isSorted** to use binary search.
	  _.indexOf = function(array, item, isSorted) {
	    if (array == null) return -1;
	    var i = 0, length = array.length;
	    if (isSorted) {
	      if (typeof isSorted == 'number') {
	        i = (isSorted < 0 ? Math.max(0, length + isSorted) : isSorted);
	      } else {
	        i = _.sortedIndex(array, item);
	        return array[i] === item ? i : -1;
	      }
	    }
	    if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item, isSorted);
	    for (; i < length; i++) if (array[i] === item) return i;
	    return -1;
	  };

	  // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
	  _.lastIndexOf = function(array, item, from) {
	    if (array == null) return -1;
	    var hasIndex = from != null;
	    if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) {
	      return hasIndex ? array.lastIndexOf(item, from) : array.lastIndexOf(item);
	    }
	    var i = (hasIndex ? from : array.length);
	    while (i--) if (array[i] === item) return i;
	    return -1;
	  };

	  // Generate an integer Array containing an arithmetic progression. A port of
	  // the native Python `range()` function. See
	  // [the Python documentation](http://docs.python.org/library/functions.html#range).
	  _.range = function(start, stop, step) {
	    if (arguments.length <= 1) {
	      stop = start || 0;
	      start = 0;
	    }
	    step = arguments[2] || 1;

	    var length = Math.max(Math.ceil((stop - start) / step), 0);
	    var idx = 0;
	    var range = new Array(length);

	    while(idx < length) {
	      range[idx++] = start;
	      start += step;
	    }

	    return range;
	  };

	  // Function (ahem) Functions
	  // ------------------

	  // Reusable constructor function for prototype setting.
	  var ctor = function(){};

	  // Create a function bound to a given object (assigning `this`, and arguments,
	  // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
	  // available.
	  _.bind = function(func, context) {
	    var args, bound;
	    if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
	    if (!_.isFunction(func)) throw new TypeError;
	    args = slice.call(arguments, 2);
	    return bound = function() {
	      if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
	      ctor.prototype = func.prototype;
	      var self = new ctor;
	      ctor.prototype = null;
	      var result = func.apply(self, args.concat(slice.call(arguments)));
	      if (Object(result) === result) return result;
	      return self;
	    };
	  };

	  // Partially apply a function by creating a version that has had some of its
	  // arguments pre-filled, without changing its dynamic `this` context. _ acts
	  // as a placeholder, allowing any combination of arguments to be pre-filled.
	  _.partial = function(func) {
	    var boundArgs = slice.call(arguments, 1);
	    return function() {
	      var position = 0;
	      var args = boundArgs.slice();
	      for (var i = 0, length = args.length; i < length; i++) {
	        if (args[i] === _) args[i] = arguments[position++];
	      }
	      while (position < arguments.length) args.push(arguments[position++]);
	      return func.apply(this, args);
	    };
	  };

	  // Bind a number of an object's methods to that object. Remaining arguments
	  // are the method names to be bound. Useful for ensuring that all callbacks
	  // defined on an object belong to it.
	  _.bindAll = function(obj) {
	    var funcs = slice.call(arguments, 1);
	    if (funcs.length === 0) throw new Error('bindAll must be passed function names');
	    each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
	    return obj;
	  };

	  // Memoize an expensive function by storing its results.
	  _.memoize = function(func, hasher) {
	    var memo = {};
	    hasher || (hasher = _.identity);
	    return function() {
	      var key = hasher.apply(this, arguments);
	      return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
	    };
	  };

	  // Delays a function for the given number of milliseconds, and then calls
	  // it with the arguments supplied.
	  _.delay = function(func, wait) {
	    var args = slice.call(arguments, 2);
	    return setTimeout(function(){ return func.apply(null, args); }, wait);
	  };

	  // Defers a function, scheduling it to run after the current call stack has
	  // cleared.
	  _.defer = function(func) {
	    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
	  };

	  // Returns a function, that, when invoked, will only be triggered at most once
	  // during a given window of time. Normally, the throttled function will run
	  // as much as it can, without ever going more than once per `wait` duration;
	  // but if you'd like to disable the execution on the leading edge, pass
	  // `{leading: false}`. To disable execution on the trailing edge, ditto.
	  _.throttle = function(func, wait, options) {
	    var context, args, result;
	    var timeout = null;
	    var previous = 0;
	    options || (options = {});
	    var later = function() {
	      previous = options.leading === false ? 0 : _.now();
	      timeout = null;
	      result = func.apply(context, args);
	      context = args = null;
	    };
	    return function() {
	      var now = _.now();
	      if (!previous && options.leading === false) previous = now;
	      var remaining = wait - (now - previous);
	      context = this;
	      args = arguments;
	      if (remaining <= 0) {
	        clearTimeout(timeout);
	        timeout = null;
	        previous = now;
	        result = func.apply(context, args);
	        context = args = null;
	      } else if (!timeout && options.trailing !== false) {
	        timeout = setTimeout(later, remaining);
	      }
	      return result;
	    };
	  };

	  // Returns a function, that, as long as it continues to be invoked, will not
	  // be triggered. The function will be called after it stops being called for
	  // N milliseconds. If `immediate` is passed, trigger the function on the
	  // leading edge, instead of the trailing.
	  _.debounce = function(func, wait, immediate) {
	    var timeout, args, context, timestamp, result;

	    var later = function() {
	      var last = _.now() - timestamp;
	      if (last < wait) {
	        timeout = setTimeout(later, wait - last);
	      } else {
	        timeout = null;
	        if (!immediate) {
	          result = func.apply(context, args);
	          context = args = null;
	        }
	      }
	    };

	    return function() {
	      context = this;
	      args = arguments;
	      timestamp = _.now();
	      var callNow = immediate && !timeout;
	      if (!timeout) {
	        timeout = setTimeout(later, wait);
	      }
	      if (callNow) {
	        result = func.apply(context, args);
	        context = args = null;
	      }

	      return result;
	    };
	  };

	  // Returns a function that will be executed at most one time, no matter how
	  // often you call it. Useful for lazy initialization.
	  _.once = function(func) {
	    var ran = false, memo;
	    return function() {
	      if (ran) return memo;
	      ran = true;
	      memo = func.apply(this, arguments);
	      func = null;
	      return memo;
	    };
	  };

	  // Returns the first function passed as an argument to the second,
	  // allowing you to adjust arguments, run code before and after, and
	  // conditionally execute the original function.
	  _.wrap = function(func, wrapper) {
	    return _.partial(wrapper, func);
	  };

	  // Returns a function that is the composition of a list of functions, each
	  // consuming the return value of the function that follows.
	  _.compose = function() {
	    var funcs = arguments;
	    return function() {
	      var args = arguments;
	      for (var i = funcs.length - 1; i >= 0; i--) {
	        args = [funcs[i].apply(this, args)];
	      }
	      return args[0];
	    };
	  };

	  // Returns a function that will only be executed after being called N times.
	  _.after = function(times, func) {
	    return function() {
	      if (--times < 1) {
	        return func.apply(this, arguments);
	      }
	    };
	  };

	  // Object Functions
	  // ----------------

	  // Retrieve the names of an object's properties.
	  // Delegates to **ECMAScript 5**'s native `Object.keys`
	  _.keys = function(obj) {
	    if (!_.isObject(obj)) return [];
	    if (nativeKeys) return nativeKeys(obj);
	    var keys = [];
	    for (var key in obj) if (_.has(obj, key)) keys.push(key);
	    return keys;
	  };

	  // Retrieve the values of an object's properties.
	  _.values = function(obj) {
	    var keys = _.keys(obj);
	    var length = keys.length;
	    var values = new Array(length);
	    for (var i = 0; i < length; i++) {
	      values[i] = obj[keys[i]];
	    }
	    return values;
	  };

	  // Convert an object into a list of `[key, value]` pairs.
	  _.pairs = function(obj) {
	    var keys = _.keys(obj);
	    var length = keys.length;
	    var pairs = new Array(length);
	    for (var i = 0; i < length; i++) {
	      pairs[i] = [keys[i], obj[keys[i]]];
	    }
	    return pairs;
	  };

	  // Invert the keys and values of an object. The values must be serializable.
	  _.invert = function(obj) {
	    var result = {};
	    var keys = _.keys(obj);
	    for (var i = 0, length = keys.length; i < length; i++) {
	      result[obj[keys[i]]] = keys[i];
	    }
	    return result;
	  };

	  // Return a sorted list of the function names available on the object.
	  // Aliased as `methods`
	  _.functions = _.methods = function(obj) {
	    var names = [];
	    for (var key in obj) {
	      if (_.isFunction(obj[key])) names.push(key);
	    }
	    return names.sort();
	  };

	  // Extend a given object with all the properties in passed-in object(s).
	  _.extend = function(obj) {
	    each(slice.call(arguments, 1), function(source) {
	      if (source) {
	        for (var prop in source) {
	          obj[prop] = source[prop];
	        }
	      }
	    });
	    return obj;
	  };

	  // Return a copy of the object only containing the whitelisted properties.
	  _.pick = function(obj) {
	    var copy = {};
	    var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
	    each(keys, function(key) {
	      if (key in obj) copy[key] = obj[key];
	    });
	    return copy;
	  };

	   // Return a copy of the object without the blacklisted properties.
	  _.omit = function(obj) {
	    var copy = {};
	    var keys = concat.apply(ArrayProto, slice.call(arguments, 1));
	    for (var key in obj) {
	      if (!_.contains(keys, key)) copy[key] = obj[key];
	    }
	    return copy;
	  };

	  // Fill in a given object with default properties.
	  _.defaults = function(obj) {
	    each(slice.call(arguments, 1), function(source) {
	      if (source) {
	        for (var prop in source) {
	          if (obj[prop] === void 0) obj[prop] = source[prop];
	        }
	      }
	    });
	    return obj;
	  };

	  // Create a (shallow-cloned) duplicate of an object.
	  _.clone = function(obj) {
	    if (!_.isObject(obj)) return obj;
	    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
	  };

	  // Invokes interceptor with the obj, and then returns obj.
	  // The primary purpose of this method is to "tap into" a method chain, in
	  // order to perform operations on intermediate results within the chain.
	  _.tap = function(obj, interceptor) {
	    interceptor(obj);
	    return obj;
	  };

	  // Internal recursive comparison function for `isEqual`.
	  var eq = function(a, b, aStack, bStack) {
	    // Identical objects are equal. `0 === -0`, but they aren't identical.
	    // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).
	    if (a === b) return a !== 0 || 1 / a == 1 / b;
	    // A strict comparison is necessary because `null == undefined`.
	    if (a == null || b == null) return a === b;
	    // Unwrap any wrapped objects.
	    if (a instanceof _) a = a._wrapped;
	    if (b instanceof _) b = b._wrapped;
	    // Compare `[[Class]]` names.
	    var className = toString.call(a);
	    if (className != toString.call(b)) return false;
	    switch (className) {
	      // Strings, numbers, dates, and booleans are compared by value.
	      case '[object String]':
	        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
	        // equivalent to `new String("5")`.
	        return a == String(b);
	      case '[object Number]':
	        // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
	        // other numeric values.
	        return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
	      case '[object Date]':
	      case '[object Boolean]':
	        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
	        // millisecond representations. Note that invalid dates with millisecond representations
	        // of `NaN` are not equivalent.
	        return +a == +b;
	      // RegExps are compared by their source patterns and flags.
	      case '[object RegExp]':
	        return a.source == b.source &&
	               a.global == b.global &&
	               a.multiline == b.multiline &&
	               a.ignoreCase == b.ignoreCase;
	    }
	    if (typeof a != 'object' || typeof b != 'object') return false;
	    // Assume equality for cyclic structures. The algorithm for detecting cyclic
	    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
	    var length = aStack.length;
	    while (length--) {
	      // Linear search. Performance is inversely proportional to the number of
	      // unique nested structures.
	      if (aStack[length] == a) return bStack[length] == b;
	    }
	    // Objects with different constructors are not equivalent, but `Object`s
	    // from different frames are.
	    var aCtor = a.constructor, bCtor = b.constructor;
	    if (aCtor !== bCtor && !(_.isFunction(aCtor) && (aCtor instanceof aCtor) &&
	                             _.isFunction(bCtor) && (bCtor instanceof bCtor))
	                        && ('constructor' in a && 'constructor' in b)) {
	      return false;
	    }
	    // Add the first object to the stack of traversed objects.
	    aStack.push(a);
	    bStack.push(b);
	    var size = 0, result = true;
	    // Recursively compare objects and arrays.
	    if (className == '[object Array]') {
	      // Compare array lengths to determine if a deep comparison is necessary.
	      size = a.length;
	      result = size == b.length;
	      if (result) {
	        // Deep compare the contents, ignoring non-numeric properties.
	        while (size--) {
	          if (!(result = eq(a[size], b[size], aStack, bStack))) break;
	        }
	      }
	    } else {
	      // Deep compare objects.
	      for (var key in a) {
	        if (_.has(a, key)) {
	          // Count the expected number of properties.
	          size++;
	          // Deep compare each member.
	          if (!(result = _.has(b, key) && eq(a[key], b[key], aStack, bStack))) break;
	        }
	      }
	      // Ensure that both objects contain the same number of properties.
	      if (result) {
	        for (key in b) {
	          if (_.has(b, key) && !(size--)) break;
	        }
	        result = !size;
	      }
	    }
	    // Remove the first object from the stack of traversed objects.
	    aStack.pop();
	    bStack.pop();
	    return result;
	  };

	  // Perform a deep comparison to check if two objects are equal.
	  _.isEqual = function(a, b) {
	    return eq(a, b, [], []);
	  };

	  // Is a given array, string, or object empty?
	  // An "empty" object has no enumerable own-properties.
	  _.isEmpty = function(obj) {
	    if (obj == null) return true;
	    if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
	    for (var key in obj) if (_.has(obj, key)) return false;
	    return true;
	  };

	  // Is a given value a DOM element?
	  _.isElement = function(obj) {
	    return !!(obj && obj.nodeType === 1);
	  };

	  // Is a given value an array?
	  // Delegates to ECMA5's native Array.isArray
	  _.isArray = nativeIsArray || function(obj) {
	    return toString.call(obj) == '[object Array]';
	  };

	  // Is a given variable an object?
	  _.isObject = function(obj) {
	    return obj === Object(obj);
	  };

	  // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp.
	  each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'], function(name) {
	    _['is' + name] = function(obj) {
	      return toString.call(obj) == '[object ' + name + ']';
	    };
	  });

	  // Define a fallback version of the method in browsers (ahem, IE), where
	  // there isn't any inspectable "Arguments" type.
	  if (!_.isArguments(arguments)) {
	    _.isArguments = function(obj) {
	      return !!(obj && _.has(obj, 'callee'));
	    };
	  }

	  // Optimize `isFunction` if appropriate.
	  if (true) {
	    _.isFunction = function(obj) {
	      return typeof obj === 'function';
	    };
	  }

	  // Is a given object a finite number?
	  _.isFinite = function(obj) {
	    return isFinite(obj) && !isNaN(parseFloat(obj));
	  };

	  // Is the given value `NaN`? (NaN is the only number which does not equal itself).
	  _.isNaN = function(obj) {
	    return _.isNumber(obj) && obj != +obj;
	  };

	  // Is a given value a boolean?
	  _.isBoolean = function(obj) {
	    return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
	  };

	  // Is a given value equal to null?
	  _.isNull = function(obj) {
	    return obj === null;
	  };

	  // Is a given variable undefined?
	  _.isUndefined = function(obj) {
	    return obj === void 0;
	  };

	  // Shortcut function for checking if an object has a given property directly
	  // on itself (in other words, not on a prototype).
	  _.has = function(obj, key) {
	    return hasOwnProperty.call(obj, key);
	  };

	  // Utility Functions
	  // -----------------

	  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
	  // previous owner. Returns a reference to the Underscore object.
	  _.noConflict = function() {
	    root._ = previousUnderscore;
	    return this;
	  };

	  // Keep the identity function around for default iterators.
	  _.identity = function(value) {
	    return value;
	  };

	  _.constant = function(value) {
	    return function () {
	      return value;
	    };
	  };

	  _.property = function(key) {
	    return function(obj) {
	      return obj[key];
	    };
	  };

	  // Returns a predicate for checking whether an object has a given set of `key:value` pairs.
	  _.matches = function(attrs) {
	    return function(obj) {
	      if (obj === attrs) return true; //avoid comparing an object to itself.
	      for (var key in attrs) {
	        if (attrs[key] !== obj[key])
	          return false;
	      }
	      return true;
	    }
	  };

	  // Run a function **n** times.
	  _.times = function(n, iterator, context) {
	    var accum = Array(Math.max(0, n));
	    for (var i = 0; i < n; i++) accum[i] = iterator.call(context, i);
	    return accum;
	  };

	  // Return a random integer between min and max (inclusive).
	  _.random = function(min, max) {
	    if (max == null) {
	      max = min;
	      min = 0;
	    }
	    return min + Math.floor(Math.random() * (max - min + 1));
	  };

	  // A (possibly faster) way to get the current timestamp as an integer.
	  _.now = Date.now || function() { return new Date().getTime(); };

	  // List of HTML entities for escaping.
	  var entityMap = {
	    escape: {
	      '&': '&amp;',
	      '<': '&lt;',
	      '>': '&gt;',
	      '"': '&quot;',
	      "'": '&#x27;'
	    }
	  };
	  entityMap.unescape = _.invert(entityMap.escape);

	  // Regexes containing the keys and values listed immediately above.
	  var entityRegexes = {
	    escape:   new RegExp('[' + _.keys(entityMap.escape).join('') + ']', 'g'),
	    unescape: new RegExp('(' + _.keys(entityMap.unescape).join('|') + ')', 'g')
	  };

	  // Functions for escaping and unescaping strings to/from HTML interpolation.
	  _.each(['escape', 'unescape'], function(method) {
	    _[method] = function(string) {
	      if (string == null) return '';
	      return ('' + string).replace(entityRegexes[method], function(match) {
	        return entityMap[method][match];
	      });
	    };
	  });

	  // If the value of the named `property` is a function then invoke it with the
	  // `object` as context; otherwise, return it.
	  _.result = function(object, property) {
	    if (object == null) return void 0;
	    var value = object[property];
	    return _.isFunction(value) ? value.call(object) : value;
	  };

	  // Add your own custom functions to the Underscore object.
	  _.mixin = function(obj) {
	    each(_.functions(obj), function(name) {
	      var func = _[name] = obj[name];
	      _.prototype[name] = function() {
	        var args = [this._wrapped];
	        push.apply(args, arguments);
	        return result.call(this, func.apply(_, args));
	      };
	    });
	  };

	  // Generate a unique integer id (unique within the entire client session).
	  // Useful for temporary DOM ids.
	  var idCounter = 0;
	  _.uniqueId = function(prefix) {
	    var id = ++idCounter + '';
	    return prefix ? prefix + id : id;
	  };

	  // By default, Underscore uses ERB-style template delimiters, change the
	  // following template settings to use alternative delimiters.
	  _.templateSettings = {
	    evaluate    : /<%([\s\S]+?)%>/g,
	    interpolate : /<%=([\s\S]+?)%>/g,
	    escape      : /<%-([\s\S]+?)%>/g
	  };

	  // When customizing `templateSettings`, if you don't want to define an
	  // interpolation, evaluation or escaping regex, we need one that is
	  // guaranteed not to match.
	  var noMatch = /(.)^/;

	  // Certain characters need to be escaped so that they can be put into a
	  // string literal.
	  var escapes = {
	    "'":      "'",
	    '\\':     '\\',
	    '\r':     'r',
	    '\n':     'n',
	    '\t':     't',
	    '\u2028': 'u2028',
	    '\u2029': 'u2029'
	  };

	  var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;

	  // JavaScript micro-templating, similar to John Resig's implementation.
	  // Underscore templating handles arbitrary delimiters, preserves whitespace,
	  // and correctly escapes quotes within interpolated code.
	  _.template = function(text, data, settings) {
	    var render;
	    settings = _.defaults({}, settings, _.templateSettings);

	    // Combine delimiters into one regular expression via alternation.
	    var matcher = new RegExp([
	      (settings.escape || noMatch).source,
	      (settings.interpolate || noMatch).source,
	      (settings.evaluate || noMatch).source
	    ].join('|') + '|$', 'g');

	    // Compile the template source, escaping string literals appropriately.
	    var index = 0;
	    var source = "__p+='";
	    text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
	      source += text.slice(index, offset)
	        .replace(escaper, function(match) { return '\\' + escapes[match]; });

	      if (escape) {
	        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
	      }
	      if (interpolate) {
	        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
	      }
	      if (evaluate) {
	        source += "';\n" + evaluate + "\n__p+='";
	      }
	      index = offset + match.length;
	      return match;
	    });
	    source += "';\n";

	    // If a variable is not specified, place data values in local scope.
	    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';

	    source = "var __t,__p='',__j=Array.prototype.join," +
	      "print=function(){__p+=__j.call(arguments,'');};\n" +
	      source + "return __p;\n";

	    try {
	      render = new Function(settings.variable || 'obj', '_', source);
	    } catch (e) {
	      e.source = source;
	      throw e;
	    }

	    if (data) return render(data, _);
	    var template = function(data) {
	      return render.call(this, data, _);
	    };

	    // Provide the compiled function source as a convenience for precompilation.
	    template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}';

	    return template;
	  };

	  // Add a "chain" function, which will delegate to the wrapper.
	  _.chain = function(obj) {
	    return _(obj).chain();
	  };

	  // OOP
	  // ---------------
	  // If Underscore is called as a function, it returns a wrapped object that
	  // can be used OO-style. This wrapper holds altered versions of all the
	  // underscore functions. Wrapped objects may be chained.

	  // Helper function to continue chaining intermediate results.
	  var result = function(obj) {
	    return this._chain ? _(obj).chain() : obj;
	  };

	  // Add all of the Underscore functions to the wrapper object.
	  _.mixin(_);

	  // Add all mutator Array functions to the wrapper.
	  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
	    var method = ArrayProto[name];
	    _.prototype[name] = function() {
	      var obj = this._wrapped;
	      method.apply(obj, arguments);
	      if ((name == 'shift' || name == 'splice') && obj.length === 0) delete obj[0];
	      return result.call(this, obj);
	    };
	  });

	  // Add all accessor Array functions to the wrapper.
	  each(['concat', 'join', 'slice'], function(name) {
	    var method = ArrayProto[name];
	    _.prototype[name] = function() {
	      return result.call(this, method.apply(this._wrapped, arguments));
	    };
	  });

	  _.extend(_.prototype, {

	    // Start chaining a wrapped Underscore object.
	    chain: function() {
	      this._chain = true;
	      return this;
	    },

	    // Extracts the result from a wrapped and chained object.
	    value: function() {
	      return this._wrapped;
	    }

	  });

	  // NOTE: this file has been patched so that Underscore defines itself as an
	  // anonymous AMD module.  This allows us to create a wrapper module called "underscore"
	  // that adds mixin functionality and enforces no-conflict mode.
	  if (true) {
	    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
	      return _;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
	  }
	}).call(this);


/***/ }),

/***/ "contrib/moment/lang/de":
/***/ (function(module, exports, __webpack_require__) {

	// moment.js locale configuration
	// locale : german (de)
	// author : lluchs : https://github.com/lluchs
	// author: Menelion Elensúle: https://github.com/Oire

	function processRelativeTime(number, withoutSuffix, key, isFuture) {
	    var format = {
	        'm': ['eine Minute', 'einer Minute'],
	        'h': ['eine Stunde', 'einer Stunde'],
	        'd': ['ein Tag', 'einem Tag'],
	        'dd': [number + ' Tage', number + ' Tagen'],
	        'M': ['ein Monat', 'einem Monat'],
	        'MM': [number + ' Monate', number + ' Monaten'],
	        'y': ['ein Jahr', 'einem Jahr'],
	        'yy': [number + ' Jahre', number + ' Jahren']
	    };
	    return withoutSuffix ? format[key][0] : format[key][1];
	}

	__webpack_require__("contrib/moment").defineLocale('de', {
	    months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
	    monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
	    weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
	    weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
	    weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
	    longDateFormat : {
	        LT: 'HH:mm [Uhr]',
	        L : 'DD.MM.YYYY',
	        LL : 'D. MMMM YYYY',
	        LLL : 'D. MMMM YYYY LT',
	        LLLL : 'dddd, D. MMMM YYYY LT'
	    },
	    calendar : {
	        sameDay: '[Heute um] LT',
	        sameElse: 'L',
	        nextDay: '[Morgen um] LT',
	        nextWeek: 'dddd [um] LT',
	        lastDay: '[Gestern um] LT',
	        lastWeek: '[letzten] dddd [um] LT'
	    },
	    relativeTime : {
	        future : 'in %s',
	        past : 'vor %s',
	        s : 'ein paar Sekunden',
	        m : processRelativeTime,
	        mm : '%d Minuten',
	        h : processRelativeTime,
	        hh : '%d Stunden',
	        d : processRelativeTime,
	        dd : processRelativeTime,
	        M : processRelativeTime,
	        MM : processRelativeTime,
	        y : processRelativeTime,
	        yy : processRelativeTime
	    },
	    ordinalParse: /\d{1,2}\./,
	    ordinal : '%d.',
	    week : {
	        dow : 1, // Monday is the first day of the week.
	        doy : 4  // The week that contains Jan 4th is the first week of the year.
	    }
	});


/***/ }),

/***/ "contrib/moment/lang/en-debug":
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__("contrib/moment").locale('en-debug', {});


/***/ }),

/***/ "contrib/moment/lang/en-gb":
/***/ (function(module, exports, __webpack_require__) {

	// moment.js locale configuration
	// locale : great britain english (en-gb)
	// author : Chris Gedrim : https://github.com/chrisgedrim

	__webpack_require__("contrib/moment").defineLocale('en-gb', {
	    months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
	    monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
	    weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
	    weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
	    weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
	    longDateFormat : {
	        LT : 'HH:mm',
	        L : 'DD/MM/YYYY',
	        LL : 'D MMMM YYYY',
	        LLL : 'D MMMM YYYY LT',
	        LLLL : 'dddd, D MMMM YYYY LT'
	    },
	    calendar : {
	        sameDay : '[Today at] LT',
	        nextDay : '[Tomorrow at] LT',
	        nextWeek : 'dddd [at] LT',
	        lastDay : '[Yesterday at] LT',
	        lastWeek : '[Last] dddd [at] LT',
	        sameElse : 'L'
	    },
	    relativeTime : {
	        future : 'in %s',
	        past : '%s ago',
	        s : 'a few seconds',
	        m : 'a minute',
	        mm : '%d minutes',
	        h : 'an hour',
	        hh : '%d hours',
	        d : 'a day',
	        dd : '%d days',
	        M : 'a month',
	        MM : '%d months',
	        y : 'a year',
	        yy : '%d years'
	    },
	    ordinalParse: /\d{1,2}(st|nd|rd|th)/,
	    ordinal : function (number) {
	        var b = number % 10,
	            output = (~~(number % 100 / 10) === 1) ? 'th' :
	            (b === 1) ? 'st' :
	            (b === 2) ? 'nd' :
	            (b === 3) ? 'rd' : 'th';
	        return number + output;
	    },
	    week : {
	        dow : 1, // Monday is the first day of the week.
	        doy : 4  // The week that contains Jan 4th is the first week of the year.
	    }
	});


/***/ }),

/***/ "contrib/moment/lang/en-us":
/***/ (function(module, exports, __webpack_require__) {

	__webpack_require__("contrib/moment").locale('en-us', {
	    compactRelativeTime: {
	        s: "<1m",
	        m: "1m",
	        mm: "%dm",
	        h: "1h",
	        hh: "%dh"
	    }
	});


/***/ }),

/***/ "contrib/moment/lang/fr":
/***/ (function(module, exports, __webpack_require__) {

	//! moment.js locale configuration
	//! locale : french (fr)
	//! author : John Fischer : https://github.com/jfroffice

	__webpack_require__("contrib/moment").defineLocale('fr', {
	    months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
	    monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
	    weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
	    weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
	    weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
	    longDateFormat : {
	        LT : 'HH:mm',
	        LTS : 'HH:mm:ss',
	        L : 'DD/MM/YYYY',
	        LL : 'D MMMM YYYY',
	        LLL : 'D MMMM YYYY HH:mm',
	        LLLL : 'dddd D MMMM YYYY HH:mm'
	    },
	    calendar : {
	        sameDay: '[Aujourd\'hui à] LT',
	        nextDay: '[Demain à] LT',
	        nextWeek: 'dddd [à] LT',
	        lastDay: '[Hier à] LT',
	        lastWeek: 'dddd [dernier à] LT',
	        sameElse: 'L'
	    },
	    relativeTime : {
	        future : 'dans %s',
	        past : 'il y a %s',
	        s : 'quelques secondes',
	        m : 'une minute',
	        mm : '%d minutes',
	        h : 'une heure',
	        hh : '%d heures',
	        d : 'un jour',
	        dd : '%d jours',
	        M : 'un mois',
	        MM : '%d mois',
	        y : 'un an',
	        yy : '%d ans'
	    },
	    ordinalParse: /\d{1,2}(er|)/,
	    ordinal : function (number) {
	        return number + (number === 1 ? 'er' : '');
	    },
	    week : {
	        dow : 1, // Monday is the first day of the week.
	        doy : 4  // The week that contains Jan 4th is the first week of the year.
	    }
	});


/***/ }),

/***/ "contrib/moment/lang/it":
/***/ (function(module, exports, __webpack_require__) {

	// moment.js locale configuration
	// locale : italian (it)
	// author : Lorenzo : https://github.com/aliem
	// author: Mattia Larentis: https://github.com/nostalgiaz

	__webpack_require__("contrib/moment").defineLocale('it', {
	    months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
	    monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
	    weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato'.split('_'),
	    weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab'.split('_'),
	    weekdaysMin : 'D_L_Ma_Me_G_V_S'.split('_'),
	    longDateFormat : {
	        LT : 'HH:mm',
	        L : 'DD/MM/YYYY',
	        LL : 'D MMMM YYYY',
	        LLL : 'D MMMM YYYY LT',
	        LLLL : 'dddd, D MMMM YYYY LT'
	    },
	    calendar : {
	        sameDay: '[Oggi alle] LT',
	        nextDay: '[Domani alle] LT',
	        nextWeek: 'dddd [alle] LT',
	        lastDay: '[Ieri alle] LT',
	        lastWeek: '[lo scorso] dddd [alle] LT',
	        sameElse: 'L'
	    },
	    relativeTime : {
	        future : function (s) {
	            return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;
	        },
	        past : '%s fa',
	        s : 'alcuni secondi',
	        m : 'un minuto',
	        mm : '%d minuti',
	        h : 'un\'ora',
	        hh : '%d ore',
	        d : 'un giorno',
	        dd : '%d giorni',
	        M : 'un mese',
	        MM : '%d mesi',
	        y : 'un anno',
	        yy : '%d anni'
	    },
	    ordinalParse : /\d{1,2}º/,
	    ordinal: '%dº',
	    week : {
	        dow : 1, // Monday is the first day of the week.
	        doy : 4  // The week that contains Jan 4th is the first week of the year.
	    }
	});


/***/ }),

/***/ "contrib/moment/lang/ja":
/***/ (function(module, exports, __webpack_require__) {

	// moment.js locale configuration
	// locale : japanese (ja)
	// author : LI Long : https://github.com/baryon

	__webpack_require__("contrib/moment").defineLocale('ja', {
	    months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
	    monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
	    weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
	    weekdaysShort : '日_月_火_水_木_金_土'.split('_'),
	    weekdaysMin : '日_月_火_水_木_金_土'.split('_'),
	    longDateFormat : {
	        LT : 'Ah時m分',
	        L : 'YYYY/MM/DD',
	        LL : 'YYYY年M月D日',
	        LLL : 'YYYY年M月D日LT',
	        LLLL : 'YYYY年M月D日LT dddd'
	    },
	    meridiem : function (hour, minute, isLower) {
	        if (hour < 12) {
	            return '午前';
	        } else {
	            return '午後';
	        }
	    },
	    calendar : {
	        sameDay : '[今日] LT',
	        nextDay : '[明日] LT',
	        nextWeek : '[来週]dddd LT',
	        lastDay : '[昨日] LT',
	        lastWeek : '[前週]dddd LT',
	        sameElse : 'L'
	    },
	    relativeTime : {
	        future : '%s後',
	        past : '%s前',
	        s : '数秒',
	        m : '1分',
	        mm : '%d分',
	        h : '1時間',
	        hh : '%d時間',
	        d : '1日',
	        dd : '%d日',
	        M : '1ヶ月',
	        MM : '%dヶ月',
	        y : '1年',
	        yy : '%d年'
	    }
	});


/***/ }),

/***/ "contrib/moment/lang/ko":
/***/ (function(module, exports, __webpack_require__) {

	// moment.js locale configuration
	// locale : korean (ko)
	//
	// authors
	//
	// - Kyungwook, Park : https://github.com/kyungw00k
	// - Jeeeyul Lee <jeeeyul@gmail.com>
	__webpack_require__("contrib/moment").defineLocale('ko', {
	    months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
	    monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
	    weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
	    weekdaysShort : '일_월_화_수_목_금_토'.split('_'),
	    weekdaysMin : '일_월_화_수_목_금_토'.split('_'),
	    longDateFormat : {
	        LT : 'A h시 m분',
	        L : 'YYYY.MM.DD',
	        LL : 'YYYY년 MMMM D일',
	        LLL : 'YYYY년 MMMM D일 LT',
	        LLLL : 'YYYY년 MMMM D일 dddd LT'
	    },
	    meridiem : function (hour, minute, isUpper) {
	        return hour < 12 ? '오전' : '오후';
	    },
	    calendar : {
	        sameDay : '오늘 LT',
	        nextDay : '내일 LT',
	        nextWeek : 'dddd LT',
	        lastDay : '어제 LT',
	        lastWeek : '지난주 dddd LT',
	        sameElse : 'L'
	    },
	    relativeTime : {
	        future : '%s 후',
	        past : '%s 전',
	        s : '몇초',
	        ss : '%d초',
	        m : '일분',
	        mm : '%d분',
	        h : '한시간',
	        hh : '%d시간',
	        d : '하루',
	        dd : '%d일',
	        M : '한달',
	        MM : '%d달',
	        y : '일년',
	        yy : '%d년'
	    },
	    ordinalParse : /\d{1,2}일/,
	    ordinal : '%d일',
	    meridiemParse : /(오전|오후)/,
	    isPM : function (token) {
	        return token === '오후';
	    }
	});


/***/ }),

/***/ "contrib/moment/lang/zh-cn":
/***/ (function(module, exports, __webpack_require__) {

	// moment.js locale configuration
	// locale : chinese (zh-cn)
	// author : suupic : https://github.com/suupic
	// author : Zeno Zeng : https://github.com/zenozeng
	__webpack_require__("contrib/moment").defineLocale('zh-cn', {
	    months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
	    monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
	    weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
	    weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),
	    weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
	    longDateFormat : {
	        LT : 'Ah点mm',
	        L : 'YYYY-MM-DD',
	        LL : 'YYYY年MMMD日',
	        LLL : 'YYYY年MMMD日LT',
	        LLLL : 'YYYY年MMMD日ddddLT',
	        l : 'YYYY-MM-DD',
	        ll : 'YYYY年MMMD日',
	        lll : 'YYYY年MMMD日LT',
	        llll : 'YYYY年MMMD日ddddLT'
	    },
	    meridiem : function (hour, minute, isLower) {
	        var hm = hour * 100 + minute;
	        if (hm < 600) {
	            return '凌晨';
	        } else if (hm < 900) {
	            return '早上';
	        } else if (hm < 1130) {
	            return '上午';
	        } else if (hm < 1230) {
	            return '中午';
	        } else if (hm < 1800) {
	            return '下午';
	        } else {
	            return '晚上';
	        }
	    },
	    calendar : {
	        sameDay : function () {
	            return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT';
	        },
	        nextDay : function () {
	            return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT';
	        },
	        lastDay : function () {
	            return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT';
	        },
	        nextWeek : function () {
	            var startOfWeek, prefix;
	            startOfWeek = moment().startOf('week');
	            prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]';
	            return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
	        },
	        lastWeek : function () {
	            var startOfWeek, prefix;
	            startOfWeek = moment().startOf('week');
	            prefix = this.unix() < startOfWeek.unix()  ? '[上]' : '[本]';
	            return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
	        },
	        sameElse : 'LL'
	    },
	    ordinalParse: /\d{1,2}(日|月|周)/,
	    ordinal : function (number, period) {
	        switch (period) {
	        case 'd':
	        case 'D':
	        case 'DDD':
	            return number + '日';
	        case 'M':
	            return number + '月';
	        case 'w':
	        case 'W':
	            return number + '周';
	        default:
	            return number;
	        }
	    },
	    relativeTime : {
	        future : '%s内',
	        past : '%s前',
	        s : '几秒',
	        m : '1分钟',
	        mm : '%d分钟',
	        h : '1小时',
	        hh : '%d小时',
	        d : '1天',
	        dd : '%d天',
	        M : '1个月',
	        MM : '%d个月',
	        y : '1年',
	        yy : '%d年'
	    },
	    week : {
	        // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
	        dow : 1, // Monday is the first day of the week.
	        doy : 4  // The week that contains Jan 4th is the first week of the year.
	    }
	});


/***/ }),

/***/ "contrib/moment/lang/zh-tw":
/***/ (function(module, exports, __webpack_require__) {

	// moment.js locale configuration
	// locale : traditional chinese (zh-tw)
	// author : Ben : https://github.com/ben-lin

	__webpack_require__("contrib/moment").defineLocale('zh-tw', {
	    months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
	    monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
	    weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
	    weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
	    weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
	    longDateFormat : {
	        LT : 'Ah點mm',
	        L : 'YYYY年MMMD日',
	        LL : 'YYYY年MMMD日',
	        LLL : 'YYYY年MMMD日LT',
	        LLLL : 'YYYY年MMMD日ddddLT',
	        l : 'YYYY年MMMD日',
	        ll : 'YYYY年MMMD日',
	        lll : 'YYYY年MMMD日LT',
	        llll : 'YYYY年MMMD日ddddLT'
	    },
	    meridiem : function (hour, minute, isLower) {
	        var hm = hour * 100 + minute;
	        if (hm < 900) {
	            return '早上';
	        } else if (hm < 1130) {
	            return '上午';
	        } else if (hm < 1230) {
	            return '中午';
	        } else if (hm < 1800) {
	            return '下午';
	        } else {
	            return '晚上';
	        }
	    },
	    calendar : {
	        sameDay : '[今天]LT',
	        nextDay : '[明天]LT',
	        nextWeek : '[下]ddddLT',
	        lastDay : '[昨天]LT',
	        lastWeek : '[上]ddddLT',
	        sameElse : 'L'
	    },
	    ordinalParse: /\d{1,2}(日|月|週)/,
	    ordinal : function (number, period) {
	        switch (period) {
	        case 'd' :
	        case 'D' :
	        case 'DDD' :
	            return number + '日';
	        case 'M' :
	            return number + '月';
	        case 'w' :
	        case 'W' :
	            return number + '週';
	        default :
	            return number;
	        }
	    },
	    relativeTime : {
	        future : '%s內',
	        past : '%s前',
	        s : '幾秒',
	        m : '一分鐘',
	        mm : '%d分鐘',
	        h : '一小時',
	        hh : '%d小時',
	        d : '一天',
	        dd : '%d天',
	        M : '一個月',
	        MM : '%d個月',
	        y : '一年',
	        yy : '%d年'
	    }
	});


/***/ }),

/***/ "models/shared/User":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/services/authentication/User"),
	        __webpack_require__("models/services/server/ServerInfo"),
	        __webpack_require__("collections/services/AppLocals")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        UserBaseModel,
	        ServerInfoModel,
	        AppLocalsCollection
	    ) {
	        var CORE_JS_APP_NAMES = {
	            DATASETS_EXTENSIONS: 'splunk_datasets_addon'
	        };
	        
	        var UserModel = UserBaseModel.extend({
	            initialize: function(attributes, options) {
	                UserBaseModel.prototype.initialize.apply(this, arguments);
	                options = options || {};
	                
	                var serverInfoModel = options.serverInfoModel,
	                    appLocalsCollection = options.appLocalsCollection;
	                
	                if (!serverInfoModel || !(serverInfoModel instanceof ServerInfoModel)) {
	                    throw 'The following constructor arguments are required ({}, {serverInfoModel: <models/services/server/ServerInfo>}).';
	                }
	                this.associated.serverInfo = serverInfoModel;
	                this.serverInfo = serverInfoModel;
	                
	                if (appLocalsCollection && (appLocalsCollection instanceof AppLocalsCollection)) {
	                    this.associated.appLocals = appLocalsCollection;
	                    this.appLocals = appLocalsCollection;
	                }
	            },
	            
	            canAddData: function() {
	                // SystemMenu uses this.canEditMonitor to decide whether to show this link
	                // Hunk uses Explore Data, not Add Data
	                return (this.canUploadData() || this.canMonitorData() || this.canForwardData()) && !(this.serverInfo.isHunk());
	            },
	            
	            canUploadData: function(){
	                // The capabilities for the file upload workflow were changed to
	                // allow cloud customers file upload access without having to give
	                // full edit_tcp access. The on-prem product still uses the old
	                // capabilities to avoid impacting existing customers.
	                // The new capabilities, edit_upload_and_index & edit_tcp_stream,
	                // are not defined on-prem. edit_tcp is not given on cloud.
	                // So there should be no need for instance type check here.
	                return ((this.hasCapability('edit_tcp') && this.hasCapability('edit_monitor'))
	                    || (this.hasCapability('edit_upload_and_index') && this.hasCapability('edit_tcp_stream')));
	            },
	            
	            canMonitorData: function() {
	                // Same capabilities as datainputstats.xml (Data Inputs). Any changes to that xml file should be updated here as well.
	                this.hasModularInputCapability();
	                return (
	                    this.canEditMonitor() ||
	                    this.canEditTCP() ||
	                    this.canEditUDP() ||
	                    this.canEditScripts() ||
	                    this.canEditHTTPTokens() ||
	                    this.canEditWinEventLogCollections() ||
	                    this.canEditWinRegistryMonitoring() ||
	                    this.canEditWinRemotePerformanceMonitoring() ||
	                    this.hasModularInputCapability()
	                );
	            },
	            
	            hasModularInputCapability: function(){
	                var hasCapability = false;
	                _.each(this.getCapabilities(), function(capability){
	                    if (capability.indexOf('edit_modinput_') == 0){
	                        hasCapability = true;
	                        return;
	                    }
	                }.bind(this));
	                return hasCapability;
	            },
	            
	            canForwardData: function(){
	                return this.hasCapability('edit_deployment_server');
	            },

	            canArchive: function () {
	                // Checking for Hadoop add-on to determine if archiving is on.
	                return this.serverInfo.isEnterpriseCloud() && this.serverInfo.hasHadoopAddon();
	            },
	            
	            canEditArchives: function(){
	                // Check if user can edit archives
	                return this.canArchive() && this.hasCapability('edit_archives');
	            },
	            
	            canViewArchives: function(){
	                // Check if user can view archives
	                return this.canArchive() && this.hasCapability('list_archives');
	            },
	            
	            canEditIndexes: function () {
	                return this.hasCapability('indexes_edit');
	            },

	            isHunkAdmin: function() {
	                return !this.isFree() && this.serverInfo.hasHadoopAddon() &&
	                    !this.serverInfo.isCloud() && this.isAdmin();
	            },

	            canExploreData: function() {
	                // Hunk uses Explore Data, not Add Data
	                return this.isHunkAdmin();
	            },

	            canUseVirtualIndexes: function() {
	                return this.isHunkAdmin();
	            },
	            
	            canUseApps: function() {
	                // Previously, apps were hidden in Splunk Light. Now that apps are supported in Splunk Light,
	                // we always return true here. Keep this method for any future use, if eventually, we create
	                // a 'can_use_apps' capability for example.
	                return true;
	            },
	            
	            supportsOutputGroups: function() {
	                if (this.serverInfo.isLite() || !this.hasCapability('list_forwarders')) {
	                    return false;
	                }
	                return true;
	            },
	            
	            canUseAlerts: function() {
	                return !(this.serverInfo.isLiteFree() || this.serverInfo.isFreeLicense() || this.serverInfo.hasForwarderLicense());
	            },
	            
	            canPivot: function() {
	                // Previously, Pivot was not supported in Splunk Light. Since it is now supported in Kimono,
	                // we always return true here. Keep this method for any future use, if eventually, we create
	                // a 'can_pivot' capability.
	                return true;
	            },
	            
	            canSchedulePDF: function() {
	                return (!this.serverInfo.isLiteFree() && this.canScheduleSearch());
	            },
	            
	            canUseSidenav: function() {
	                if (this.serverInfo.isLite()) {
	                    return true;
	                }
	                return false;
	            },
	            
	            canManageLicenses: function() {
	                if (this.hasCapability('license_edit')) {
	                    return true;
	                }
	                return false;
	            },
	            
	            canViewLicense: function() {
	                if (this.hasCapability('license_view_warnings') || this.hasCapability('license_edit')) {
	                    return true;
	                }
	                return false;
	            },
	            
	            canLiveTail: function() {
	                if (this.serverInfo.isLite() && this.canRTSearch()) {
	                    return true;
	                }
	                return false;
	            },
	            
	            canAccessAppWithName: function(appname) {
	                var app;
	                
	                if (this.appLocals) {
	                    app = this.appLocals.find(function(app) {
	                        return app.entry.get('name') === appname;
	                    });
	                    
	                    return !!app;
	                } 
	                
	                return false;
	            },
	            
	            canAccessSplunkDatasetExtensions: function() {
	                return this.canAccessAppWithName(CORE_JS_APP_NAMES.DATASETS_EXTENSIONS);
	            }
	        },
	        {
	            CORE_JS_APP_NAMES: CORE_JS_APP_NAMES
	        });
	        
	        return UserModel;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/authentication/User":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    __webpack_require__("models/SplunkDBase"),
	    __webpack_require__("shim/splunk.util")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, SplunkDBaseModel, splunkUtil) {
	    var UserModel = SplunkDBaseModel.extend({
	        FREE_PAYLOAD: {
	            "links": {
	                "create": "/services/authentication/users/_new"
	            },
	            "generator": {},
	            "entry": [
	                {
	                    "name": "admin",
	                    "links": {
	                        "alternate": "/services/authentication/users/admin",
	                        "list": "/services/authentication/users/admin",
	                        "edit": "/services/authentication/users/admin"
	                    },
	                    "author": "system",
	                    "acl": {
	                        "app": "",
	                        "can_list": true,
	                        "can_write": true,
	                        "modifiable": false,
	                        "owner": "system",
	                        "perms": {
	                            "read": [
	                                "*"
	                            ],
	                            "write": [
	                                "*"
	                            ]
	                        },
	                        "removable": false,
	                        "sharing": "system"
	                    },
	                    "fields": {
	                        "required": [],
	                        "optional": [
	                            "defaultApp",
	                            "email",
	                            "password",
	                            "realname",
	                            "restart_background_jobs",
	                            "roles",
	                            "tz"
	                        ],
	                        "wildcard": []
	                    },
	                    "content": {
	                        "isFree": true,
	                        "capabilities": [],
	                        "defaultApp": "launcher",
	                        "defaultAppIsUserOverride": false,
	                        "defaultAppSourceRole": "system",
	                        "eai:acl": null,
	                        "email": "changeme@example.com",
	                        "password": "********",
	                        "realname": "Administrator",
	                        "restart_background_jobs": true,
	                        "roles": [
	                            "admin"
	                        ],
	                        "type": "Splunk",
	                        "tz": ""
	                    }
	                }
	            ],
	            "paging": {
	                "total": 1,
	                "perPage": 30,
	                "offset": 0
	            },
	            "messages": []
	        },
	        url: "authentication/users",
	        urlRoot: "authentication/users",/* for some unknown reason, base model checks for urlRoot existance... which chokes manager pages fetching User Model */
	        initialize: function() {
	            SplunkDBaseModel.prototype.initialize.apply(this, arguments);
	        },
	        sync: function(method, model, options) {
	            // without this option the UI appends a suffix to array field names, i.e. 'roles' becomes 'roles[]'
	            // which is not liked by the users endpoint
	            options = options || {};
	            if (method === 'update' || method === 'patch' || method === 'create') {
	                options.traditional = true;
	            }
	            return SplunkDBaseModel.prototype.sync.call(this, method, model, options);
	        },
	        getCapabilities: function() {
	            return this.entry.content.get('capabilities') || [];
	        },
	        hasCapability: function(capability) {
	            if (this.isFree()) {
	                return true;
	            }
	            return this.isNew() || (_.indexOf(this.getCapabilities(), capability) !== -1);
	        },
	        getRoles: function() {
	            return this.entry.content.get('roles') || [];
	        },
	        hasRole: function(role) {
	            if (this.isFree()) {
	                return true;
	            }
	            return this.isNew() || (_.indexOf(this.getRoles(), role) !== -1);
	        },
	        isAdmin: function() {
	            return this.hasRole('admin');
	        },
	        isAdminLike: function() {
	            return this.hasCapability('admin_all_objects');
	        },
	        isCloudAdmin: function() {
	            return this.hasRole('sc_admin') && this.serverInfo.isCloud();
	        },
	        canViewACL: function() {
	            if (this.isFree()) {
	                return false;
	            }
	            return true;
	        },
	        canEditDispatchAs: function() {
	            if (this.isFree()) {
	                return false;
	            }
	            return true;
	        },
	        //the ability to run searches.
	        canSearch: function() {
	            return this.hasCapability("search");
	        },
	        //the ability to run real-time searches.
	        canRTSearch: function() {
	            return this.hasCapability("rtsearch");
	        },
	        canScheduleRTSearch: function() {
	            return this.hasCapability("schedule_rtsearch");
	        },
	        //the ability to schedule saved searches, create and update alerts, review triggered alert information, and turn on report acceleration for searches.
	        canScheduleSearch: function() {
	            if (this.isFree()) {
	                return false;
	            }
	            return this.hasCapability("schedule_search");
	        },
	        //the ability to add new or edit existing inputs
	        canEditMonitor: function() {
	            return this.hasCapability("edit_monitor");
	        },
	        canEditTCP: function(){
	            return this.hasCapability('edit_tcp');
	        },
	        canEditUDP: function(){
	            return this.hasCapability('edit_udp');
	        },
	        canEditScripts: function(){
	            return this.hasCapability('edit_scripted');
	        },
	        canEditHTTPTokens: function(){
	            return this.hasCapability('edit_token_http');
	        },
	        canEditWinActiveDirectoryMonitoring: function(){
	            return this.hasCapability("edit_modinput_admon");
	        },
	        canEditWinEventLogCollections: function(){
	            return this.hasCapability('edit_win_eventlogs');
	        },
	        canEditWinHostMonitoring: function(){
	            return this.hasCapability('edit_modinput_winhostmon');
	        },
	        canEditWinLocalPerformanceMonitoring: function(){
	            return this.hasCapability('edit_modinput_perfmon');
	        },
	        canEditWinNetworkMonitoring: function(){
	            return this.hasCapability('edit_modinput_winnetmon');
	        },
	        canEditWinPrintMonitoring: function(){
	            return this.hasCapability('edit_modinput_winprintmon');
	        },
	        canEditWinRegistryMonitoring: function(){
	            return this.hasCapability('edit_win_regmon');
	        },
	        canEditWinRemotePerformanceMonitoring: function(){
	            // Maps to admin_win-wmi-collections.xml
	            return this.hasCapability('edit_win_wmiconf');
	        },
	        canViewRemoteApps: function () {
	            return this.hasCapability("rest_apps_view");
	        },
	        canManageRemoteApps: function() {
	            return this.hasCapability("rest_apps_management");
	        },
	        canAccelerateDataModel: function() {
	            if (this.isFree()) {
	                return false;
	            }
	            return this.hasCapability("accelerate_datamodel");
	        },
	        //the ability to accelerate searches.
	        canAccelerateReport: function() {
	            if (this.isFree()) {
	                return false;
	            }
	            return this.hasCapability("accelerate_search") && this.hasCapability("schedule_search");
	        },
	        canEmbed: function () {
	            if (this.isFree()) {
	                return false;
	            }
	            return this.hasCapability("embed_report");
	        },
	        canEditViewHtml: function () {
	            return this.hasCapability("edit_view_html");
	        },
	        canPatternDetect: function() {
	            return this.hasCapability("pattern_detect");
	        },
	        canEditUsers: function() {
	            return this.hasCapability('edit_user');
	        },
	        canEditServer: function() {
	            return this.hasCapability('edit_server');
	        },
	        canRestart: function() {
	            return this.hasCapability('restart_splunkd');
	        },
	        canEditReceiving: function() {
	            return this.hasCapability('edit_splunktcp');
	        },
	        canExportResults: function() {
	            return this.hasCapability('export_results_is_visible');
	        },
	        canEditSearchSchedulePriority: function() {
	            return this.hasCapability('edit_search_schedule_priority');
	        },
	        canEditSearchScheduleWindow: function() {
	            return this.hasCapability('edit_search_schedule_window');
	        },
	        canEditInstrumentation: function() {
	            return this.hasCapability('edit_telemetry_settings');
	        },
	        getSearchSyntaxHighlighting: function() {
	            if (this.isFree()) {
	                return UserModel.EDITOR_THEMES.DEFAULT;
	            }
	            
	            var value = splunkUtil.normalizeBoolean(this.entry.content.get('search_syntax_highlighting'));
	            return (value === true? UserModel.EDITOR_THEMES.DEFAULT : 
	                    (value === false ? UserModel.EDITOR_THEMES.BLACK_WHITE: value));
	        },
	        getSearchAssistant: function() {
	            if (this.isFree()) {
	                return UserModel.SEARCH_ASSISTANT.COMPACT;
	            }
	            return this.entry.content.get('search_assistant');
	        },
	        getSearchLineNumbers: function() {
	            if (this.isFree()) {
	                return true;
	            }
	            return this.entry.content.get('search_line_numbers');
	        },
	        getSearchAutoFormat: function() {
	            if (this.isFree()) {
	                return true;
	            }
	            return this.entry.content.get('search_auto_format');
	        },
	        isFree: function() {
	            return (this.entry.content.get("isFree") === true);
	        },
	        getUserid: function () {
	            return this.entry.get('name');
	        },
	        getUserName: function () {
	            return this.entry.content.get('realname') || '';
	        },
	        getLabel: function () {
	            var id = this.getUserid();
	            var name = this.getUserName();
	            if (_.isUndefined(id)) {
	                return '';
	            } else {
	                return splunkUtil.sprintf('%s (%s)', name, id);
	            }
	        },
	        getValue: function () {
	            return this.getUserid();
	        }
	    },{
	        SEARCH_ASSISTANT: {
	            FULL: 'full',
	            COMPACT: 'compact',
	            NONE: 'none'
	        },
	        EDITOR_THEMES: {
	            DEFAULT: 'light',
	            BLACK_WHITE: 'black-white',
	            DARK: 'dark'
	        }
	    });
	    return UserModel;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "collections/services/AppLocals":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("util/splunkd_utils"),
	        __webpack_require__("models/services/AppLocal"),
	        __webpack_require__("collections/SplunkDsBase"),
	        __webpack_require__("util/general_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, Backbone, splunkdUtil, AppModel, SplunkDsBaseCollection, general_utils) {
	        return SplunkDsBaseCollection.extend({
	            model: AppModel,
	            url: "apps/local",
	            initialize: function() {
	                SplunkDsBaseCollection.prototype.initialize.apply(this, arguments);
	            },
	            /* sort the apps collection based on user preference (appOrderString).
	            any app not declared in the indexDictionary, is sorted alphabetically */
	            sortWithString: function(appOrderString){
	                //FOR SAFETY cast to string
	                appOrderString = typeof appOrderString === 'string' ? appOrderString : '';
	                var indexDictionary = {};
	                var appOrderArray = appOrderString.split(',');
	                if(_.isArray(appOrderArray) && appOrderArray.length > 0){
	                    for(var i=0, len=appOrderArray.length; i<len; i++){
	                        indexDictionary[appOrderArray[i]] = i;
	                    }
	                }

	                this.comparator = function(appA, appB){
	                    var nameA = appA.entry.get('name'),
	                        nameB = appB.entry.get('name'),
	                        labelA = appA.entry.content.get('label'),
	                        labelB = appB.entry.content.get('label'),
	                        positionA = indexDictionary[nameA],
	                        positionB = indexDictionary[nameB],
	                        isNumberA = _.isNumber(positionA),
	                        isNumberB = _.isNumber(positionB);
	                    if(isNumberA && isNumberB){
	                        return positionA < positionB ? -1 : 1;
	                    }
	                    if(!isNumberA && !isNumberB){
	                        return general_utils.compareWithDirection(labelA, labelB, true);
	                    }
	                    if(isNumberA && !isNumberB){
	                        return -1;
	                    }
	                    if(!isNumberA && isNumberB){
	                        return 1;
	                    }
	                };
	                this.sort();
	            },

	            listWithoutInternals: function() {
	                var internalApps = ['splunk_datapreview','splunk_monitoring_console','learned','introspection_generator_addon','framework'];
	                return this.filter(function(model) {
	                    var appName = model.entry.get('name');
	                    return (internalApps.indexOf(appName) === -1);
	                });
	            },

	            removeLauncherApp: function() {
	                this.remove(this.get('/servicesNS/nobody/system/apps/local/launcher'));
	            },

	            listVisibleApps: function() {
	                return this.filter(function(app) {
	                    var visibleFlag = app.entry.content.get("visible"), res = true;
	                    if(visibleFlag === false || (_.isString(visibleFlag) && visibleFlag.toLowerCase() === "false")){
	                        res = false;
	                    }

	                    return res;
	                });
	            },

	            /**
	             * Checks that both apps are part of the collection.
	             * If only one app name  is valid, that app is returned.
	             * If both app namess are vaid, appName1 is returned.
	             * If neither app name is valid, undefined is returned.
	             *
	             * @param appName1 {string} - app name to check and preferentially return if valid.
	             * @param appName1 {string} - app name  to check and return only if the first app name isn't valid.
	             * @return {AppLocalModel} - undefined if neither app name is valid.
	             */
	            getValidatedApp: function(appName1, appName2) {
	                var validatedApp1 = this.findByEntryName(appName1);
	                var validatedApp2 = this.findByEntryName(appName2);
	                return validatedApp1 ? validatedApp1 : validatedApp2;
	            },

	            /**
	             * Filter out apps that the user can't write to or that are internal and we don't want the user writing to.
	             *
	             * @returns the collection of filtered apps.
	             */
	            listOnlyWriteableAndNonInternalApps: function() {
	                var appsToHide = ['launcher','learned','introspection_generator_addon','framework'];
	                return this.filter(function(model) {
	                    var appName = model.entry.get('name');
	                    var canWrite = model.entry.acl.get('can_write');
	                    return (appsToHide.indexOf(appName) == -1 && canWrite);
	                });
	            },

	            search: function(rawSearch) {
	                var searchFilterString = splunkdUtil.createSearchFilterString(rawSearch, ['name', 'label']);
	                this.fetchData.set({search: searchFilterString, count: 5});
	            },

	            searchByValues: function(values) {
	                var $deferred = $.Deferred();
	                if (values === void 0) {
	                    $deferred.reject();
	                    return $deferred;
	                }
	                var searchFilterString = _.map(values, function(value) {
	                    return '(name='+splunkdUtil.quoteSearchFilterValue(value)+')';
	                }).join(' OR ');

	                this.fetchData.set('search', searchFilterString, {silent: true});
	                $.when(this.fetch())
	                    .then(function () {
	                        $deferred.resolve(this.models);
	                        this.reset(void 0, {silent:true});
	                    }.bind(this))
	                    .fail(function () {
	                        $deferred.reject();
	                    });
	                return $deferred;
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/AppLocal":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("models/SplunkDBase"),
	        __webpack_require__("util/general_utils"),
	        __webpack_require__("util/splunkd_utils"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, Backbone, SplunkDBaseModel, general_utils, splunkd_utils, splunkUtil) {
	        var sharingNames = {
	            user: _('Private').t(),
	            app: _('App').t(),
	            global: _('Global').t(),
	            system: _('Global').t()
	        };

	        // private sync method for links
	        var syncLink = function(link, model, options) {
	            if (!model.entry.links.get(link) && !options.url) {
	                throw new Error('URL not provided or ' + link + 'does not exist.');
	            }
	            var bbXHR,
	                deferredResponse = $.Deferred(),
	                defaults = {
	                    processData: true,
	                    type: 'POST',
	                    url: splunkd_utils.fullpath(model.entry.links.get(link)),
	                    data: {
	                        output_mode: 'json'
	                    }
	                };

	            options = options || {};

	            $.extend(true, defaults, options);
	            defaults.data = splunkd_utils.normalizeValuesForPOST(defaults.data);
	            bbXHR = Backbone.sync.call(null, "update", model, defaults);

	            bbXHR.done(function() {
	                deferredResponse.resolve.apply(deferredResponse, arguments);
	            });
	            bbXHR.fail(function(response, err, errMsg) {
	                model.trigger('error', model, response);
	                deferredResponse.reject.apply(deferredResponse, arguments);
	            });
	            return deferredResponse.promise();
	        };

	        return SplunkDBaseModel.extend({
	            url: "apps/local",
	            initialize: function() {
	                SplunkDBaseModel.prototype.initialize.apply(this, arguments);
	            },
	            appAllowsDisable: function() {
	                return this.entry.links.get("disable") ? true : false;
	            },
	            appAllowsEnable: function() {
	                return this.entry.links.get('enable') ? true : false;
	            },
	            isCoreApp: function() {
	                return general_utils.normalizeBoolean(this.entry.content.get('core'));
	            },
	            getSplunkAppsId: function() {
	                var details = this.entry.content.get('details');
	                if (details) {
	                    var idRe = /\/apps\/id\/(.*)/g;
	                    var res = idRe.exec(details);
	                    if (res.length === 2) {
	                        return res[1];
	                    }
	                }
	            },
	            isDisabled: function() {
	                return this.entry.content.get('disabled');
	            },
	            getLink: function(name) {
	                return this.entry.links.get(name);
	            },
	            // Using getAppId to match apps remote similar method name
	            getAppId: function() {
	                return this.entry.get('name');
	            },
	            // Using getTitle to match apps remote similar method name
	            getTitle: function() {
	                return this.entry.content.get('label');
	            },
	            getVersion: function() {
	                return this.entry.content.get('version');
	            },
	            getDetails: function() {
	                return this.entry.content.get('details');
	            },
	            getBuild: function() {
	                return this.entry.content.get('build');
	            },
	            getCheckForUpdates: function() {
	                return this.entry.content.get('check_for_updates');
	            },
	            getVisibility: function() {
	                return this.entry.content.get('visible');
	            },
	            getLabel: function() {
	                var id = this.getAppId();
	                var name = this.getTitle() || '';
	                if (_.isUndefined(id)) {
	                    return '';
	                } else {
	                    return splunkUtil.sprintf('%s (%s)', name, id);
	                }
	            },
	            getValue: function() {
	                return this.getAppId();
	            },
	            getSharingName: function() {
	                return sharingNames[this.entry.acl.get('sharing')];
	            },
	            // Toggles the 'check_for_updates' flag
	            toggleUpdateChecking: function() {
	                this.entry.content.set('check_for_updates', !this.getCheckForUpdates());
	            },
	            // Toggles the 'visible' flag
	            toggleVisibility: function() {
	                this.entry.content.set('visible', !this.getVisibility());
	            },
	            // returns a promise to disable the app
	            disable: function() {
	                return syncLink.call(this, 'disable', this, {});
	            },

	            // returns a promise to enable the app
	            enable: function() {
	                return syncLink.call(this, 'enable', this, {});
	            },

	            // returns a boolean that tells if the app can be launched
	            canLaunch: function() {
	                return !!(!this.isDisabled() && this.getVisibility());
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "collections/SplunkDsBase":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("models/SplunkDBase"),
	        __webpack_require__("models/shared/fetchdata/EAIFetchData"),
	        __webpack_require__("collections/Base"),
	        __webpack_require__("util/splunkd_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        Backbone,
	        SplunkDBaseModel,
	        EAIFetchData,
	        Base,
	        splunkDUtils
	    )
	    {
	        /**
	         * @constructor
	         * @memberOf collections
	         * @name SplunkDsBase
	         * @extends {collections.Base}
	         */
	        return Base.extend(/** @lends collections.SplunkDsBase.prototype */{
	            model: SplunkDBaseModel,
	            initialize: function(models, options) {
	                options = options || {};
	                options.fetchData = options.fetchData || new EAIFetchData();
	                Base.prototype.initialize.call(this, models, options);
	                this.initializeAssociated();
	            },
	            initializeAssociated: function() {
	                this.links = this.links || new SplunkDBaseModel();
	                this.paging = this.paging || new SplunkDBaseModel();
	            },
	            fetch: function(options) {
	                return Base.prototype.fetch.call(this, $.extend(true, {}, { reset: true }, options));
	            },
	            sync: function(method, collection, options) {
	                options = options || {};
	                var bbXHR, url,
	                    defaults = {data: {output_mode: 'json'}, traditional: true};

	                switch (method) {
	                    case 'read':
	                        if((window.$C['SPLUNKD_FREE_LICENSE'] || options.isFreeLicense) && collection.FREE_PAYLOAD) {
	                            if(options.success) {
	                                options.success(collection, collection.FREE_PAYLOAD, options);
	                            }
	                            var dfd = $.Deferred();
	                            return dfd.resolve.apply(dfd, [collection, collection.FREE_PAYLOAD, options]);
	                        }
	                        url = _.isFunction(collection.url) ? collection.url() : collection.url;
	                        var appOwner = this.getAppOwner(options);
	                        defaults.url = splunkDUtils.fullpath(url, appOwner);
	                        $.extend(true, defaults, options);

	                        delete defaults.data.app;
	                        delete defaults.data.owner;
	                        delete defaults.data.sharing;

	                        return Backbone.sync.call(this, "read", collection, defaults);
	                    default:
	                        throw new Error('invalid method: ' + method);
	                }
	            },
	            parse: function(response){
	                // Make sure to initialize the associated (if they already exist this call will do nothing).
	                // There are cases where parse can be called before initialize.
	                this.initializeAssociated();
	                this.links.set(response.links);
	                delete response.links;
	                if (response.paging) {
	                    this.paging.set(response.paging);
	                    // TODO: clean up after the paging gets added, and update any consumers of this information
	                    // delete response.paging;
	                }

	                var results = response.entry,
	                    header = $.extend(true, {}, response);
	                delete header.entry;

	                return _.map(results, function(result) {
	                    var container = $.extend(true, {}, header);
	                    container.entry = [$.extend(true, {}, result)];
	                    return container;
	                });
	            },
	            setFromSplunkD: function(payload, options){
	                // have to use parse=true or the reset won't work correctly
	                this.reset(payload, $.extend({parse: true}, options));
	            },
	            findByEntryName: function(name) {
	                return this.find(function(model) {
	                    return model.entry.get('name') === name;
	                });
	            },
	            getAppOwner: function(options) {
	                var appOwner = {};
	                if(options.data){
	                    appOwner = $.extend(appOwner, { //JQuery purges undefined
	                        app: options.data.app || undefined,
	                        owner: options.data.owner || undefined,
	                        sharing: options.data.sharing || undefined
	                    });
	                }
	                return appOwner;
	            }
	        }, {
	            // When fetching with user equal to wildcard adding this string to the search param will 
	            // limit results to items shared with or created by the owner.
	            availableWithUserWildCardSearchString: function(owner) {
	                return '((eai:acl.sharing="user" AND eai:acl.owner=' + splunkDUtils.quoteSearchFilterValue(owner) + ') OR (eai:acl.sharing!="user"))';
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/shared/fetchdata/EAIFetchData":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * A reusable model encapsulating the fetch data for EAI endpoints.
	 *
	 * Adds special handling of the "sortKey" and "sortDirection" attributes, which are mapped to the keys that
	 * the EAI-like endpoints expect, and the "filter" attribute, which is mapped from a dictionary of string pairs
	 * to a filter search string.
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	            __webpack_require__("require/underscore"),
	            __webpack_require__("models/Base")
	        ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	            _,
	            Base
	        ) {

	    return Base.extend({

	        defaults: {
	            filter: {}
	        },

	        toJSON: function(options) {
	            var json = Base.prototype.toJSON.apply(this, arguments);

	            if(json.sortKey) {
	                json.sort_key = json.sortKey;
	                json.sort_dir = json.sortDirection;
	            }
	            delete json.sortKey;
	            delete json.sortDirection;

	            if(_(json.filter).size() > 0) {
	                var search = [];
	                _(json.filter).each(function(match, key) {
	                    search.push(key + '=*' + match + '*');
	                });
	                json.search = search.join(' ');
	            }
	            delete json.filter;

	            return json;
	        }

	    });

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "collections/Base":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/***
	 *
	 * TODO: lots of repeated code here and in the base model for broadcasting errors, safe fetch, and the fetch data model
	 *       consider one or more mixins
	 *
	 * TODO: potential memory leaks when binding to events on the fetchData model, do we need a hook for disposing of collections?
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("mixins/modelcollection"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("shim/splunk.util"),
	        __webpack_require__("util/splunkd_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, Backbone, modelcollectionMixin, Base, splunkUtils, splunkDUtils) {
	        /**
	         * @namespace collections
	         */
	        /**
	         * @constructor
	         * @memberOf collections
	         * @name Base
	         * @description A base collection with some generic useful methods/behaviors
	         * @extends {Backbone.Collection}
	         * @mixes modelcollection
	         */
	        var BaseCollection = Backbone.Collection.extend(/** @lends collections.Base.prototype */{
	            initialize: function(models, options) {
	                Backbone.Collection.prototype.initialize.apply(this, arguments);

	                this.fetchData = (options && options.fetchData) ? options.fetchData : new Base();
	                this.fetchData.on('change', _.debounce(function() { this.safeFetch(); }, 0), this);
	                this.associated = this.associated || {};
	                this.on('sync', this._onsync, this);
	                this.on('error', this._onerror, this);
	                this.on('reset', this.previousModelsOff, this);
	            },
	            fetch: function(options) {
	                // merge the contents of the fetchData model into options.data
	                var mergedOptions = this.getMergedOptions(options);
	                this.fetchXhr = Backbone.Collection.prototype.fetch.call(this, mergedOptions);
	                // on successful fetch, handle any calls to safeFetch that came in while we were in-flight
	                var that = this;
	                this.fetchXhr.done(function() {
	                    if(that.touched) {
	                        that.safeFetch.apply(that, that.touched);
	                    }
	                });
	                return this.fetchXhr;
	            },
	            _onerror: function(collection, response, options) {
	                var messages = splunkDUtils.xhrErrorResponseParser(response, this.id);
	                this.trigger('serverValidated', false, this, messages);
	            },
	            _onsync: function(collection, response, options) {
	                var messages  = this.parseSplunkDMessages(response),
	                    hasErrors = _(messages).any(function(message) {
	                        return (message.type === splunkDUtils.ERROR || message.type === splunkDUtils.FATAL);
	                    });
	                this.trigger('serverValidated', !hasErrors, this, messages);
	            },
	            parseSplunkDMessages: function(response) {
	                if(!response) {
	                    return [];
	                }
	                return splunkDUtils.parseMessagesObject(response.messages);
	            },
	            deepOff: function() {
	                modelcollectionMixin.deepOff.apply(this, arguments);
	                this.each(function(model) {
	                    if (_.isFunction(model.deepOff)) {
	                        model.deepOff();
	                    }
	                });
	            },
	            associatedOff: function(events, callback, context) {
	                _(this.associated).each(function(associated) {
	                    associated.off(events, callback, context);
	                    if(_.isFunction(associated.associatedOff)) {
	                        associated.associatedOff(events, callback, context);
	                    }
	                }, this);
	                
	                this.each(function(model) {
	                    if(_.isFunction(model.associatedOff)) {
	                        model.associatedOff(events, callback, context);
	                    }
	                });
	                // fetchData is not part of the associated container, but should still be unbound
	                this.fetchData.off(events, callback, context);
	            },
	            previousModelsOff: function(models, options) {
	                _(options.previousModels).each(function(model) {
	                    if (_.isFunction(model.deepOff)) {
	                        model.deepOff();
	                    }
	                });
	            },
	            reverse: function(options) {
	                options || (options = {});
	                var reversedModels = [].concat(this.models).reverse();
	                if (options.mutate===false) {
	                    return reversedModels;
	                }
	                this.reset(reversedModels, options);
	            },
	            isValid: function(options) {
	                return this.all(function(model) { return model.isValid(options); });
	            },
	            // Backbone's collection clone makes a shallow copy (the models are shared references)
	            // this version will clone each model and put the clones in the new collection
	            deepClone: function() {
	                return new this.constructor(this.invoke('clone'));
	            },
	            clearErrors: function() {
	                this.trigger('serverValidated', true, this, []);
	            },
	            getMergedOptions: function(options) {
	                return $.extend(true, {}, {data: this.fetchData.toJSON()}, options);
	            }
	        });
	        _.extend(BaseCollection.prototype, modelcollectionMixin);
	        
	        return BaseCollection;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// splunk bar
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__("require/backbone"),
	    module,
	    __webpack_require__("shim/splunk.util"),
	    __webpack_require__("helpers/Session"),
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/Icon"),
	    __webpack_require__("views/shared/splunkbar/MenuButton"),
	    __webpack_require__("views/shared/delegates/Popdown"),
	    __webpack_require__("views/shared/splunkbar/system/Master"),
	    __webpack_require__("views/shared/splunkbar/user/Master"),
	    __webpack_require__("views/shared/splunkbar/messages/Master"),
	    __webpack_require__("views/shared/splunkbar/activity/Master"),
	    __webpack_require__("views/shared/splunkbar/help/Master"),
	    __webpack_require__("views/shared/splunkbar/find/Master"),
	    __webpack_require__("views/shared/splunkbar/noconnection/Master"),
	    __webpack_require__("views/shared/splunkbar/product/Master"),
	    __webpack_require__("views/shared/splunkbar/apps/Master"),
	    __webpack_require__("models/services/AppLocal"),
	    __webpack_require__("models/shared/User"),
	    __webpack_require__("models/services/server/ServerInfo"),
	    __webpack_require__("models/services/configs/Web"),
	    __webpack_require__("models/shared/Application"),
	    __webpack_require__("models/services/data/UserPrefGeneral"),
	    __webpack_require__("collections/services/authentication/CurrentContexts"),
	    __webpack_require__("collections/services/AppLocals"),
	    __webpack_require__("collections/services/Messages"),
	    __webpack_require__("collections/services/data/ui/Managers"),
	    __webpack_require__("collections/shared/splunkbar/SystemMenuSections"),
	    __webpack_require__(343),
	    __webpack_require__("views/shared/splunkbar/Master.pcssm"),
	    __webpack_require__("uri/route"),
	    __webpack_require__("util/splunkd_utils"),
	    __webpack_require__("util/csrf_protection"),
	    __webpack_require__("util/ajax_no_cache")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	     _,
	     Backbone,
	     module,
	     splunkUtil,
	     Session,
	     BaseView,
	     IconView,
	     ButtonView,
	     Popdown,
	     SystemMenu,
	     UserMenu,
	     MessagesView,
	     ActivityMenu,
	     HelpMenu,
	     FindBar,
	     NoConnectionView,
	     ProductMenu,
	     AppMenuView,
	     AppLocalModel,
	     UserModel,
	     ServerInfoModel,
	     WebConfModel,
	     ApplicationModel,
	     UserPrefModel,
	     CurrentContextsCollection,
	     AppsCollection,
	     MessagesCollection,
	     ManagersCollection,
	     SystemMenuSectionsCollection,
	     template,
	     css,
	     route,
	     splunkDUtils
	){
	    var View = BaseView.extend({
	        moduleId: module.id,
	        css: css,
	        defaults: {
	            showAppsList: true
	        },
	        initialize: function() {
	            BaseView.prototype.initialize.apply(this, arguments);

	            this.children.helpTemp = new ButtonView({label: _("Help").t()});
	            this.children.activityTemp = new ButtonView({label: _("Activity").t()});
	            this.children.systemTemp = new ButtonView({label: _("System").t()});
	            this.children.messagesTemp = new ButtonView({label: _("Messages").t()});
	            this.children.splunk = new IconView({icon: 'splunk'});
	            this.children.prompt = new IconView({icon: 'greaterRegistered'});

	            this.options = _.extend({},this.defaults, this.options);
	            this.MAX_RETRIES_BEFORE_FAIL = 3;
	            this.MESSAGES_POLLING_DELAY_STANDARD = 60000;
	            this.MESSAGES_POLLING_DELAY_HI_FREQ = 1000;
	            this.isFreeDfd = $.Deferred();
	            this.userDfd = $.Deferred();
	            this.appsDfd =  $.Deferred();
	            this.serverInfoDfd = $.Deferred();
	            this.webConfDfd = $.Deferred();
	            this.cntRetries = 0;
	            if (this.model && this.model.user && this.model.user.entry.content.has('realname')){
	                this.userDfd.resolve();
	            } else {
	                this.model.user.on('sync', function() {
	                    this.userDfd.resolve();
	                }, this);
	            }
	            if (this.collection && this.collection.apps && this.collection.apps.length){
	                this.appsDfd.resolve();
	            } else {
	                this.collection.apps.on('sync', function() {
	                    this.appsDfd.resolve();
	                }, this);
	            }
	            if (this.model && this.model.serverInfo) {
	                if (this.model.serverInfo.hasAttr('isFree')) {
	                    if (this.model.serverInfo.isFreeLicense()) {
	                        this.isFreeDfd.resolve();
	                    } else {
	                        this.isFreeDfd.reject();
	                    }
	                } else {
	                    this.model.serverInfo.on('change reset', function () {
	                        if (this.model.serverInfo.isFreeLicense()) {
	                            this.isFreeDfd.resolve();
	                        } else {
	                            this.isFreeDfd.reject();
	                        }
	                    }.bind(this));
	                }
	                if (this.model.serverInfo.hasAttr('product_type')){
	                    this.serverInfoDfd.resolve();
	                } else {
	                    this.model.serverInfo.on('sync', function () {
	                        this.serverInfoDfd.resolve();
	                    }, this);
	                }
	            }
	            this.collection.sections.on('reset', this.sectionsMunger, this);
	            Session.on('restart timeout', function() {
	                this.collection.messages.stopPolling();
	            }, this);
	            Session.on('start', function() {
	                this.collection.messages.startPolling();
	            }, this);

	            if (this.model && this.model.webConf){
	                if (this.model.webConf.entry && this.model.webConf.entry.content &&
	                    this.model.webConf.entry.content.has('showProductMenu')){
	                    this.webConfDfd.resolve();
	                } else {
	                    this.model.webConf.on('sync', function() {
	                        this.webConfDfd.resolve();
	                    }, this);
	                }
	            }
	        },
	        remove: function() {
	            BaseView.prototype.remove.apply(this, arguments);
	            Session.off('restart timeout start', null, this);
	            return this;
	        },
	        render: function() {
	            $.when(this.serverInfoDfd).then(function() {
	                var isCloud = this.model.serverInfo.isCloud();

	                var homeLink = route.home(
	                    this.model.application.get('root'),
	                    this.model.application.get('locale'));

	                var html = this.compileTemplate(template)({
	                    makeUrl: splunkUtil.make_url,
	                    options: this.options,
	                    homeLink: homeLink,
	                    css: css,
	                    cloud: isCloud
	                });
	                this.$el.html(html);

	                //insert Placeholders
	                this.children.helpTemp.render().appendTo(this.$('[data-role=right-nav]'));
	                this.children.activityTemp.render().prependTo(this.$(isCloud ? '[data-role=left-nav]' : '[data-role=right-nav]'));
	                this.children.systemTemp.render().prependTo(this.$(isCloud ? '[data-role=left-nav]' : '[data-role=right-nav]'));
	                this.children.messagesTemp.render().prependTo(this.$( isCloud ? '[data-role=left-nav]' : '[data-role=right-nav]'));
	                this.children.splunk.render().prependTo(this.$('[data-action=home]'));
	                this.children.prompt.render().prependTo(this.$('[data-role=gt]'));
	                if (this.model.serverInfo.hasAttr('activeLicenseSubgroup')) {
	                    var subgroup_id = this.model.serverInfo.entry.content.get('activeLicenseSubgroup');
	                    if (!_.isEmpty(subgroup_id)
	                        && _.isString(subgroup_id)
	                        && subgroup_id.lastIndexOf('Production',0) !== 0
	                        && subgroup_id !== 'UNKNOWN_LICENSE_SUBGROUP'
	                    ) {
	                        var wrapper = document.createElement("div");
	                        var devTest = $("<span>", {
	                            "class": css.devTest,
	                            title: _("For non-production use only").t(),
	                            text: _(subgroup_id).t()
	                        });
	                        devTest.appendTo(wrapper);
	                        this.$('[data-role=left-nav]').append(wrapper);
	                    }
	                }

	                var activeMenu = this.getActiveMenu();

	                $.when(this.userDfd, this.appsDfd).then(function() {
	                    if (this.model.user.canUseApps() && this.options.showAppsList){
	                        this.children.apps = new AppMenuView({
	                            collection: this.collection,
	                            model: this.model,
	                            activeMenu: activeMenu
	                        });

	                        this.children.apps.prependTo(this.$('[data-role=left-nav]'));
	                    }
	                    this.children.systemMenu = new SystemMenu({
	                        collection: {
	                            sections: this.collection.sections,
	                            managers: this.collection.managers,
	                            apps: this.collection.apps
	                        },
	                        model: {
	                            application: this.model.application,
	                            user: this.model.user
	                        }
	                    });
	                    this.children.systemTemp.$el.replaceWith(this.children.systemMenu.render().el);

	                    this.children.findbar = new FindBar({
	                        model: {
	                            user: this.model.user,
	                            application: this.model.application,
	                            serverInfo: this.model.serverInfo
	                        },
	                        collection: {
	                            apps: this.collection.apps
	                        }
	                    });

	                    this.children.findbar.render().appendTo(this.$(isCloud ? '[data-role=left-nav]' : '[data-role=right-nav]'));

	                    this.webConfDfd.done(function(){
	                        this.isFreeDfd.fail(function() {

	                            this.children.userMenu = new UserMenu({
	                                collection: {
	                                    currentContext: this.model.currentContext //this represents the current logged in user
	                                },
	                                model: {
	                                    user: this.model.user,
	                                    application: this.model.application,
	                                    webConf: this.model.webConf,
	                                    config: this.model.config,
	                                    serverInfo: this.model.serverInfo
	                                }
	                            });
	                            this.children.userMenu.render().prependTo(this.$('[data-role=right-nav]'));
	                        }.bind(this));

	                        this.children.messages = new MessagesView({
	                            collection: {
	                                messages: this.collection.messages,
	                                legacyMessages: this.collection.legacyMessages
	                            },
	                            model: {
	                                serverInfo: this.model.serverInfo,
	                                updateChecker: this.model.updateChecker,
	                                userPref: this.model.userPref,
	                                webConf: this.model.webConf,
	                                application: this.model.application,
	                                user: this.model.user
	                            }
	                        });
	                        this.children.messagesTemp.$el.replaceWith(this.children.messages.render().el);
	                        this.restartMessagePolling(this.MESSAGES_POLLING_DELAY_STANDARD);

	                    }.bind(this));
	                }.bind(this));

	                this.children.noConnectionModal = new NoConnectionView({});
	                $('body').append(this.children.noConnectionModal.render().el);

	                this.collection.messages.on('serverValidated', function(success, context, messages) {
	                    if (success && this.cntRetries > 0) {
	                        this.restartMessagePolling(this.MESSAGES_POLLING_DELAY_STANDARD);
	                        this.children.noConnectionModal.hide();
	                        this.cntRetries = 0;
	                        return;
	                    }
	                    var netErrorMsg = _.find(messages, function(msg) {
	                        return msg.type == splunkDUtils.NETWORK_ERROR || 'network_error';
	                    });
	                    if (netErrorMsg) {
	                        if (this.cntRetries == 0) {
	                            this.restartMessagePolling(this.MESSAGES_POLLING_DELAY_HI_FREQ);
	                        }
	                        if (this.cntRetries >= this.MAX_RETRIES_BEFORE_FAIL) {
	                            this.children.noConnectionModal.show();
	                        }
	                        this.cntRetries += 1;
	                    }
	                }, this);

	                $.when(this.userDfd, this.appsDfd).then(function() {
	                    this.children.activityMenu = new ActivityMenu({
	                        model: {
	                            user: this.model.user,
	                            application: this.model.application
	                        }
	                    });
	                    this.children.activityTemp.$el.replaceWith(this.children.activityMenu.render().el);

	                    this.children.helpMenu = new HelpMenu({
	                        model: this.model,
	                        collection: {
	                            apps: this.collection.apps
	                        }
	                    });
	                    this.children.helpTemp.$el.replaceWith(this.children.helpMenu.render().el);

	                    // highlight the active menu
	                    if (activeMenu){
	                        this.$(activeMenu.selector).attr("data-active", "true");
	                    }
	                }.bind(this));

	                //product menu
	                $.when(this.webConfDfd, this.userDfd).done(function(){
	                    var isCloud = this.model.serverInfo.isCloud(),
	                        showProductMenu = splunkUtil.normalizeBoolean(this.model.webConf.entry.content.get('showProductMenu'));
	                    if (isCloud && showProductMenu){
	                        this.children.productMenu = new ProductMenu({
	                            model: this.model,
	                            collection: this.collection
	                        });

	                        var afterView = this.children.helpMenu || this.children.helpTemp;
	                        this.children.productMenu.render().insertBefore(afterView.$el);
	                    }

	                }.bind(this));

	                return this;
	            }.bind(this));
	        },
	        restartMessagePolling: function(interval) {
	            this.collection.messages.stopPolling();
	            this.collection.messages.startPolling({delay: interval, uiInactivity: true, stopOnError: false, data: {count: 1000}});
	        },
	        getActiveMenu: function() {
	            // the active menu is based on the current page
	            // get path
	            var path = Backbone.history.location.pathname;
	            var pathComponents = path.split("/"),
	                pathComponentsLen = pathComponents.length;
	            var appAndPageComponents = [pathComponents[pathComponentsLen-2], pathComponents[pathComponentsLen-1]];
	            var appAndPage = appAndPageComponents.join("/");
	            var locale = this.model.application.get('locale');
	            var app = this.model.application.get('app');

	            var activityPages = ["search/status_index",
	                                 "search/search_status", "search/search_detail_activity", "search/search_activity_by_user",
	                                 "search/splunkweb_status", "search/internal_messages",
	                                 "search/scheduler_status", "search/scheduler_user_app", "search/scheduler_savedsearch", "search/scheduler_status_errors", "search/pdf_activity"];
	            var changePasswordPage = "authentication/changepassword";
	            var jobManagerPage = app + '/job_manager';
	            var triggeredAlertsPage = locale + '/alerts';
	            var homePage = "launcher/home";
	            var managerPage = locale + "/manager";

	            var activeMenuSelector = null;
	            var activeMenuName = '';
	            if (activityPages.indexOf(appAndPage) > -1 ||
	                path.indexOf(jobManagerPage) > -1 ||
	                path.indexOf(triggeredAlertsPage) > -1) {
	                activeMenuSelector = '.activity';
	                activeMenuName = "activity";
	            } else if (path.indexOf(changePasswordPage) > -1) {
	                activeMenuSelector = '.user';
	                activeMenuName = "user";
	            } else if (path.indexOf(managerPage) > -1) {
	                activeMenuSelector = 'menu-system';
	                activeMenuName = "manager";
	            } else if (path.indexOf(homePage) > -1) {
	                activeMenuSelector = '.brand';
	                activeMenuName = "home";
	            } else {
	                activeMenuSelector = '.menu-apps';
	                activeMenuName = "app";
	            }

	            return {
	                selector: activeMenuSelector,
	                name: activeMenuName
	            };
	        },
	        sectionsMunger: function() {
	            this.collection.sections.add({
	                id: 'knowledge_configurations',
	                label: _('Knowledge').t(),
	                icon: 'bookmark',
	                order: 1
	            });
	            this.collection.sections.add({
	                id: 'auth_configurations',
	                label: _('Users and authentication').t(),
	                icon: 'user',
	                order: 6
	            });
	            this.collection.sections.add({
	                id: 'deployment_configurations',
	                label: _('Distributed environment').t(),
	                icon: 'distributed-environment',
	                order: 5
	            });
	            this.collection.sections.add({
	                id: 'system_configurations',
	                label: _('System').t(),
	                icon: 'settings',
	                order: 2
	            });
	            this.collection.sections.add({
	                id: 'data_configurations',
	                label: _('Data').t(),
	                icon: 'data',
	                order: 4
	            });

	            this.collection.managers.each(function(manager){
	                var menuUrl = manager.entry.content.get('menu.url') || '',
	                    sectionName = manager.entry.content.get('menu.name'),
	                    disabledByLicense = splunkUtil.normalizeBoolean(manager.entry.content.get('disabled_by_license') || false),
	                    order = manager.entry.content.get('menu.order') || 1000,
	                    pageStart = route.encodeRoot(this.model.application.get('root'), this.model.application.get('locale')),
	                    url = pageStart + splunkUtil.sprintf(menuUrl, {namespace: this.model.application.get('app') || 'NOTHING'});

	                if(!disabledByLicense && sectionName){
	                    var section = this.collection.sections.get(sectionName);
	                    if(section){
	                        var sectionItems = section.get('items');
	                        if(sectionItems){
	                            sectionItems.push(manager);
	                        }
	                    }
	                }

	                manager.set({
	                    url: url,
	                    order: order
	                });
	            }.bind(this));

	            this.collection.sections.trigger('ready');
	        }
	    },
	    {
	        create: function(options){
	            options = options || {};
	            options.collection = options.collection || {};
	            options.model = options.model || {};

	            //the APPLICATION model is REQUIRED argument from the consumer. If its not passed, make up an empty one, to keep things rendering, and assure continuance
	            //TODO should log this
	            var applicationDfd = $.Deferred();
	            if(!options.model.application){
	                options.model.application = new ApplicationModel();
	            }
	            // handle both when the application model is already filled and when it has yet to complete fetching
	            if (options.model.application.get('app')) {
	                applicationDfd.resolve();
	            } else {
	                options.model.application.on('change', applicationDfd.resolve);
	            }

	            if(!options.model.appLocal) {
	                options.model.appLocal = new AppLocalModel();
	                applicationDfd.done(function() {
	                    if (options.model.application.get("app") !== 'system') {
	                        options.model.appLocal.fetch({
	                            url: splunkDUtils.fullpath(options.model.appLocal.url + "/" + encodeURIComponent(options.model.application.get("app"))),
	                            data: {
	                                app: options.model.application.get("app"),
	                                owner: options.model.application.get("owner")
	                            }
	                        });
	                    }
	                });
	            }

	            var currentUserIdDfd = $.Deferred();
	            currentUserIdDfd.resolve(options.model.application.get('owner'));

	            var appsDfd = $.Deferred();

	            var appsCollection;
	            if(!options.collection.apps){
	                appsCollection = options.collection.apps = new AppsCollection();
	                $.when(currentUserIdDfd).done(function(){
	                    appsCollection.fetch({
	                        data: {
	                            sort_key: 'name',
	                            sort_dir: 'asc',
	                            app: '-' ,
	                            owner: options.model.application.get('owner'),
	                            search: 'visible=true AND disabled=0 AND name!=launcher',
	                            count: -1
	                        }
	                    });
	                    appsCollection.on('reset sort', appsDfd.resolve);
	                });
	            } else {
	                appsDfd.resolve();
	            }

	            if (!options.model.userPref){
	                options.model.userPref = new UserPrefModel();
	                options.model.userPref.fetch({data: {app:'user-prefs', owner: options.model.application.get('owner'), count:-1}});
	                appsCollection = options.collection.apps;
	                options.model.userPref.on('change', function(){
	                    appsDfd.done(function(){
	                        appsCollection.sortWithString(options.model.userPref.entry.content.get('appOrder'));
	                        appsCollection.trigger('ready');
	                    });
	                });
	            }
	            else {
	                options.collection.apps.sortWithString(options.model.userPref.entry.content.get('appOrder'));
	            }

	            var serverInfoDfd = $.Deferred();
	            if (!options.model.serverInfo) {
	                options.model.serverInfo = new ServerInfoModel();
	                options.model.serverInfo.fetch({
	                    success: function() {
	                        serverInfoDfd.resolve();
	                    }
	                });
	            } else {
	                serverInfoDfd.resolve();
	            }


	            if(!options.model.user){
	                options.model.user = new UserModel({}, {serverInfoModel: options.model.serverInfo});
	                $.when(currentUserIdDfd, serverInfoDfd).done(function(currentUserId){
	                    options.model.user.set('id', encodeURIComponent(currentUserId));
	                    options.model.user.fetch();
	                });
	            }

	            if (!options.collection.messages) {
	                options.collection.messages = new MessagesCollection();
	                //SPL-48272 - fetch messages by time created in descending order
	                options.collection.messages.fetchData.set({
	                    "sort_key" : "timeCreated_epochSecs",
	                    "sort_dir" : "desc"
	                });
	            }

	            var managersDfd = $.Deferred();
	            if (!options.collection.managers){
	                options.collection.managers = new ManagersCollection();
	                $.when(currentUserIdDfd).done(function(currentUsername){
	                    options.collection.managers.fetch({
	                        data: {
	                            app: '-',
	                            owner: currentUsername,
	                            count: 0,
	                            digest: 1
	                        },
	                        success: function() {
	                            managersDfd.resolve();
	                        }
	                    });
	                });
	            } else {
	                managersDfd.resolve();
	            }

	            options.collection.sections = new SystemMenuSectionsCollection();
	            options.model.webConf = new WebConfModel({id: 'settings'});
	            options.model.webConf.fetch();

	            var view = new View(options);

	            $.when(managersDfd).done(function() {
	                view.sectionsMunger();
	            });

	            return view;
	        }
	    });
	    return View;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/apps/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        module,
	        __webpack_require__("views/shared/Menu"),
	        __webpack_require__("views/shared/splunkbar/MenuButton"),
	        __webpack_require__("views/shared/splunkbar/apps/MenuContents"),
	        __webpack_require__("shim/splunk.util"),
	        __webpack_require__("views/shared/splunkbar/apps/Master.pcssm"),
	        __webpack_require__("uri/route")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        $,
	        module,
	        MenuView,
	        MenuButtonView,
	        MenuContentsView,
	        splunk_util,
	        css,
	        route
	    ){
	        return MenuView.extend({
	            moduleId: module.id,
	            css: css,
	            initialize: function() {

	                if(this.options.activeMenu && this.options.activeMenu.name === 'app'){
	                    this.currentApp = this.model.application.get('app');
	                }
	                this.collection.apps.on('ready change reset', this.debouncedRender, this);

	                if (this.collection.apps.length > 0) {
	                    this.debouncedRender();
	                }

	                this.options.toggleView = new MenuButtonView({
	                    label:  _('Apps').t(),
	                    truncateLongLabels: true
	                });
	                this.options.contentView = new MenuContentsView({
	                    collection: {
	                        apps: this.collection.apps
	                    },
	                    model: {
	                        user: this.model.user,
	                        application: this.model.application
	                    },
	                    activeMenu: this.options.activeMenu
	                });

	                MenuView.prototype.initialize.apply(this, arguments);

	            },
	            render: function() {
	                MenuView.prototype.render.apply(this, arguments);

	                // TO DO: Simplify this...
	                var that = this,
	                    curApp = null;

	                this.collection.apps.each(function(model, key, list) {
	                    if(model.entry.get('name') === that.currentApp && model.entry.content.get('show_in_nav')) {
	                        curApp = model;
	                    }
	                });

	                curApp && this.options.toggleView.set({label: _('App:').t() + ' ' + _(curApp.entry.content.get('label')).t() });

	                this.children.popdown && this.children.popdown.on('show', this.options.contentView.setIcons, this);
	                return this;
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/Menu":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* REUSE WITH CAUTION
	/* ----------------------------------------------------------
	/* This a CSS Module based view should be considered as Beta.
	/* API is likely to change       */

	/**
	 * All options can be set during initialization or later, by using set().
	 * @initialize or @set
	 *
	 * @param {Object} [options]
	 * @param {String} [options.mode = 'menu'] - 'menu' or 'dialog'.
	 * @param {View Object} [options.toggleView = 1.0] -  the toggle view, such as an
	 * instance of a button. Must have an attribute of data-action="toggle".
	 * @param {View Object} [options.contentView = undefined] - the contents of the
	 * popdown menu.
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        module,
	        __webpack_require__("views/Base"),
	        __webpack_require__("views/shared/MenuDialog"),
	        __webpack_require__("views/shared/delegates/Popdown"),
	        __webpack_require__("views/shared/Menu.pcssm")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        $,
	        module,
	        BaseView,
	        MenuDialogView,
	        Popdown,
	        css
	    ){
	        return BaseView.extend({
	            moduleId: module.id,
	            attributes: {'data-popdown-role': 'popdown'},
	            css: css,
	            initialize: function() {
	                var defaults = {
	                    mode: 'menu'
	                };
	                _.defaults(this.options, defaults);

	                BaseView.prototype.initialize.apply(this, arguments);

	                this.children.dialog = new MenuDialogView({
	                    contentView: this.options.contentView
	                });
	                this.children.toggle = this.options.toggleView;
	                this.startListening();

	                return this;
	            },

	            startListening: function() {
	                this.stopListening();

	                this.options.contentView && this.listenTo(this.options.contentView, 'close', this.close);
	                this.children.dialog && this.listenTo(this.children.dialog, 'close', this.close);
	                BaseView.prototype.startListening.apply(this, arguments);
	            },

	            set: function(options) {
	                _.extend(this.options, options);
	                if (this.children.toggle !== this.options.toggleView) {
	                    this.children.toggle.remove();
	                    this.children.toggle = this.options.toggleView;
	                }
	                this.children.dialog.set({
	                    contentView: this.options.contentView
	                });

	                this.render(); // could cause a double render of the dialog contents;
	                this.startListening();

	                return this;
	            },
	            close: function() {
	                this.children.popdown.hide();
	            },
	            render: function () {
	                if (!this.el.innerHTML) {
	                    this.children.popdown = new Popdown({el: this.el, mode: this.options.mode});
	                    this.children.dialog.appendTo(this.$el);
	                }
	                this.$el.attr('class', this.css.view);

	                this.children.toggle.render().prependTo(this.$el);
	                this.children.dialog.render();

	                return this;
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/Base":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/backbone"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__("mixins/viewlogging"),
	    __webpack_require__("util/console"),
	    __webpack_require__("global/GlobalReflowQueue")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    Backbone,
	    _,
	    viewloggingmixin,
	    console,
	    GlobalReflowQueue
	){
	    /**
	     * @namespace views
	     */
	    /**
	     * @constructor
	     * @memberOf views
	     * @name Base
	     * @description A collection of Backbone.View utilities and conventions to assist with template
	     * compilation and cacheing, noop nested views and className naming conventions. The general
	     * rule of thumb is to not override native Backbone.View methods but to complement the core API
	     * with simple and useful patterns.
	     * @extends {Backbone.View}
	     * @mixes viewlogging
	     *
	     * @param {Object} options
	     * @param {String} [options.moduleId] An id (commonly the requirejs module.id) that is formatted
	     * and appended as a className to the root view el. Added as an instance member if passed in via
	     * the constructor.
	     *
	     * @param {String} [options.template] An _.template that is passed through the compileTemplate
	     * method. Added as an instance member if passed including an additional compiledTemplate
	     * instance member (see compileTemplate for specification).
	     */
	    var BaseView = Backbone.View.extend(/** @lends views.Base.prototype */{
	        awake: true,
	        touch: false,
	        active: false,
	        isReflowValid: true,

	        constructor: function(options) {
	            this.options = options || {};
	            this.children = {};

	            if (this.options.moduleId) {
	                this.moduleId = this.options.moduleId;
	            }
	            if (this.options.template) {
	                this.template = this.options.template;
	            }
	            if (this.template) {
	                this.compiledTemplate = this.compileTemplate(this.template);
	            }

	            if (this.css && Object.keys(this.css) && !this.className) {
	                this.options.dontAddModuleIdAsClass = true;
	            }
	            // Clone css to allow local overrides.
	            if (this.css) {
	                this.css = _.clone(this.css);
	            }

	            Backbone.View.apply(this, arguments);
	        },
	        initialize: function() {
	            var render = this.render;
	            this.render = _.bind(function() {
	                var start = (new Date()).getTime(),
	                    end;
	                if (this.awake) {
	                    render.apply(this, arguments);
	                } else {
	                    this.touch = true;
	                }
	                end = (new Date()).getTime();
	                if(this.options.instrument !== false) {
	                    this.$el.attr('data-render-time', (end - start)/1000);
	                }
	                return this;
	            }, this);

	            this.$el.attr('data-cid', this.cid);
	            if (this.moduleId) {
	                var className = this.cssNamespace();

	                if (!this.options.dontAddModuleIdAsClass) {
	                    this.$el.addClass(className);
	                }
	                this.$el.attr('data-view', this.moduleId);
	            }

	            // Add view class automatically
	            if (this.css && this.css.view) {
	                this.$el.addClass(this.css.view);
	            }
	        },

	        /**
	         * Calls the method named by methodName on each child of the view.
	         * @param {Function} method
	         * @param {...Any} [args] Any extra arguments will be passed to method on invocation
	         */
	        invokeOnChildren: function(method) {
	            if (!_.isString(method)) {
	                throw new Error('Your method must be a string');
	            }
	            var argsForMethod = Array.prototype.slice.call(arguments, 1);

	            _.each(this.children, function(child) {
	                if (_.isArray(child)) {
	                    _.each(child, function(view) {
	                        if (_.isFunction(view[method])) {
	                            view[method].apply(view, argsForMethod);
	                        }
	                    });
	                } else {
	                    if (child && _.isFunction(child[method])) {
	                        child[method].apply(child, argsForMethod);
	                    }
	                }
	            });
	        },

	        /**
	         * Iterates over the children of this view, yielding each in turn to an iterator function.
	         * @param {Function} iterator Each invocation of iterator is called with one argument:
	         * (child).
	         * @param {Any} [context] The iterator is bound to the context object, if one is passed.
	         */
	        eachChild: function(iterator, context) {
	            if (!_.isFunction(iterator)) {
	                throw new Error('Your iterator must be a function');
	            }

	            _.each(this.children, function(child){
	                if (_.isArray(child)) {
	                    _.each(child, function(view){
	                        if (!_.isNull(view)) {
	                            iterator.call(context, view);
	                        }
	                    });
	                } else if (!_.isNull(child)) {
	                    iterator.call(context, child);
	                }
	            });
	        },

	        /**
	         * Replaces render noop proxy to original render routine. Additionally traverses
	         * a special children attribute that consists of an object collection of views and
	         * calls wake if that method exists.
	         *
	         * @param {Object} options
	         *      @param {Boolean} [options.syncRender] Call the standard (sync) render method over
	         *      async (debouncedRender) variant.
	         *
	         */
	        wake: function(options) {
	            options || (options = {});
	            this.awake = true;
	            if (this.touch) {
	                this.touch = false;
	                if (options.syncRender) {
	                    this.render();
	                } else {
	                    this.debouncedRender();
	                }
	            }
	            this.invokeOnChildren('wake', options);
	            return this;
	        },
	        /**
	         * Stops any subsequent calls to render and proxies them to a noop routine. Additionally
	         * traverses a special children attribute that consists of an object collection of views and
	         * calls sleep if that method exists.
	         */
	        sleep: function() {
	            this.awake = false;
	            this.invokeOnChildren('sleep');
	            return this;
	        },

	        /**
	         * Postpone the execution of render until after the input has stopped arriving. Useful for
	         * assigning to model/collection change event listeners that should only happen after the
	         * input has stopped arriving.
	         */
	        debouncedRender: function() {
	            if (!this._debouncedRender) {
	                this._debouncedRender = _.debounce(this.render, 0);
	            }
	            this._debouncedRender.apply(this, arguments);
	        },

	        /**
	         * Compiles and memoizes an [_.template]{@link http://underscorejs.org/#template} string
	         * into a function that can be evaulated for rendering.
	         *
	         * @param {String} templateStr An _.template string for compilation into a function.
	         * @return {Function} A function that can be evaluated for rendering, pass in a data object
	         * that that has properties corresponding to the template's free variables.
	         * @function
	         */
	        compileTemplate: _.memoize(function(templateStr) {
	            return _.template(templateStr);
	        }),
	        /**
	         * Tailored for the requirejs module.id format converting into a safe and legal css
	         * class attribute. For example the following module id '/views/shared/SkidRow'
	         * would be converted to 'views-shared-skdrow'.
	         */
	        cssNamespace: function() {
	            return (this.moduleId || '').toLowerCase()
	                .replace(/\//g, '-')
	                .replace(/\_/g, '')
	                .replace(/^views-/, '')
	                .replace(/-master$/, '');
	        },
	        /**
	         * Generates a unique namespace that can be humanly cross-referenced to the view.
	         */
	        uniqueNS: function() {
	            return (this.moduleId || 'unidentified').toLowerCase().replace(/\//g, '-') + '-' + this.cid;
	        },

	        /**
	         * Subscribe listeners.
	         * implement as necessary
	         */
	        startListening: function() {
	        },

	        stopListening: function() {
	            if(arguments.length === 0) {
	                this.modelsOff(this.model);
	                this.collectionsOff(this.collection);
	            }
	            Backbone.View.prototype.stopListening.apply(this, arguments);
	        },

	        remove: function() {
	            this.removeChildren();
	            if (this._isAddedToDocument) {
	                this.onRemovedFromDocument();
	                this._isAddedToDocument = false;
	            }
	            this.stopListening();
	            this.$el.remove();
	            GlobalReflowQueue.remove(this);
	            return this;
	        },

	        debouncedRemove: function(options) {
	            options || (options = {});
	            var defaults = {
	                detach: false
	            };
	            _.defaults(options, defaults);
	            if (options.detach) {
	                this.$el.detach();
	            }
	            if (!this._debouncedRemove) {
	                this._debouncedRemove = _.debounce(this.remove, 0);
	            }
	            this._debouncedRemove.apply(this, arguments);
	            return this;
	        },

	        removeChildren: function() {
	            this.invokeOnChildren('remove');
	        },

	        ensureDeactivated: function(options) {
	            if (this.active) {
	                this.deactivate(options);
	            }
	        },

	        activate: function(options) {
	            options || (options = {});
	            // the options for startListening and trigger are always shallow
	            var clonedOptions = _.extend({startListening: true, trigger: true}, options);
	            delete options.startListening;
	            delete options.trigger;
	            if (!this.active && clonedOptions.startListening) {
	                this.startListening();
	            }
	            if (this.active) {
	                console.debug("Calling activate again on view:" + this.moduleId, this.cid);
	            } else {
	                this.active = true;
	                if (clonedOptions.trigger) {
	                    this.trigger("activated");
	                }
	            }
	            //children get activated after the parent
	            if (options.deep) {
	                this.invokeOnChildren('activate', options);
	            }
	            return this;
	        },

	        deactivate: function(options) {
	            options || (options = {});
	            // the options for stopListening and trigger are always shallow
	            var clonedOptions = _.extend({stopListening: true, trigger: true}, options);
	            delete options.stopListening;
	            delete options.trigger;
	            //children get deactivated before the parent
	            if (options.deep) {
	                this.invokeOnChildren('deactivate', options);
	            }
	            if (this.active && clonedOptions.stopListening) {
	                this.stopListening();
	            }
	            if (!this.active) {
	                console.debug("Calling deactivate again on view:" + this.moduleId, this.cid);
	            } else {
	                this.active = false;
	                if (clonedOptions.trigger) {
	                    this.trigger("deactivated");
	                }
	            }
	            return this;
	        },

	        /**
	         *  Helper function for deepDestroy, recursively calls off() on its model(s)
	         */
	        modelsOff: function (model) {
	            if (model instanceof Backbone.Model) {
	                _.isFunction(model.associatedOff) && model.associatedOff(null, null, this);
	                model.off(null, null, this);
	            } else if (_.isArray(model) || $.isPlainObject(model)) { // SPL-90156
	                _(model).each(function(mod) {
	                    this.modelsOff(mod);
	                }, this);
	            } else if (model instanceof Backbone.Collection) { // TODO: revisit this logic after Dash release
	                console.warn("Warning: trying to call modelsOff() on a Backbone.Collection object, please move it to this.collection instead.");
	                this.collectionsOff(model);
	            } else if (model != null) {
	                console.warn('Warning: trying to call modelsOff() on non-Backbone.Model object! Maybe move it to this.options?');
	            }
	            return this;
	        },
	        /**
	         *  Helper function for deepDestroy, recursively calls off() on its collections(s)
	         */
	         collectionsOff: function(collection) {
	            if (collection instanceof Backbone.Collection) {
	                collection.off(null, null, this);
	            } else if (_.isArray(collection) || $.isPlainObject(collection)) {
	                _(collection).each(function(coll) {
	                    this.collectionsOff(coll);
	                }, this);
	            } else if (collection instanceof Backbone.Model) { // TODO: revisit this logic after Dash release
	                console.warn("Warning: trying to call collectionsOff() on a Backbone.Model object, pleaes move it to this.model instead.");
	                this.modelsOff(collection);
	            } else if (collection != null) {
	                console.warn('Warning: trying to call collectionsOff() on non-Backbone.Collection object! Maybe move it to this.options?');
	            }
	            return this;
	        },

	        /**
	         * Helper function for removing the view from the DOM while a render occurs. If you call this on subviews in
	         * a render function, jQuery will remove all of the subview's event listeners
	         */
	        detach: function() {
	            if (this._isAddedToDocument) {
	                this.onRemovedFromDocument();
	                this._isAddedToDocument = false;
	            }
	            this.$el.detach();
	        },

	        // add instance methods for all commonly used jQuery attachment methods
	        //replaceContentsOf is the analog of $.html($container)
	        replaceContentsOf: function($container) {
	            if(_.isString($container)) {
	                throw new Error('replaceContentsOf does not support selectors or HTML strings');
	            }

	            // ensure the given $container parameter is a jQuery object
	            $container = $($container);
	            $container.empty();
	            return this.attachToDocument($container, 'appendTo');
	        },
	        appendTo: function($container) { return this.attachToDocument($container, 'appendTo'); },
	        prependTo: function($container) { return this.attachToDocument($container, 'prependTo'); },
	        replaceAll: function($container) { return this.attachToDocument($container, 'replaceAll'); },
	        insertAfter: function($container) { return this.attachToDocument($container, 'insertAfter'); },
	        insertBefore: function($container) { return this.attachToDocument($container, 'insertBefore'); },

	        /**
	         * Attach the view to the given DOM element using the given method.
	         * If afterward the view is attached to the document element, the onAddedToDocument method will be called.
	         * If the view was already attached to the document element, and the given DOM element is different than
	         * the view's current parent element, the onRemovedFromDocument method will be called first.
	         *
	         * Not meant to be called directly, only as a helper for the more specific attachment methods above.
	         *
	         * @param {DOM|jQuery} $container The target element
	         * @param {String} attachmentMethod a valid jQuery DOM attachment method name
	         */
	        attachToDocument: function($container, attachmentMethod) {
	            if(_.isString($container)) {
	                throw new Error(attachmentMethod + ' does not support selectors or HTML strings');
	            }

	            // ensure the given $container parameter is a jQuery object
	            $container = $($container);

	            // if no container, abort
	            if ($container.length === 0) {
	                return this;
	            }

	            // get the raw DOM container
	            var container = $container[0];

	            // call onRemovedFromDocument if needed
	            var oldParent = this.el.parentNode;
	            if (oldParent && (oldParent !== container)) {
	                if (this._isAddedToDocument) {
	                    this.onRemovedFromDocument();
	                    this._isAddedToDocument = false;
	                }
	            }

	            // do the attachment
	            this.$el[attachmentMethod]($container);

	            // call onAddedToDocument if needed
	            if (oldParent !== container) {
	                if ($.contains(document.documentElement, this.el)) {
	                    this._isAddedToDocument = true;
	                    this.onAddedToDocument();
	                }
	            }

	            return this;
	        },

	        /**
	         * Called when this view is added to the document. Recursively calls
	         * onAddedToDocument on all child views. Override this method with custom code
	         * that should be run when this view is added to the document. Make sure to call
	         * the base implementation when overriding.
	         *
	         * This method is automatically called and should not be called directly.
	         */
	        onAddedToDocument: function() {
	            this.invalidateReflow();
	            this.eachChild(function(child) {
	                if (_.isFunction(child.onAddedToDocument) && this.isAncestorOf(child) && !child._isAddedToDocument) {
	                    child._isAddedToDocument = true;
	                    child.onAddedToDocument();
	                }
	            }, this);
	            this.trigger('addedToDocument');
	        },

	        /**
	         * Called when this view is removed from the document. Recursively calls
	         * onRemovedFromDocument on all child views. Override this method with custom
	         * code that should be run when this view is removed from the document. Make
	         * sure to call the base implementation when overriding.
	         *
	         * This method is automatically called and should not be called directly.
	         */
	        onRemovedFromDocument: function() {
	            this.isReflowValid = true;
	            GlobalReflowQueue.remove(this);
	            this.eachChild(function(child) {
	                if (_.isFunction(child.onRemovedFromDocument) && this.isAncestorOf(child) && child._isAddedToDocument) {
	                    child.onRemovedFromDocument();
	                    child._isAddedToDocument = false;
	                }
	            }, this);
	            this.trigger('removedFromDocument');
	        },

	        /**
	         * Returns a boolean indicating whether the view is currently attached to the document element
	         */
	        isAddedToDocument: function() {
	            return this._isAddedToDocument;
	        },

	        /**
	         * Returns true if this view is an ancestor of the given view; false otherwise;
	         *
	         * @param {Backbone.View} descendant A Backbone.View instance to test against.
	         */
	        isAncestorOf: function(descendant) {
	            return descendant.el ? $.contains(this.el, descendant.el) : false;
	        },

	        /**
	         * Returns true if this view is a descendant of the given view; false otherwise;
	         *
	         * @param {Backbone.View} ancestor A Backbone.View instance to test against.
	         */
	        isDescendantOf: function(ancestor) {
	            return ancestor.el ? $.contains(ancestor.el, this.el) : false;
	        },

	        /**
	         * Instruct the view to re-flow itself in its current container.
	         *
	         * Override this method to do any work that is required when the view needs to adjust to its container size.
	         */
	        reflow: function() {
	        },

	        /**
	         * Helper function that returns the paths of ancestor Backbone views. The algorithm
	         * traverses the DOM up the parent chain and the data-view attribute of each DOM element
	         * with a data-view attribute. The data-view attribute is added to the DOM tree root of
	         * each views/Base.
	         *
	         * The array is sorted starting with the top-most DOM element's data-view string
	         *
	         * This function will only return the full ancestor list once it has been added to a DOM
	         *
	         * @param depth {Number} specifies the maximum number of ancestors to return
	         * @return {Array}
	         */
	        getAncestors: function(depth) {
	            var results = [];
	            var parent = this.$el;

	            while (true) {
	                parent = parent.parent();

	                if (parent.length > 0) {
	                    var dataView = parent.attr("data-view");
	                    if (!_(dataView).isUndefined() && !_(dataView).isEmpty())
	                        results.unshift(dataView);
	                } else {
	                    break;
	                }

	                if (!_(depth).isUndefined() && depth == results.length)
	                    break;
	            }

	            return results;
	        },

	        invalidateReflow: function() {
	            if (this.isReflowValid) {
	                this.isReflowValid = false;
	                GlobalReflowQueue.add(this);
	            }
	        },

	        validateReflow: function(force) {
	            if (!this.isReflowValid || force) {
	                this.reflow();
	                this.isReflowValid = true;
	                GlobalReflowQueue.remove(this);
	            }
	            this.invokeOnChildren('validateReflow');
	        },

	        getReflowDepth: function() {
	            var depth = 0;
	            for (var parentNode = this.el.parentNode; parentNode; parentNode = parentNode.parentNode) {
	                depth++;
	            }
	            return depth;
	        }
	    });

	    _.extend(BaseView.prototype, viewloggingmixin);

	    return BaseView;

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "mixins/viewlogging":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	            __webpack_require__("require/underscore"),
	            __webpack_require__("require/backbone"),
	            __webpack_require__("shim/splunk.logger"),
	            __webpack_require__("shim/splunk.util")
	        ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	            _,
	            Backbone,
	            SplunkLogger,
	            splunkUtils
	        ) {

	    var logMode = splunkUtils.getConfigValue("JS_LOGGER_MODE", "None"),
	        logLevel = splunkUtils.getConfigValue("JS_LOGGER_LEVEL", "INFO"),
	        shouldAttachLogging = (logMode !== 'None' && logLevel === 'DEBUG'),
	        // don't attach loggers to events that will be very chatty
	        domEventBlacklist = ['mousemove', 'scroll'],
	        logger = null;

	    /**
	     * 
	     * Mixin to add logging to a Backbone View
	     *
	     * This mixin will add logging statements to each DOM event handler in the view's "events" hash,
	     * but only if logging is enabled and the log level is DEBUG.
	     *
	     * In the case where logging should not be added this code is designed to do as little work as possible.  Attaching
	     * logging should not cause any changes in behavior.
	     *
	     * Usage:
	     *
	     *     var MyView = Backbone.View.extend({
	     *         // view code here
	     *     });
	     *     _.extend(MyView.prototype, viewloggingmixin);
	     * 
	     * @mixin viewlogging
	     */
	    var viewlogging = {

	        /**
	         * An override of delegateEvents, which will wrap each event handler in a new function that 
	         * will log a useful message and then invoke the original handler
	         * @param  {Object} events
	         *
	         * @memberOf viewlogging
	         */
	        delegateEvents: function(events) {
	            // if logging should not be attached, this should be an effective no-op
	            if(!shouldAttachLogging) {
	                return Backbone.View.prototype.delegateEvents.call(this, events);
	            }
	            events = events || _.result(this, 'events');
	            // if there are no events declared, again fall through to the Backbone implementation
	            if(!events) {
	                return Backbone.View.prototype.delegateEvents.call(this, events);
	            }
	            var wrappedEvents = {};
	            // loop over each eventName-handler pair, making sure to normalize the fact that the handler could be a
	            // function or the string name of an instance member, replace the handler with a wrapper function
	            // and call the Backbone implementation with the wrapped version of the handlers
	            _(events).each(function(handler, eventName) {
	                var normalizedHandler = _.isFunction(handler) ? handler : this[handler];
	                if(_.isFunction(normalizedHandler) && _(domEventBlacklist).indexOf(eventName) === -1) {
	                    var viewId = this.moduleId + '/' + this.cid;
	                    wrappedEvents[eventName] = function() {
	                        if(!logger) {
	                            logger = SplunkLogger.getLogger('viewlogging.js');
	                        }
	                        logger.debug('view ' + viewId + ' is handling event ' + eventName.replace(/\s+/g, ' '));
	                        // "this" here will be the context that Backbone uses to invoke the handler
	                        normalizedHandler.apply(this, arguments);
	                    };
	                }
	                // in the case where normalizedHandler is for some reason not a function, it is not safe to create the
	                // wrapper, but make sure to be non-destructive
	                else {
	                    wrappedEvents[eventName] = handler;
	                }
	            }, this);
	            return Backbone.View.prototype.delegateEvents.call(this, wrappedEvents);
	        }

	    };

	    return viewlogging;

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "global/GlobalReflowQueue":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module){
		var _  = __webpack_require__("require/underscore"),
			viewsToReflow = [],
			viewAddInterval,
			tickInterval = 50;


		var GlobalReflowQueue = {
			add: function(view) {
				viewsToReflow.push(view);
				//If there is at least one view to reflow, set an interval and validate the views
				//We set an interval in case a view is added while we are validating our existing views
				//This view will need to be processed after we have validated the current views to be reflowed.
				if (viewsToReflow.length === 1) {
					viewAddInterval = window.setInterval(GlobalReflowQueue.validateViews, tickInterval);	
				}
			},

			validateViews: function (){
				var internalViewsToReflow = _.sortBy(viewsToReflow, function(view) {
					return view.getReflowDepth();
				});
				for (var i = 0; i < internalViewsToReflow.length; i++) {
					internalViewsToReflow[i].validateReflow();
				}
				//If we have no more views to reflow, then clear the interval - we don't need to call the function again
				if (viewsToReflow.length === 0) {
					clearInterval(viewAddInterval);
				}
			},
			remove: function(view) {
				var indexToRemove = viewsToReflow.indexOf(view);
				if (indexToRemove > -1) {
					viewsToReflow.splice(indexToRemove, 1);
				}
				//If we have removed all of the views that we need to reflow, we don't need to validate views again.
				if (viewsToReflow.length === 0) {
					clearInterval(viewAddInterval);
				}
			},


			//For testing, not exposed in real API.
			getTickInterval: function() {
				return tickInterval;
			},

			clear: function() {
				viewsToReflow = [];
			}
		};
		return GlobalReflowQueue;
	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/MenuDialog":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* REUSE WITH CAUTION
	/* ----------------------------------------------------------
	/* This a CSS Module based view should be considered as Beta.
	/* API is likely to change       */

	/**
	 * All options can be set during initialization or later, by using set().
	 * @initialize or @set
	 *
	 * @param {Object} [options]
	 * @param {String} [options.mode = 'menu'] - 'menu' or 'dialog'.
	 * @param {View Object} [options.contentView = undefined] - the contents of the menu.
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        module,
	        __webpack_require__("views/Base"),
	        __webpack_require__("views/shared/delegates/Popdown"),
	        __webpack_require__("views/shared/MenuDialog.pcssm")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        $,
	        module,
	        BaseView,
	        Popdown,
	        css
	    ){
	        return BaseView.extend({
	            moduleId: module.id,
	            attributes: {'data-popdown-role': 'dialog'},
	            useLocalClassNames: true,
	            constructor: function(options) {
	                _.extend(this, _.pick(options || {}, 'useLocalClassNames'));

	                // children can disable useLocalClassNamess and therefore this.css should not be set.
	                if (this.useLocalClassNames && this.css === undefined) {
	                    this.css = css;
	                }

	                // remove inheritted 'control' className
	                if (this.useLocalClassNames) {
	                    this.className = '';
	                }

	                BaseView.apply(this, arguments);
	            },
	            initialize: function() {

	                BaseView.prototype.initialize.apply(this, arguments);

	                this.options.contentView && (this.children.content = this.options.contentView);

	                return this;
	            },
	            set: function(options) {
	                _.extend(this.options, options);
	                if (this.children.content !== this.options.contentView) {
	                    this.children.content.remove();
	                    this.children.content = this.options.contentView;
	                }

	                this.render();

	                return this;
	            },
	            render: function () {
	                if (!this.el.innerHTML) {
	                    this.$el.html(this.compiledTemplate({
	                        css:this.css
	                    }));
	                }

	                if (this.children.content) {
	                    this.children.content.render().appendTo(this.$el);
	                }

	                return this;
	            },
	            template: '<div class="<%-css.arrow%>" data-popdown-role="arrow"></div>'
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/delegates/Popdown":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 *   views/shared/delegates/Popdown
	 *
	 *   Desc:
	 *     This class applies popdown menus and dialogs.

	 *   @param {Object} (Optional) options An optional object literal having one settings.
	 *
	 *    Usage:
	 *       var p = new Popdown({options})
	 *
	 *    Options:
	 *        el (required): The dialog and toggle container. Recommend that this is the offset container for the dialog.
	 *        toggle: jQuery selector for the toggles defaults to "> .popdown-toggle, > dropdown-toggle".
	 *        dialog: jQuery selector or object for the dialog defaults to "> .popdown-dialog,  > dropdown-menu".
	 *        arrow: jQuery selector or object for arrow that points up. Defaults to ".arrow".
	 *        mode: menu (default) or dialog. Change to dialog to prevent clicks inside the dialog from closing the popdown.
	 *        show: true or false (default). Open the menu on initialization.
	 *        adjustPosition: true (default) or false. Adjust position will  keep the dialog within the screen margin.
	 *        minMargin: Integer. The number of pixels between the edge of the screen and the dialog. Defaults to 20.
	 *        detachDialog: false (default) or true.
	 *                      Detach the dialog from its original parent element and re-attach to the closest appropriate ancestor.
	 *                      This can be the body element, a modal body container, or any element with the "popdown-dialog-position-parent" class.
	 *                      This can be useful to avoid hidden overflow issues, but should be used with care since any
	 *                          scoped CSS selectors or event delegate listeners will no longer work.
	 *        attachDialogTo: DEPRECATED, use detachDialog instead.
	 *                        jQuery selector or object to attach the dialog element to, usually 'body'
	 *                          this can be useful to avoid hidden overflow issues, but should be used with care since any
	 *                          scoped CSS selectors or event delegate listeners will no longer work
	 *        ignoreClasses: [] array of HTML classes to ignore clicks inside of so that the popdown does not close
	 *        ignoreEscape: true or false (default). Ignore escape keypress within the popdown.
	 *
	 *    Methods:
	 *        show: show the dialog (directly calling show should be avoided and should not be necessary).
	 *        hide: hide the dialog.
	 *        scrollToVisible: scrolls the page if necessary to show the entire dialog.
	 */


	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__("views/shared/delegates/Base"),
	    __webpack_require__("views/shared/delegates/PopdownDialog")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    DelegateBase,
	    PopdownDialog
	){
	    var popdown =  DelegateBase.extend({
	        initialize: function() {
	            var defaults = {
	                toggle: "> [data-popdown-role=toggle], > [data-action=toggle], > .popdown-toggle, > .dropdown-toggle",
	                dialog: "> [data-popdown-role=dialog], > [data-popdown-role=menu], > .popdown-dialog, > .dropdown-menu",
	                arrow: "[data-popdown-role=arrow], .arrow",
	                mode: "menu",  // "menu" or "dialog"
	                adjustPosition: true,
	                minMargin: 20,
	                detachDialog: false,
	                attachDialogTo: false,
	                allowPopUp: true,
	                ignoreClasses: [],
	                ignoreEscape: false
	            };

	            _.defaults(this.options, defaults);

	            this.children = {};
	            this.events = {};
	            this.events["mousedown " + this.options.toggle] = "toggle";
	            this.events["keydown " + this.options.toggle] = "keydownToggle";
	            this.events["click " + this.options.toggle] = "clickToggle";
	            this.delegateEvents(this.events);
	            this.$activeToggle = this.$(this.options.toggle).first();

	            if (this.options.show) {
	                this.show();
	            }
	        },
	        startListening: function(options) {
	            if (this.children.delegate) {
	                this.listenTo(this.children.delegate, 'toggle', this.hearToggle);
	                this.listenTo(this.children.delegate, 'toggled', this.hearToggled);
	                this.listenTo(this.children.delegate, 'show', this.hearShow);
	                this.listenTo(this.children.delegate, 'shown', this.hearShown);
	                this.listenTo(this.children.delegate, 'hide', this.hearHide);
	                this.listenTo(this.children.delegate, 'hidden', this.hearHidden);
	            }
	        },
	        delegate: function() {
	            if (!this.children.delegate) {
	                var options = _(this.options).omit('attachDialogTo');
	                options.el = (options.dialog instanceof $) ? options.dialog[0] : this.$(options.dialog)[0];
	                this.children.delegate = new PopdownDialog(options);

	                this.startListening();

	                if (this.options.detachDialog) {
	                    if (this.$activeToggle.length === 0) {
	                        this.$activeToggle = this.$(this.options.toggle).first();
	                    }
	                    this.$activeToggle.closest('[data-popdown-role=position-parent], .popdown-dialog-position-parent, .dropdown-menu-position-parent, .modal, body')
	                        .append(this.children.delegate.el);
	                } else if (this.options.attachDialogTo) {
	                    $(this.options.attachDialogTo).append(this.children.delegate.el);
	                }
	            }
	            return this.children.delegate;
	        },
	        toggle: function(e) {
	            e.preventDefault();

	            if ($(e.currentTarget).is('.disabled, :disabled, [disabled=disabled]')) return;

	            this.delegate().toggle($(e.currentTarget));

	            return true;
	        },
	        hearToggle: function($toggle) {
	            this.trigger('toggle', $toggle);
	        },
	        hearToggled: function($toggle) {
	            this.trigger('toggled', $toggle);
	        },
	        show: function() {
	            this.delegate().show(this.$activeToggle);
	        },
	        hearShow: function($toggle) {
	            this.trigger('show', $toggle);

	            $(window).on('resize.popdown.' + this.cid, this.windowResize.bind(this));
	            this.$activeToggle.removeClass('active');
	            this.$activeToggle = $toggle.addClass('active');

	            if (this.$activeToggle.attr('data-popdown-role')) { //use attributes
	                this.$activeToggle.attr('data-popdown-state', 'inactive');
	                this.$activeToggle = $toggle.attr('data-popdown-state', 'active');
	            } else {
	                this.$activeToggle.removeClass('active');
	                this.$activeToggle = $toggle.addClass('active');
	            }

	        },
	        hearShown: function($toggle) {
	            // Need to enable focus here so the list items are tabbable (508).
	            // Consumers can listen to 'shown' on the popdown to trigger a more specific focus if they need.
	            this.delegate().$el.find('a:not(.disabled):first').focus();
	            this.trigger('shown', $toggle);
	        },
	        hide: function(e) {
	            if (!this.delegate().isShown) return false;

	            $(window).off('.' + this.cid);

	            if ($.contains(this.children.delegate.el, $(':focus')[0])) {
	                this.$activeToggle.focus();
	            }
	            this.children.delegate.hide();
	        },
	        clickToggle: function(e) {
	            e.preventDefault();
	        },
	        keydownToggle: function(e) {
	            var enterKeyCode = 13;
	            if (e.keyCode == enterKeyCode)  {
	                this.toggle(e);
	            }
	        },
	        hearHide: function($toggle) {
	            $(window).off('.popdown.' + this.cid);
	            this.trigger('hide', $toggle);

	            if (this.$activeToggle.attr('data-popdown-role')) { //use attributes
	                this.$activeToggle.attr('data-popdown-state', 'inactive');
	            } else {
	                this.$activeToggle.removeClass('active');
	            }
	        },
	        hearHidden: function($toggle) {
	            this.trigger('hidden', $toggle);
	        },
	        stopListening: function() {
	            this.children.delegate && this.children.delegate.remove();
	            return DelegateBase.prototype.stopListening.apply(this, arguments);
	        },
	        adjustPosition: function() {
	            this.delegate();
	            this.children.delegate.adjustPosition(this.$activeToggle);
	        },
	        windowResize: function(e) {
	            if (this.children.delegate && this.children.delegate.isShown) {
	                this.adjustPosition(this.$activeToggle);
	            }
	        },
	        pointTo: function($activeToggle) {
	            this.$activeToggle = $activeToggle;
	            this.delegate().adjustPosition(this.$activeToggle);
	        },
	        remove: function() {
	            DelegateBase.prototype.remove.apply(this);
	            this.children.delegate && this.children.delegate.remove();
	            if (this.children.delegate && this.options.attachDialogTo) {
	                this.children.delegate.$el.remove();
	            }
	            delete this.children.delegate;
	            $(window).off('resize.popdown.' + this.cid);
	            $(window).off('.' + this.cid);
	            this.undelegateEvents();
	            return this;
	        }
	    });

	    return popdown;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/delegates/Base":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 *   views/shared/delegates/Base
	 *
	 *   Desc:
	 *     This a base class for other delegates.

	 *   @param {Object} (Optional) options An optional object literal having one settings.
	 *
	 *    Usage:
	 *       var p = new DelegateBase({el: {el}})
	 *
	 *    Options:
	 *        el (required): The event delegate
	 */


	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [ __webpack_require__("views/Base") ], __WEBPACK_AMD_DEFINE_RESULT__ = function(BaseView){
	    return BaseView.extend({
	        
	        initialize: function() {
	            //no-op
	        },

	        wake: function() {
	            //no-op
	        },

	        sleep: function() {
	            //no-op
	        },
	        
	        /**
	         * Due to the nature of delegates acting as decorators (delegates do not own
	         * their root el), we need to override on base class methods that operate on 
	         * DOM elements that the view owns.
	         */
	        remove: function() {
	            this.stopListening();
	            return this;
	        },

	        detach: function() {
	            throw new Error('detach is not supported by delegates.');
	        },
	        
	        appendTo: function() {
	            throw new Error('jQuery-like attachment methods are not supported by delegates.');
	        },

	        prependTo: function() {
	            throw new Error('jQuery-like attachment methods are not supported by delegates.');
	        },

	        replaceAll: function() {
	            throw new Error('jQuery-like attachment methods are not supported by delegates.');
	        },

	        insertBefore: function() {
	            throw new Error('jQuery-like attachment methods are not supported by delegates.');
	        },

	        insertAfter: function() {
	            throw new Error('jQuery-like attachment methods are not supported by delegates.');
	        }

	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/delegates/PopdownDialog":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 *   views/shared/delegates/Popdown
	 *
	 *   Desc:
	 *     This class applies popdown menus and dialogs.

	 *   @param {Object} (Optional) options An optional object literal having one settings.
	 *
	 *    Usage:
	 *       var p = new Popdown({options})
	 *
	 *    Options:
	 *        el (required): The dialog.
	 *        arrow: jQuery selector or object for arrow that points up. Defaults to ".arrow".
	 *        mode: menu (default) or dialog. Change to dialog to prevent clicks inside the dialog from closing the popdown.
	 *        show: true or false (default). Open the menu on initialization.
	 *        adjustPosition: true (default) or false. Adjust position will  keep the dialog within the screen margin.
	 *        dialogResizes: true or false (default). When true and pointing down, always position from bottom instead of top.
	 *        minMargin: Integer. The number of pixels between the edge of the screen and the dialog. Defaults to 20.
	 *        ignoreClasses: [] array of HTML classes to ignore clicks inside of so that the popdown does not close
	 *        ignoreToggleMouseDown: true or false (default). Ignore mousedown events on the toggle or toggle's children.
	 *                              If ignoreToggleMouseDown is enabled, the PopTart will take no action when
	 *                              clicking on the PopTart's toggle activator element. This allows the creator of the
	 *                              PopTart to fully manage closing the opened PopTart.
	 *        ignoreEscape: true or false (default). Ignore escape keypress within the popdown.
	 *        scrollContainer: DEPRECATED, the desired scroll container should be given class "popdown-dialog-scroll-parent".
	 *                         jQuery selector or object to find the scroll container for the dialog.
	 *                         The dialog will listen for scroll events on this element and adjust its position.
	 *
	 *    Methods:
	 *        show: show the dialog (directly calling show should be avoided and should not be necessary).
	 *        hide: hide the dialog.
	 *        scrollToVisible: scrolls the page if necessary to show the entire dialog.
	 */


	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__("views/shared/delegates/Base"),
	    __webpack_require__("util/string_utils"),
	    __webpack_require__("util/keyboard"),
	    __webpack_require__("util/svg")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    DelegateBase,
	    string_utils,
	    keyboard,
	    svgUtil
	){
	    return DelegateBase.extend({
	        initialize: function() {
	            var defaults = {
	                arrow: "[data-popdown-role=arrow], .arrow",
	                mode: "dialog",  // "menu" or "dialog"
	                adjustPosition: true,
	                minMargin: 20,
	                allowPopUp: true,
	                dialogResizes: false,
	                direction:'auto',
	                zIndex:'auto',
	                scrollContainer: '.modal-body-scrolling, .popdown-dialog-scroll-parent, .dropdown-menu-scroll-parent, [data-popdown-role=scroll-parent]',
	                ignoreClasses: [],
	                ignoreEscape: false
	            };

	            _.defaults(this.options, defaults);
	            this.isShown = false;

	            this.addEventHandlers = _.bind(this.addEventHandlers, this);
	            this.dialogClick = _.bind(this.dialogClick, this);
	            this.keepInBoundsDebounced =  _.debounce(this.keepInBounds, 100);

	            // if this.$el doesn't already have an id, create a unique one (to be used in show())
	            if (!this.$el.attr('id')) {
	                this.$el.attr('id', 'dialog-' + this.cid);
	            }

	            if (this.options.show) {
	                this.show(this.options.show);
	            }
	        },
	        events: {
	            'click': 'dialogClick',
	            'keydown': function(e) {
	                if (e.which === keyboard.KEYS.TAB) {
	                    keyboard.handleCircularTabbing(this.$el, e);
	                }
	            },
	            'keydown .close': function(e) {
	                if (e.which === keyboard.KEYS.ENTER) {
	                    //Prevent click event for anchor tags
	                    e.preventDefault();
	                    this.hide(e);
	                }
	            }
	        },
	        arrow: function() {
	            return this.$el.find(this.options.arrow).first();
	        },
	        setScrollContainer: function($pointTo) {
	            if (this.$scrollContainer) {
	                return;
	            }
	            this.$scrollContainer = $pointTo.closest(this.options.scrollContainer);
	            if (this.$scrollContainer.length === 0) {
	                this.$scrollContainer = $(window);
	            }
	        },
	        toggle: function($pointTo) {
	            this.trigger('toggle', $pointTo);

	            if (this.isShown) {
	                this.hide();
	            } else {
	                this.show($pointTo);
	            }

	            this.trigger('toggled', $pointTo);

	            return true;
	        },
	        show: function($pointTo, $toggle) {
	            $toggle = $toggle || $pointTo;
	            this.trigger('show', $pointTo);

	            this.$pointTo = $pointTo;
	            this.setScrollContainer($pointTo);

	            if (!this.isShown) {
	                _.defer(this.addEventHandlers, $toggle);
	            }
	            if (this.options.zIndex != 'auto') {
	                this.$el.css('zIndex', this.options.zIndex);
	            }

	            this.options.adjustPosition && $pointTo && this.adjustPosition($pointTo);
	            this.isShown = true;
	            this.$el.addClass('open').show();
	            // add a data attribute to map the toggle to the open dialog, this is for automated testing
	            $pointTo.attr('data-dialog-id', this.$el.attr('id'));

	            this.trigger('shown', $pointTo);
	        },
	        hide: function(e) {
	            if (!this.isShown) {
	                return false;
	            }

	            this.trigger('hide');

	            this.removeEventHandlers();
	            this.isShown = false;
	            this.$el.removeClass('open').hide();

	            this.trigger('hidden', e);
	        },
	        addEventHandlers: function($toggle) {
	            $('html').on('mousedown.popdown.' + this.cid, function(e) {
	                this.bodyMouseDown(e, $toggle);
	            }.bind(this));
	            $(window).on('keydown.' + this.cid, function(e) {
	                this.windowKeydown(e, $toggle);
	            }.bind(this));


	            if (!this.$scrollContainer.is($(window))) {
	                this.scrollPosition = {top: this.$scrollContainer.scrollTop(), left: this.$scrollContainer.scrollLeft()};
	                this.$scrollContainer.on('scroll.' + this.cid, function(e) {
	                    if (this.$pointTo) {
	                        this.adjustPosition(this.$pointTo);
	                    } else {
	                        this.containerScroll(e);
	                    }
	                    this.keepInBoundsDebounced();
	                }.bind(this));
	            }

	            return this;
	        },
	        removeEventHandlers: function() {
	            $('html').off('.' + this.cid);
	            $(window).off('.' + this.cid);
	            if (this.$scrollContainer) {
	                this.$scrollContainer.off('.' + this.cid);
	            }
	            return this;
	        },
	        deactivate: function() {
	            this.hide();
	            return DelegateBase.prototype.deactivate.apply(this, arguments);
	        },
	        stopListening: function() {
	            this.removeEventHandlers();
	            return DelegateBase.prototype.stopListening.apply(this, arguments);
	        },
	        measure: function($el, offsets) {
	            var measures = {};

	            if (svgUtil.isSvgEl($el)) {
	                var bBox = svgUtil.getBBox($el);
	                measures.width = bBox.width;
	                measures.height = bBox.height;
	            } else {
	                measures.width = $el.outerWidth();
	                measures.height = $el.outerHeight();
	            }
	            measures.halfHeight = measures.height /2;
	            measures.halfWidth = measures.width / 2;

	            if (offsets !== false) {
	                measures.offset = $el.offset();
	                measures.position = $el.position();
	                measures.center = {
	                    left: measures.offset.left + measures.halfWidth,
	                    top: measures.offset.top + measures.halfHeight
	                };
	            }
	            return measures;
	        },
	        adjustPosition: function($pointTo) {
	            this.setScrollContainer($pointTo);
	            var dir = this.options.direction;
	            this['adjustPosition' + string_utils.capitalize(dir)]($pointTo);
	        },
	        adjustPositionAuto: function($pointTo) {
	            this.$el.css({top: -9999, left: -9999, bottom: 'auto'});
	            this.$el.show();

	            var m = {}, //measurements
	                shift = {left: 0, top:0}; //necessary corrections to fit in view
	            var positionFromTop = true;

	            m.toggle = this.measure($pointTo);
	            m.dialog = this.measure(this.$el);
	            m.arrow = this.measure(this.arrow(), false);
	            m.window = this.measure($(window), false);
	            m.window.top =  $(window).scrollTop();
	            m.window.bottom = m.window.height + $(window).scrollTop();

	            // Compensate for different offset parents.
	            m.dialogParent = {offset: this.$el.offsetParent().offset()};
	            m.toggle.relativeOffset = {
	                                left: m.toggle.offset.left - m.dialogParent.offset.left + m.toggle.halfWidth,
	                                top: Math.floor(m.toggle.offset.top - m.dialogParent.offset.top)
	                            };

	            //Determine if the default centering need to be shifted left or right
	            if (m.toggle.center.left < m.dialog.halfWidth + this.options.minMargin) { //Needs to be pushed right
	                shift.left = (m.dialog.halfWidth - m.toggle.center.left) + this.options.minMargin;
	            } else if (m.toggle.center.left + m.dialog.halfWidth + this.options.minMargin  > m.window.width) { //Needs to be pushed left
	                shift.left = $('body').outerWidth() - (m.toggle.center.left + m.dialog.halfWidth + this.options.minMargin);
	            }
	            shift.left=Math.round(shift.left);

	            // Determine if there is enough room to pop down
	            var popDownDialogBottom =  m.toggle.offset.top + m.toggle.height + m.dialog.height + this.options.minMargin;
	            var popUpDialogTop =  m.toggle.offset.top - m.dialog.height -  this.options.minMargin;
	            if (popDownDialogBottom > m.window.bottom && this.options.allowPopUp && popUpDialogTop > m.window.top ) {
	                //Pop upward
	                shift.top=-m.dialog.height - m.arrow.halfWidth;
	                shift.bottom= m.toggle.height + m.arrow.halfWidth;
	                this.$el.addClass('up');

	                //If this hasn't been attached the body or some other element, set positionFromTop to false. It will be positioned from the bottom.
	                //It's better to position from the bottom so dialogs that change height, like the timerangepicker, are correctly positioned.
	                var $dialogParent = this.$el.parent();

	                positionFromTop = this.options.dialogResizes || $dialogParent.is($pointTo.parent()) ? false : $dialogParent.is('body') || $dialogParent.is('.modal:visible');
	            } else {
	                //Pop downward
	                shift.top= m.toggle.height;
	                this.$el.removeClass('up');
	                if (popDownDialogBottom > m.window.bottom) {
	                    //Scroll
	                    this.$scrollContainer.scrollTop(this.$scrollContainer.scrollTop() + popDownDialogBottom - m.window.bottom);

	                    //reset the relative offsets
	                    m.toggle.offset = $pointTo.offset();
	                    m.toggle.relativeOffset.top = m.toggle.offset.top - m.dialogParent.offset.top;
	                }
	            }

	            //Reset the position and center within the viewable area
	            this.position = {
	                 top:  positionFromTop ? shift.top + m.toggle.relativeOffset.top : 'auto',
	                 left: m.toggle.relativeOffset.left,
	                 marginLeft: - m.dialog.halfWidth + shift.left,
	                 bottom: positionFromTop ? 'auto' : shift.bottom
	                };

	            this.$el.css(this.position);
	            this.arrow().css('marginLeft', 0 - m.arrow.halfWidth - shift.left);

	            //Fix left corner rounding if necessary
	            if (m.dialog.halfWidth - m.arrow.halfWidth - shift.left < 8) { //Falling off the left
	                this.$el.css('borderTopLeftRadius', Math.max(m.dialog.halfWidth - m.arrow.halfWidth - shift.left, 0));
	            } else { //Needs to be pushed left
	                this.$el.css('borderTopLeftRadius', '');
	            }

	        },
	        adjustPositionRight: function($pointTo) {
	            this.$el.addClass('right');
	            this.$el.css({top: -9999, left: -9999});
	            this.$el.show();

	            var m = {}, //measurements
	                shift = {left: 0, top:0}, //necessary corrections
	                calculateTop = function() {
	                    return Math.round(shift.top) + m.toggle.relativeOffset.top - m.dialog.halfHeight + m.toggle.halfHeight;
	                }.bind(this);

	            m.toggle = this.measure($pointTo);
	            m.dialog = this.measure(this.$el);
	            m.arrow = this.measure(this.arrow(), false);
	            m.window = this.measure($(window), false);
	            m.window.top =  $(window).scrollTop();
	            m.window.bottom = m.window.height + $(window).scrollTop();
	            m.arrow.minMargin = 10;
	            m.arrow.maxShift = m.dialog.halfHeight - m.arrow.halfHeight - m.arrow.minMargin;

	            // Compensate for different offset parents.
	            m.dialogParent = {offset: this.$el.offsetParent().offset()};
	            m.toggle.relativeOffset = {
	                                left: m.toggle.offset.left - m.dialogParent.offset.left + m.toggle.width,
	                                top: Math.floor(m.toggle.offset.top - m.dialogParent.offset.top)
	                            };

	            //Determine if the default centering need to be shifted up or down
	            if (m.toggle.center.top - m.window.top < m.dialog.halfHeight + this.options.minMargin) { //Needs to be down
	                shift.top = (m.dialog.halfHeight - (m.toggle.center.top - m.window.top)) + this.options.minMargin;
	            } else if (m.toggle.center.top + m.dialog.halfHeight+ this.options.minMargin  > m.window.bottom ) { //Needs to be pushed up
	                shift.top = m.window.bottom - (m.toggle.center.top + m.dialog.halfHeight + this.options.minMargin);
	            }

	            //Make sure it's not partially hidden over the top of page
	            if (calculateTop() < this.options.minMargin) {
	                shift.top = shift.top + (this.options.minMargin - calculateTop());
	            }

	            //Determine if there is sufficient room to include the point
	            if (shift.top > m.arrow.maxShift) { //Needs to be down
	                shift.top -= shift.top - m.arrow.maxShift;
	            } else if (-shift.top > m.arrow.maxShift) { //Needs to be pushed up
	                shift.top -= shift.top+m.arrow.maxShift;
	            }

	            //Reset the position and center within the viewable area
	            this.position = {
	                 top: calculateTop(),
	                 left: m.toggle.relativeOffset.left, marginLeft: m.arrow.halfWidth
	                };


	            this.$el.css(this.position);
	            this.arrow().css('marginTop', 0 - m.arrow.halfHeight - shift.top);

	        },
	        containerScroll: function(e)  {
	            var newScrollTop = this.$scrollContainer.scrollTop(),
	                newScrollLeft = this.$scrollContainer.scrollLeft();

	            this.position.top = this.position.top + (this.scrollPosition.top - newScrollTop);
	            this.position.left = this.position.left + (this.scrollPosition.left  - newScrollLeft);
	            this.$el.css(this.position);

	            this.scrollPosition = {top: newScrollTop, left: newScrollLeft};
	        },
	        keepInBounds: function(e)  {
	            // if it is no longer pointing at something shown in the view container, close;
	            var containerTop = this.$scrollContainer.offset().top,
	                containerBottom  = containerTop + this.$scrollContainer.outerHeight(),
	                elEdge = this.$el.hasClass('up') ? this.$el.offset().top + this.$el.outerHeight() : this.$el.offset().top; // use the bottom edge when popping upward

	            if (elEdge < containerTop || elEdge > containerBottom) {
	                this.hide();
	            }

	        },
	        bodyMouseDown: function(e, $toggle) {
	            var $target = $(e.target);

	            // If the menu is already closed, don't do anything.
	            if (!this.isShown) {
	                return;
	            }

	            // Ignore clicks on the toggle or toggle's children.
	            if (this.options.ignoreToggleMouseDown && $toggle && (($target[0] === $toggle[0]) || $toggle.has($target).length)) {
	                return;
	            }

	            // Ignore clicks inside of the dialog
	            if ($.contains(this.$el[0], e.target) || e.target === this.$el[0]) {
	                return;
	            }

	            // Ignore clicks inside of sibling dialogs appended after this dialog.
	            // This handles the case of logically nested popdown dialogs that are physically appended to the body.
	            // Clicks inside of logically nested dialogs should not close their logical parent dialog. But clicks
	            // inside the parent dialog should allow the nested dialog to close. In theory, a nested dialog must
	            // be opened after its parent dialog, which means it will be appended to the body after its parent.
	            // Therefore, ignoring clicks on dialogs that are physical siblings of this dialog, but are appended
	            // afterwards in the dom, will only ignore dialogs that are logically nested inside this dialog.
	            var $siblingDialog = $target.closest(".popdown-dialog");
	            if ($siblingDialog.length && ($siblingDialog[0].parentNode === this.$el[0].parentNode) && ($siblingDialog.index() > this.$el.index())) {
	                return;
	            }

	            //Ignore clicks on elements with classes specified in this.options.ignoreClasses
	            for(var i = 0; i < this.options.ignoreClasses.length; i++){
	                if ($target.closest("." + this.options.ignoreClasses[i]).length) {
	                    return;
	                }
	            }

	            this.hide(e);
	        },
	        dialogClick: function(e) {
	            if (this.options.mode != "dialog") {
	                var $target = $(e.target);
	                //Ignore clicks on elements with classes specified in this.options.ignoreClasses
	                for(var i = 0; i < this.options.ignoreClasses.length; i++){
	                    if ($target.closest("." + this.options.ignoreClasses[i]).length) {
	                        return;
	                    }
	                }
	                this.hide(e);
	            }
	        },
	        windowKeydown: function(e, $toggle) {
	            var escapeKeyCode = 27,
	                enterKeyCode = 13;

	            if (!this.options.ignoreEscape && e.keyCode == escapeKeyCode)  {
	                this.hide();
	                return true;
	            }

	            if (e.keyCode == enterKeyCode)  {
	                this.bodyMouseDown(e, $toggle);
	            }

	            return true;
	        },
	        pointTo: function($pointTo) {
	            if (!this.isShown) {
	                this.show($pointTo);
	            } else {
	                this.adjustPosition($pointTo);
	            }
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "util/string_utils":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(_) {

	        var strEndsWith = function(str, suffix) {
	            if (!str || !suffix) {
	                return false;
	            }
	            return str.indexOf(suffix, str.length - suffix.length) !== -1;
	        };

	        var strStartsWith = function(str, prefix) {
	            if (!str || !prefix) {
	                return false;
	            }
	            return str.indexOf(prefix) === 0;
	        };

	        /**
	        * Changes the first letter of first word in a string to upper-case.
	        * All other letters remain unchanged. 
	        *
	        * @param str {String} - string to capitalize.
	        * @returns {String} - Returns a string with the first letter of first word upper-case. 
	        */
	        var capitalize = function(str) {
	            return str.charAt(0).toUpperCase() + str.slice(1);
	        };


	        /**
	        * Changes the first letter of first word in a string to lower-case.
	        * All other letters remain unchanged.
	        *
	        * @param str {String} - string to process.
	        * @returns {String} - Returns a string with the first letter of first word lower-case.
	        */
	        var firstToLower = function(str) {
	            return str.charAt(0).toLowerCase() + str.slice(1);
	        };


	        /**
	         * Truncates and adds ellipsis in the interior of a string if
	         * the string is longer than the desired length.
	         * 
	         * @param str {String} - The string to have inner ellipsis added to it.
	         * @param maxLength {Number} - Maximum length of the string.
	         * @param leadingLength {Number} - Desired length ahead of the ellipsis.
	         * @param trailingLength {Number} - Desired length following the ellipsis.
	         * @returns {String} - Returns a string with the specified inner ellipsis if
	         *          the original string was longer than maxLength.
	         */
	        var truncateString = function(str, maxLength, leadingLength, trailingLength) {
	            var label = str;
	            if(label.length > maxLength) {
	                label = label.substring(0, leadingLength) +
	                        _('…').t() +
	                        label.substring(label.length - trailingLength);
	            }
	            return label;
	        };

	        /**
	         * Truncates and adds ellipsis at the end of the string if
	         * the string is longer than the desired length.
	         *
	         * @param str {String} - The string to have trailing ellipsis added to it.
	         * @param maxLength {Number} - Maximum length of the string.
	         * @returns {String} - Returns a string with the trailing ellipsis if the
	         * original string was greater than MaxLength.
	         */
	        var truncateTrailingString = function(str, maxLength) {
	            return truncateString(str, maxLength, maxLength - 1, 0);
	        };

	        /**
	         * Takes a regex and a text string, returns an array of arrays, containing all matches corresponding to groups within the regex
	         *
	         * @param text - string to match against
	         * @param regExp - takes the form /(foo)...(bar)/g
	         * Note that the global field "g" is required or else the function will go into an infinite loop
	         */
	        var getRegexMatches = function(regExp, text) {
	            var matches = [];
	            var match = regExp.exec(text);
	            while (match != null) {
	                matches.push(match);
	                match = regExp.exec(text);
	            }
	            return matches;
	        };

	        /**
	         * removeNewlines replace newlines within a string with spaces.
	         * @param str {String} - string to process.
	         */
	        var removeNewlines = function(str) {
	            return str.replace(/[\t ]*(\r\n|\r|\n)\s*/g, " ");     
	        };

	        return {
	            strEndsWith: strEndsWith,
	            strStartsWith: strStartsWith,
	            capitalize: capitalize,
	            firstToLower: firstToLower,
	            truncateString: truncateString,
	            truncateTrailingString: truncateTrailingString,
	            getRegexMatches: getRegexMatches,
	            removeNewlines: removeNewlines
	        };
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "util/keyboard":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("shim/jquery"), __webpack_require__("require/underscore")], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _) {
	    var keyboard = {};

	    keyboard.KEYS = {
	        BACKSPACE:     8,
	        TAB:           9,
	        ENTER:        13,
	        SHIFT:        16,
	        CONTROL:      17,
	        ALT:          18,
	        CAPS_LOCK:    20,
	        ESCAPE:       27,
	        SPACE_BAR:    32,
	        PAGE_UP:      33,
	        PAGE_DOWN:    34,
	        END:          35,
	        HOME:         36,
	        LEFT_ARROW:   37,
	        UP_ARROW:     38,
	        RIGHT_ARROW:  39,
	        DOWN_ARROW:   40,
	        DELETE:       46,
	        E:            69,
	        F:            70,
	        LEFT_META:    91,
	        RIGHT_META:   92,
	        PERIOD:      110,
	        NUM_LOCK:    144,
	        SCROLL_LOCK: 145,
	        DECIMAL:     190
	    };

	    /**
	     * A helper method that will enforce circular tabbing inside the given container (i.e. tabbing from the last element
	     * will wrap around to the first element and reverse tabbing from the first element will wrap around to the last).
	     *
	     * Will only set focus on the next element if the event's target is inside the container, and if it does, will
	     * prevent the default action of the event.
	     *
	     * @param $container (jQuery object) the container that should enforce the circular tabbing
	     * @param event (DOM event object) the keydown event that initiated the tabbing action
	     * @returns (jQuery object) the element that was focused, or null if no element was focused
	     */
	    keyboard.handleCircularTabbing = function($container, event, includeContainer) {
	        var tabbableSelectors = 'a[href]:not(.synthetic-select):not(.disabled), area[href], input:not([disabled]),' +
	                                'select:not([disabled]), textarea:not([disabled]),' +
	                                        'button:not([disabled]), iframe, object, embed, *[tabindex],' +
	                                '*[contenteditable]',
	            tabbableElements = $();


	        // Support an array of containers instead of just one
	        if (_.isArray($container)) {
	            var containers = $container;
	            _.each(containers, function($el) {
	                tabbableElements = tabbableElements.add($el.find(tabbableSelectors));
	            });
	        } else {
	            tabbableElements = $container.find(tabbableSelectors);
	        }

	        if (includeContainer) {
	            tabbableElements = tabbableElements.add($container);
	        }

	        tabbableElements = _.chain(tabbableElements).uniq()
	            .filter(function(el) {
	                var $el = $(el);
	                return $el.is(':visible') && $el.css('visibility') !== 'hidden';
	            })
	            .value();

	        var firstElement = tabbableElements[0],
	            lastElement = tabbableElements[tabbableElements.length - 1];

	        if(_.contains(tabbableElements, event.target)) {
	            event.preventDefault();
	            if(event.target === lastElement && !event.shiftKey) {
	                return $(firstElement).focus();
	            }
	            if(event.target === firstElement && event.shiftKey) {
	                return $(lastElement).focus();
	            }
	            if(event.shiftKey) {
	                return $(tabbableElements[_.indexOf(tabbableElements, event.target) - 1]).focus();
	            }
	            return $(tabbableElements[_.indexOf(tabbableElements, event.target) + 1]).focus();
	        }
	        return null;
	    };
	    
	    keyboard.isNumber = function(keyCode) {
	        // 0-9 Main Keyboard or Numeric Keypad
	        return ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105));
	    };
	    
	    keyboard.isDecimal = function(keyCode) {
	        // Period (Main Keyboard) or Decimal (Numeric Keypad)
	        return (keyCode === keyboard.KEYS.PERIOD || keyCode === keyboard.KEYS.DECIMAL);
	    };
	    
	    keyboard.isMinus = function(keyCode) {
	        switch (keyCode) {
	            case 109: //substract on numpad
	            case 173: //hyphen FF - note this is used for mute/unmute on other browsers, so it's not 100%, but it's unlikely to cause issues.
	            case 189: //hyphen other browsers
	                return true;
	            default:
	                return false;
	        }
	    };
	    
	    keyboard.isNumeric = function(keyCode) {
	        return keyboard.isNumber(keyCode) || keyboard.isDecimal(keyCode) || keyboard.isMinus(keyCode);
	    };
	    
	    keyboard.addsText = function(keyCode) {
	        //Note, this applies to text fields, where enter and tab characters are not entered
	        switch (keyCode) {
	            case keyboard.KEYS.ENTER:
	            case keyboard.KEYS.SHIFT:
	            case keyboard.KEYS.CONTROL:
	            case keyboard.KEYS.ALT:
	            case keyboard.KEYS.LEFT_META:
	            case keyboard.KEYS.RIGHT_META:
	            case keyboard.KEYS.UP_ARROW:
	            case keyboard.KEYS.DOWN_ARROW:
	            case keyboard.KEYS.LEFT_ARROW:
	            case keyboard.KEYS.RIGHT_ARROW:
	            case keyboard.KEYS.PAGE_DOWN:
	            case keyboard.KEYS.PAGE_UP: 
	            case keyboard.KEYS.TAB:
	            case keyboard.KEYS.BACKSPACE:
	            case keyboard.KEYS.DELETE:
	            case keyboard.KEYS.ESCAPE:
	            case keyboard.KEYS.NUM_LOCK:
	            case keyboard.KEYS.SCROLL_LOCK:
	            case keyboard.KEYS.CAPS_LOCK:
	            case keyboard.KEYS.PAGE_UP:
	            case keyboard.KEYS.PAGE_DOWN:
	            case keyboard.KEYS.END:
	            case keyboard.KEYS.HOME:
	                return false;
	        }
	        
	        //Function Keys: F1 to F19
	        if (keyCode >= 112 && keyCode <= 130) {
	            return false;
	        }
	        
	        //DEFAULT
	        return true;
	    };

	    return keyboard;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "util/svg":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _
	    ) {
	        var SVG_NS = 'http://www.w3.org/2000/svg';

	        var modifyClass = function($el, cls, add) {
	            var currentClasses = $el.attr('class') || '',
	                paddedClasses = ' ' + currentClasses + ' ',
	                clsTrim = $.trim(cls),
	                paddedCls = ' ' + clsTrim + ' ';

	            if (add && paddedClasses.indexOf(paddedCls) === -1) {
	                $el.attr('class', currentClasses + ' ' + clsTrim);
	            } else if (!add && paddedClasses.indexOf(paddedCls) !== -1) {
	                $el.attr('class', $.trim(paddedClasses.replace(paddedCls,'')));
	            }
	        };

	        return {
	            createElement: function(type) {
	                return $(document.createElementNS(SVG_NS, type));
	            },

	            getBBox: function($el) {
	                var getBBox = $el[0].getBBox,
	                    bbox;

	                // getBBox will not exist in Chrome and IE if
	                // the svg element is not yet rendered.
	                if (!_.isFunction(getBBox)) {
	                    return {};
	                }

	                // This call will fail in firefox if the svg is
	                // not rendered yet.
	                try {
	                    bbox = getBBox.apply($el[0]);
	                } catch(e) {
	                    return {
	                        height: 0,
	                        width: 0,
	                        cx: 0,
	                        cy: 0,
	                        x2: 0,
	                        y2: 0
	                    };
	                }

	                return $.extend(bbox, {
	                    cx: bbox.x + Math.floor(bbox.width / 2),
	                    cy: bbox.y + Math.floor(bbox.height / 2),
	                    x2: bbox.x + bbox.width,
	                    y2: bbox.y + bbox.height
	                });
	            },

	            addClass: function($el, cls) {
	               modifyClass($el, cls, true);
	            },

	            removeClass: function($el, cls) {
	                modifyClass($el, cls, false);
	            },

	            isSvgEl: function($el) {
	                return ($el[0] && $el[0] instanceof SVGElement);
	            }
	        };
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/search/Dashboard":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/splunk.util"),
	        __webpack_require__("models/services/data/ui/View"),
	        __webpack_require__("util/xml"),
	        __webpack_require__("util/splunkd_utils"),
	        __webpack_require__("models/Base")
	   ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, splunkUtil, ViewModel, XML, splunkDUtils, BaseModel) {
	        var HTML_PANEL_TYPE = 'html',
	            CHART_PANEL_TYPE = 'chart',
	            EVENT_PANEL_TYPE = 'event',
	            SINGLE_PANEL_TYPE = 'single',
	            MAP_PANEL_TYPE = 'map',
	            TABLE_PANEL_TYPE = 'table',
	            CUSTOM_VIZ_PANEL_TYPE = 'viz',
	            NON_HTML_PANEL_TYPES = [CHART_PANEL_TYPE, EVENT_PANEL_TYPE, SINGLE_PANEL_TYPE,
	                                    MAP_PANEL_TYPE, TABLE_PANEL_TYPE, CUSTOM_VIZ_PANEL_TYPE];

	        /**
	         * Transient Dashboard Metadata Model
	         *
	         * Attributes:
	         * - label
	         * - description
	         *
	         */
	        var DashboardMetadata = BaseModel.extend({
	            constructor: function(dashboard) {
	                this._dash = dashboard;
	                BaseModel.prototype.constructor.call(this);
	            },
	            //validation: {},
	            apply: function(){
	                this._dash._applyMetadata(this.toJSON());
	            },
	            save: function() {
	                if(arguments.length) {
	                    this.set.apply(this, arguments);
	                }
	                this._dash._applyMetadata(this.toJSON());
	                return this._dash.save.apply(this._dash, arguments);
	            },
	            fetch: function() {
	                this.set(this._dash._extractMetadata());
	                return $.Deferred().resolve(this);
	            }
	        });

	        var Dashboard = ViewModel.extend({
	            /**
	             * model {Object}
	             * options {
	             *     indent: <boolean> (default: true)
	             * }
	             */
	            initialize: function(model, options) {
	                ViewModel.prototype.initialize.apply(this, arguments);
	                this.indent = (options || {}).indent !== false;
	            },
	            initializeAssociated: function() {
	                ViewModel.prototype.initializeAssociated.apply(this, arguments);
	                var meta = this.meta = this.meta || new DashboardMetadata(this);
	                this.entry.content.off(null, null, meta);
	                this.entry.content.on('change:label change:description', meta.fetch, meta);
	                meta.fetch();
	            },
	            associatedOff: function(e, cb, ctx) {
	                ViewModel.prototype.associatedOff.apply(this, arguments);
	                this.meta.off(e, cb, ctx);
	            },
	            set$XML: function($xml) {
	                this.setXML(XML.serializeDashboardXML($xml, this.indent));
	            },
	            setXML: function(raw) {
	                this.entry.content.set('eai:data', raw);
	                this.entry.content.set('eai:type', 'views');
	            },
	            setHTML: function(raw) {
	                this.entry.content.set('eai:data', raw);
	                this.entry.content.set('eai:type', 'html');
	            },
	            ensureXMLLoaded: function() {
	                if (this.entry.content.get('eai:data')) {
	                    return $.Deferred().resolve();
	                } else {
	                    return this._fetchXML || (this._fetchXML = this.fetch(null, { silent: true }));
	                }
	            },
	            _extractMetadata: function() {
	                return {
	                    label: this.entry.content.get('label'),
	                    description: (this.entry.content.get('description') || '').trim()
	                };
	            },
	            _applyMetadata: function(metadata) {
	                var $xml = this.get$XML();
	                var root = XML.root($xml);
	                var $label = root.children('label');
	                var $description = root.children('description');

	                if(!$label.length && metadata.label) {
	                    $label = XML.$node('<label/>');
	                    XML.root($xml).prepend($label);
	                }
	                if(!$description.length && metadata.description) {
	                    $description = XML.$node('<description/>');
	                    XML.inject({
	                        node: $description,
	                        where: 'after',
	                        container: root,
	                        selectors: ['label'],
	                        fallback: 'prepend'
	                    });
	                }
	                if (metadata.hasOwnProperty("label")) {
	                    $label.text(metadata.label || '');
	                    this.entry.content.set("label", metadata.label);
	                }
	                if (metadata.hasOwnProperty("description")) {
	                    $description.text(metadata.description || '');
	                }

	                this.set$XML($xml);
	                this.entry.content.set({
	                    label: metadata.label,
	                    description: metadata.description
	                });
	            },
	            getLabel: function() {
	                var result = this.meta.get('label');
	                return result === undefined ? "" : result;
	            },
	            setLabel: function(value) {
	                this._applyMetadata({ label: value});
	            },
	            getDescription: function() {
	                return this.meta.get('description');
	            },
	            setDescription: function(value) {
	                this._applyMetadata({ description: value });
	            },
	            setLabelAndDescription: function(label, description) {
	                this._applyMetadata({ label: label, description: description });
	            },
	            get$Rows: function() {
	                return XML.root(this.get$XML()).children('row');
	            },
	            createPrivateUserClone: function(owner, app, options) {
	                options = options || {};
	                var clone = new Dashboard();
	                clone.setXML(this.entry.content.get('eai:data'));
	                clone.meta.set(this.meta.toJSON());
	                var data = {
	                    sharing: splunkDUtils.USER,
	                    owner: owner,
	                    app: app
	                };
	                clone.entry.content.set('name', 'dashboard');
	                clone.save({}, {data: data,
	                    success: function(model, response) {
	                        if (options.deferred) {
	                            options.deferred.resolve();
	                        }
	                    }.bind(this)
	                });
	                return clone;
	            },
	            /**
	             * Append a prebuilt panel to a dashboard using its name (ref)
	             * and its app context. We don't check if the prebuilt panel
	             * is already in the dashboard.
	             * @param panel
	             */
	            appendPrebuiltPanel: function(panel) {
	                var $xml = this.get$XML();
	                var rowNode = XML.$node('<row/>');
	                var panelNode = XML.$node('<panel/>')
	                    .attr('ref', panel.entry.get('name'))
	                    .attr('app', panel.entry.acl.get('app'))
	                    .appendTo(rowNode);
	                $xml.find(':eq(0)').append(rowNode);
	                this.set$XML($xml);
	            },
	            nonHTMLPanelTemplate: '\
	                <<%- panelType %> <%= panelRootAttributes %>>\
	                    <% if (properties.title) { %>\
	                        <title><%- properties.title %></title>\
	                    <% } %>\
	                    <% if (properties.searchString) { %>\
	                        <search>\
	                            <query><%- properties.searchString %></query>\
	                        <% if (properties.earliestTime !== undefined) { %>\
	                            <earliest><%- properties.earliestTime %></earliest>\
	                        <% } %>\
	                        <% if (properties.latestTime !== undefined) { %>\
	                            <latest><%- properties.latestTime %></latest>\
	                        <% } %>\
	                        <% if (properties.sampleRatio !== undefined) { %>\
	                            <sampleRatio><%- properties.sampleRatio %></sampleRatio>\
	                        <% } %>\
	                        </search>\
	                    <% } else if (properties.searchName) { %>\
	                        <search ref="<%- properties.searchName %>" />\
	                    <% } %>\
	                    <% if (properties.fields) { %>\
	                        <fields><%- properties.fields %></fields>\
	                    <% } %>\
	                    <% _.each(properties.options, function(value, key) { %>\
	                        <option name="<%- key %>"><%- value %></option>\
	                    <% }) %>\
	                </<%- panelType %>>\
	            ',
	            HTMLPanelTemplate: '<html><%= properties.html %></html>'
	        });

	        // break the shared reference to Entry
	        Dashboard.Entry = Dashboard.Entry.extend({});
	        // now we can safely extend Entry.Content
	        var Content = Dashboard.Entry.Content;
	        Dashboard.Entry.Content = Content.extend({
	            initialize: function() {
	                Content.prototype.initialize.apply(this, arguments);
	            },
	            validate: function(attributes) {
	                var eaiData = attributes["eai:data"],
	                    xml, dashboard;

	                if (eaiData != void(0)){
	                    xml = $.parseXML(eaiData);

	                    dashboard = xml.firstChild;
	                    if (dashboard.nodeName !== 'dashboard' && dashboard.nodeName !== 'form'){
	                        return {
	                            'eai:data': "You must declare a dashboard node."
	                        };
	                    }
	                }
	            }
	        });

	        return Dashboard;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "collections/search/Alerts":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("models/search/Alert"),
	        __webpack_require__("collections/services/saved/Searches")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(AlertModel, SavedSearchCollection) {
	        return SavedSearchCollection.extend({
	            model: AlertModel,
	            initialize: function() {
	                SavedSearchCollection.prototype.initialize.apply(this, arguments);
	            },
	            sync: function(method, model, options) {
	                switch (method) {
	                    case 'read' :
	                        options = options || {};
	                        if (!options.forceSearchData) {
	                            options.data = options.data || {};
	                            var search = '(' + this.constructor.ALERT_SEARCH_STRING + ')';
	                            if (options.data.search) {
	                                search += ' AND ' + options.data.search;
	                            }
	                            options.data.search = search;
	                        }
	                        break;
	                }
	                return SavedSearchCollection.prototype.sync.apply(this, arguments);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/search/Alert":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("models/ACLReadOnly"),
	        __webpack_require__("models/search/ScheduledReport"),
	        __webpack_require__("models/shared/Cron"),
	        __webpack_require__("models/shared/TimeRange"),
	        __webpack_require__("util/time"),
	        __webpack_require__("util/splunkd_utils"),
	        __webpack_require__("shim/splunk.util"),
	        __webpack_require__("stubs/i18n"),
	        __webpack_require__("util/math_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseModel,
	        ACLReadOnlyModel,
	        ReportModel,
	        CronModel,
	        TimeRangeModel,
	        time_utils,
	        splunkd_utils,
	        splunkUtil,
	        i18n,
	        mathUtils
	    ){
	        var EntryContentDefaults = {
	            'ui.type': 'scheduled',
	            'ui.realtime.triggercondition': 'per_result',
	            'ui.realtime.resultscomparator': 'greater than',
	            'ui.realtime.resultstimeunit': 'm',
	            'ui.realtime.resultscomparatorinput': '0',
	            'ui.realtime.resultstime': '1',
	            'ui.realtime.customsearch': void(0),
	            'ui.scheduled.triggercondition': 'events',
	            'ui.scheduled.resultscomparator': 'greater than',
	            'ui.scheduled.resultsinput': '0',
	            'ui.permissions': splunkd_utils.USER,
	            'ui.executeactions': true,
	            'ui.supresstime': 60,
	            'ui.supresstimeunit': 's'
	        };
	        var Model = ReportModel.extend({
	            initialize: function(attributes, options) {
	                ReportModel.prototype.initialize.apply(this, arguments);
	            },

	            validate: function(attrs, setOptions) {
	                var errors = _.extend({}, this.entry.content.validate());
	                if (this.cron.get('cronType') === 'custom' &&
	                    this.entry.content.get('ui.type') === 'scheduled') {
	                    _.extend(errors, this.cron.validate());
	                    _.extend(errors, this.workingTimeRange.validate());
	                } else {
	                    this.cron.clearErrors();
	                    this.workingTimeRange.clearErrors();
	                }
	                if (_.isEmpty(errors)) {
	                    return undefined;
	                } else {
	                    return errors;
	                }
	            },
	            
	            setNewAlertAttr: function() {
	                this.entry.set('name', '');
	                this.entry.content.set({
	                    // for backwards compatibility
	                    'action.email.useNSSubject': '1',
	                    // should not accelerate an alert
	                    'action.summary_index': '0',
	                    'disabled': false,
	                    'is_scheduled': 1
	                });
	            },
	            canNotEditInUI: function() {
	                // can not edit in ui if realtime alltime with trigger type other than always
	                return (this.entry.content.get('dispatch.earliest_time')==='rt' ||
	                        this.entry.content.get('dispatch.latest_time') ==='rt') &&
	                    this.entry.content.get('alert_type') !== 'always';
	            },
	            
	            transposeToSavedsearch: function() {
	                switch(this.entry.content.get('ui.type')){
	                    case 'realtime':
	                        if (this.entry.content.get('ui.realtime.triggercondition') != 'per_result'){
	                            if(this.entry.content.get('ui.realtime.resultstime')){
	                                this.entry.content.set({
	                                    'dispatch.earliest_time': 'rt-' + this.entry.content.get('ui.realtime.resultstime') + '' + this.entry.content.get('ui.realtime.resultstimeunit'),
	                                    'dispatch.latest_time': 'rt-0' + this.entry.content.get('ui.realtime.resultstimeunit'),
	                                    'cron_schedule': '* * * * *'
	                                });
	                            }
	                        } else {
	                            this.entry.content.set({
	                                'dispatch.earliest_time': 'rt',
	                                'dispatch.latest_time': 'rt',
	                                'cron_schedule': '* * * * *'
	                            });
	                        }
	                        
	                        switch(this.entry.content.get('ui.realtime.triggercondition')){
	                            case 'per_result':
	                                this.entry.content.set('alert_type', 'always');
	                                break;
	                            case 'events':
	                                this.entry.content.set({
	                                    'alert_type': 'number of events',
	                                    'alert_comparator': this.entry.content.get('ui.realtime.resultscomparator'),
	                                    'alert_threshold': this.entry.content.get('ui.realtime.resultscomparatorinput')
	                                });
	                                break;
	                            case 'hosts':
	                                this.entry.content.set({
	                                    'alert_type': 'number of hosts',
	                                    'alert_comparator': this.entry.content.get('ui.realtime.resultscomparator'),
	                                    'alert_threshold': this.entry.content.get('ui.realtime.resultscomparatorinput')
	                                });
	                                break;
	                            case 'sources':
	                                this.entry.content.set({
	                                    'alert_type': 'number of sources',
	                                    'alert_comparator': this.entry.content.get('ui.realtime.resultscomparator'),
	                                    'alert_threshold': this.entry.content.get('ui.realtime.resultscomparatorinput')
	                                });
	                                break;
	                            case 'custom':
	                                this.entry.content.set({
	                                    'alert_type': 'custom',
	                                    'alert_condition': this.entry.content.get('ui.realtime.customsearch')
	                                });
	                                break;
	                        }
	                        break;
	                    case 'scheduled':
	                        switch(this.entry.content.get('ui.scheduled.triggercondition')){
	                            case 'events':
	                                this.entry.content.set({
	                                    'alert_type': 'number of events',
	                                    'alert_comparator': this.entry.content.get('ui.scheduled.resultscomparator'),
	                                    'alert_threshold': this.entry.content.get('ui.scheduled.resultsinput')
	                                });
	                                break;
	                            case 'hosts':
	                                this.entry.content.set({
	                                    'alert_type': 'number of hosts',
	                                    'alert_comparator': this.entry.content.get('ui.scheduled.resultscomparator'),
	                                    'alert_threshold': this.entry.content.get('ui.scheduled.resultsinput')
	                                });
	                                break;
	                            case 'sources':
	                                this.entry.content.set({
	                                    'alert_type': 'number of sources',
	                                    'alert_comparator': this.entry.content.get('ui.scheduled.resultscomparator'),
	                                    'alert_threshold': this.entry.content.get('ui.scheduled.resultsinput')
	                                });
	                                break;
	                            case 'custom':
	                                this.entry.content.set({
	                                    'alert_type': 'custom',
	                                    'alert_condition': this.entry.content.get('ui.scheduled.customsearch')
	                                });
	                                break;
	                        }
	                        switch(this.cron.get('cronType')){
	                            case 'hourly':
	                                this.entry.content.set({
	                                    'dispatch.earliest_time': '-1h',
	                                    'dispatch.latest_time': 'now'
	                                });
	                                break;
	                            case 'daily':
	                                this.entry.content.set({
	                                    'dispatch.earliest_time': '-1d',
	                                    'dispatch.latest_time': 'now'
	                                });
	                                break;
	                            case 'weekly':
	                                this.entry.content.set({
	                                    'dispatch.earliest_time': '-1w',
	                                    'dispatch.latest_time': 'now'
	                                });
	                                break;
	                            case 'monthly':
	                                this.entry.content.set({
	                                    'dispatch.earliest_time': '-1mon',
	                                    'dispatch.latest_time': 'now'
	                                });
	                                break;
	                            case 'custom':
	                                this.entry.content.set({
	                                    'dispatch.earliest_time': this.workingTimeRange.get('earliest'),
	                                    'dispatch.latest_time': this.workingTimeRange.get('latest')
	                                });
	                                break;
	                        }
	                        this.entry.content.set({'cron_schedule': this.cron.getCronString()});
	                        break;
	                }
	                
	                if (this.entry.content.has('ui.executeactions') && this.entry.content.get('ui.executeactions') &&
	                    !(this.entry.content.get('ui.type') === 'realtime' &&
	                        this.entry.content.get('ui.realtime.triggercondition') === 'per_result')) {
	                    this.entry.content.set({
	                        'alert.digest_mode' : 1
	                    });
	                } else {
	                    this.entry.content.set({
	                        'alert.digest_mode' : 0
	                    });
	                }
	                
	                if (this.entry.content.get('alert.suppress')) {
	                    this.entry.content.set({
	                        'alert.suppress.period': this.entry.content.get('ui.supresstime') + this.entry.content.get('ui.supresstimeunit')
	                    });
	                    if (!(this.entry.content.get('ui.type') == 'realtime' &&
	                            this.entry.content.get('ui.realtime.triggercondition') == 'per_result') &&
	                        this.entry.content.get('ui.executeactions')) {
	                        this.entry.content.set('alert.suppress.fields', '');
	                    }
	                } else {
	                    // ensures 'alert.supress' is not null
	                    this.entry.content.set('alert.suppress', 0);
	                }
	                
	                this.transposeActionsToSavedsearch();
	            },
	            transposeFromSavedsearch: function() {
	                // saving isAlert so even after changing attrs here we know what it came in as 
	                var isAlert = this.isAlert();
	                if (this.isNew()) {
	                    // Create alert
	                    if (!isAlert) {
	                        // if new alert from a saved report not of type alert
	                        this.stripReportAttributesToSaveAsAlert();
	                    }
	                    this.setNewAlertAttr();
	                } else {
	                    // Edit alert
	                    if (!isAlert) {
	                        throw new Error("Can not edit a report with an alert model.");
	                    }
	                }
	                if (isAlert) {
	                    this.transposeFromSavedsearchAlert();
	                }
	            },
	            transposeFromSavedsearchAlert: function() {
	                // Settings
	                var triggercondition = this.entry.content.get('alert_type'),
	                    earliestTime = this.entry.content.get('dispatch.earliest_time'),
	                    latestTime = this.entry.content.get('dispatch.latest_time'),
	                    type = this.isRealTime() ? 'realtime' : 'scheduled',
	                    attr = {
	                        'ui.type': type
	                    };
	                    
	                this.workingTimeRange.set({
	                    'earliest': earliestTime,
	                    'latest': latestTime
	                });
	                
	                switch(type){
	                    case 'realtime' :
	                        var timeMatch = earliestTime.match(/\d+/);
	                        switch(triggercondition) {
	                            case 'always' :
	                                attr['ui.realtime.triggercondition'] = 'per_result';
	                                break;
	                            case 'number of events' :
	                                attr['ui.realtime.triggercondition'] = 'events';
	                                attr['ui.realtime.resultscomparator'] = this.entry.content.get('alert_comparator');
	                                attr['ui.realtime.resultscomparatorinput'] = this.entry.content.get('alert_threshold');
	                                attr['ui.realtime.resultstime'] = timeMatch ? timeMatch[0] : "0";
	                                attr['ui.realtime.resultstimeunit'] = _.indexOf(['d', 'h', 'm'], earliestTime.match(/[a-z]$/)[0]) === -1 ? 'm' : earliestTime.match(/[a-z]$/)[0];
	                                break;
	                            case 'number of hosts' :
	                                attr['ui.realtime.triggercondition'] = 'hosts';
	                                attr['ui.realtime.resultscomparator'] = this.entry.content.get('alert_comparator');
	                                attr['ui.realtime.resultscomparatorinput'] = this.entry.content.get('alert_threshold');
	                                attr['ui.realtime.resultstime'] = timeMatch ? timeMatch[0] : "0";
	                                attr['ui.realtime.resultstimeunit'] = _.indexOf(['d', 'h', 'm'], earliestTime.match(/[a-z]$/)[0]) === -1 ? 'm' : earliestTime.match(/[a-z]$/)[0];
	                                break;
	                            case 'number of sources' :
	                                attr['ui.realtime.triggercondition'] = 'sources';
	                                attr['ui.realtime.resultscomparator'] = this.entry.content.get('alert_comparator');
	                                attr['ui.realtime.resultscomparatorinput'] = this.entry.content.get('alert_threshold');
	                                attr['ui.realtime.resultstime'] = timeMatch ? timeMatch[0] : "0";
	                                attr['ui.realtime.resultstimeunit'] = _.indexOf(['d', 'h', 'm'], earliestTime.match(/[a-z]$/)[0]) === -1 ? 'm' : earliestTime.match(/[a-z]$/)[0];
	                                break;
	                            case 'custom' :
	                                attr['ui.realtime.triggercondition'] = 'custom';
	                                attr['ui.realtime.customsearch'] = this.entry.content.get('alert_condition');
	                                attr['ui.realtime.resultstime'] = timeMatch ? timeMatch[0] : "0";
	                                attr['ui.realtime.resultstimeunit'] = _.indexOf(['d', 'h', 'm'], earliestTime.match(/[a-z]$/)[0]) === -1 ? 'm' : earliestTime.match(/[a-z]$/)[0];
	                                break;
	                        }
	                        break;
	                    case 'scheduled' :
	                        if (this.entry.content.get('cron_schedule')) {
	                            this.cron.set(CronModel.createFromCronString(this.entry.content.get('cron_schedule')).toJSON());
	                            //check if earliest latest are defaults if not set cronType to custom
	                            switch(this.cron.get('cronType')){
	                                case 'hourly':
	                                    if (earliestTime !== '-1h' || latestTime !== 'now') {
	                                        this.cron.set('cronType', 'custom');
	                                    }
	                                    break;
	                                case 'daily':
	                                    if (earliestTime !== '-1d' || latestTime !== 'now') {
	                                        this.cron.set('cronType', 'custom');
	                                    }
	                                    break;
	                                case 'weekly':
	                                    if (earliestTime !== '-1w' || latestTime !== 'now') {
	                                        this.cron.set('cronType', 'custom');
	                                    }
	                                    break;
	                                case 'monthly':
	                                    if (earliestTime !== '-1mon' || latestTime !== 'now') {
	                                        this.cron.set('cronType', 'custom');
	                                    }
	                                    break;
	                            }
	                        }
	                        switch(triggercondition) {
	                            case 'always' :
	                                    attr['ui.scheduled.triggercondition'] = 'events';
	                                    attr['ui.scheduled.resultscomparator'] = 'greater than';
	                                    attr['ui.scheduled.resultsinput'] = '0';
	                                break;
	                            case 'number of events' :
	                                    attr['ui.scheduled.triggercondition'] = 'events';
	                                    attr['ui.scheduled.resultscomparator'] = this.entry.content.get('alert_comparator');
	                                    attr['ui.scheduled.resultsinput'] = this.entry.content.get('alert_threshold');
	                                break;
	                            case 'number of hosts' :
	                                    attr['ui.scheduled.triggercondition'] = 'hosts';
	                                    attr['ui.scheduled.resultscomparator'] = this.entry.content.get('alert_comparator');
	                                    attr['ui.scheduled.resultsinput'] = this.entry.content.get('alert_threshold');
	                                break;
	                            case 'number of sources' :
	                                    attr['ui.scheduled.triggercondition'] = 'sources';
	                                    attr['ui.scheduled.resultscomparator'] = this.entry.content.get('alert_comparator');
	                                    attr['ui.scheduled.resultsinput'] = this.entry.content.get('alert_threshold');
	                                break;
	                            case 'custom' :
	                                attr['ui.scheduled.triggercondition'] = 'custom';
	                                attr['ui.scheduled.customsearch'] = this.entry.content.get('alert_condition');
	                                break;
	                        }
	                        break;
	                 }
	                 
	                // Trigger Conditions
	                attr['ui.executeactions'] = splunkUtil.normalizeBoolean(this.entry.content.get('alert.digest_mode'));
	                
	                // Throttle
	                var supresstime = this.entry.content.get('alert.suppress.period');
	                if (supresstime) {
	                    attr['ui.supresstime'] = supresstime.match(/^\d*/)[0];
	                    var timeUnit = supresstime.match(/s|m|h|d/);
	                    attr['ui.supresstimeunit'] = timeUnit ? timeUnit[0] : 's';
	                }
	                
	                // Sharing
	                attr['ui.permissions'] = splunkd_utils.USER;
	                
	                this.entry.content.set(attr);
	            },
	            getAlertTriggerConditionString: function() {
	                var type = this.entry.content.get('alert_type'),
	                    earliestTime = this.entry.content.get('dispatch.earliest_time'),
	                    latestTime = this.entry.content.get('dispatch.latest_time'),
	                    isRealtime = (earliestTime && time_utils.isRealtime(earliestTime)) || (latestTime && time_utils.isRealtime(latestTime)),
	                    threshold = this.entry.content.get('alert_threshold'),
	                    timeParse = time_utils.parseTimeString(earliestTime),
	                    alertCondition = this.entry.content.get('alert_condition'),
	                    isAllTimeRT = earliestTime === 'rt' ||latestTime === 'rt';
	                switch(type) {
	                    case 'always':
	                        if (isRealtime) {
	                            return _('Per-Result.').t();
	                        }
	                        return _('Number of Results is > 0.').t();
	                    case 'number of events':
	                    case 'number of hosts':
	                    case 'number of sources':
	                        if (isAllTimeRT) {
	                            return _('Unsupported.').t();
	                        }
	                        var typeText = {
	                            'number of events': _("Results").t(),
	                            'number of hosts': _("Hosts").t(),
	                            'number of sources': _("Sources").t()
	                        };
	                        switch(this.entry.content.get('alert_comparator')){
	                            case 'greater than':
	                                if (isRealtime) {
	                                    switch(timeParse.unit) {
	                                        case 'm':
	                                            return splunkUtil.sprintf(i18n.ungettext('Number of %(typetext)s is > %(threshold)s in %(timeAmount)s minute.', 'Number of %(typetext)s is > %(threshold)s in %(timeAmount)s minutes.', timeParse.amount), {typetext: typeText[type], threshold: threshold, timeAmount: timeParse.amount});
	                                        case 'h':
	                                            return splunkUtil.sprintf(i18n.ungettext('Number of %(typetext)s is > %(threshold)s in %(timeAmount)s hour.', 'Number of %(typetext)s is > %(threshold)s in %(timeAmount)s hours.', timeParse.amount), {typetext: typeText[type], threshold: threshold, timeAmount: timeParse.amount});
	                                        case 'd':
	                                            return splunkUtil.sprintf(i18n.ungettext('Number of %(typetext)s is > %(threshold)s in %(timeAmount)s day.', 'Number of %(typetext)s is > %(threshold)s in %(timeAmount)s days.', timeParse.amount), {typetext: typeText[type], threshold: threshold, timeAmount: timeParse.amount});
	                                    }
	                                } else {
	                                    return splunkUtil.sprintf(_('Number of %(typetext)s is > %(threshold)s.').t(), {typetext: typeText[type], threshold:threshold});
	                                }
	                                break;
	                            case 'less than':
	                                if (isRealtime) {
	                                    switch(timeParse.unit) {
	                                        case 'm':
	                                            return splunkUtil.sprintf(i18n.ungettext('Number of %(typetext)s is < %(threshold)s in %(timeAmount)s minute.', 'Number of %(typetext)s is < %(threshold)s in %(timeAmount)s minutes.', timeParse.amount), {typetext: typeText[type], threshold: threshold, timeAmount: timeParse.amount});
	                                        case 'h':
	                                            return splunkUtil.sprintf(i18n.ungettext('Number of %(typetext)s is < %(threshold)s in %(timeAmount)s hour.', 'Number of %(typetext)s is < %(threshold)s in %(timeAmount)s hours.', timeParse.amount), {typetext: typeText[type], threshold: threshold, timeAmount: timeParse.amount});
	                                        case 'd':
	                                            return splunkUtil.sprintf(i18n.ungettext('Number of %(typetext)s is < %(threshold)s in %(timeAmount)s day.', 'Number of %(typetext)s is < %(threshold)s in %(timeAmount)s days.', timeParse.amount), {typetext: typeText[type], threshold: threshold, timeAmount: timeParse.amount});
	                                    }
	                                } else {
	                                    return splunkUtil.sprintf(_('Number of %(typetext)s is < %(threshold)s.').t(), {typetext: typeText[type], threshold:threshold});
	                                }
	                                break;
	                            case 'equal to':
	                                if (isRealtime) {
	                                    switch(timeParse.unit) {
	                                        case 'm':
	                                            return splunkUtil.sprintf(i18n.ungettext('Number of %(typetext)s is = %(threshold)s in %(timeAmount)s minute.', 'Number of %(typetext)s is = %(threshold)s in %(timeAmount)s minutes.', timeParse.amount), {typetext: typeText[type], threshold: threshold, timeAmount: timeParse.amount});
	                                        case 'h':
	                                            return splunkUtil.sprintf(i18n.ungettext('Number of %(typetext)s is = %(threshold)s in %(timeAmount)s hour.', 'Number of %(typetext)s is = %(threshold)s in %(timeAmount)s hours.', timeParse.amount), {typetext: typeText[type], threshold: threshold, timeAmount: timeParse.amount});
	                                        case 'd':
	                                            return splunkUtil.sprintf(i18n.ungettext('Number of %(typetext)s is = %(threshold)s in %(timeAmount)s day.', 'Number of %(typetext)s is = %(threshold)s in %(timeAmount)s days.', timeParse.amount), {typetext: typeText[type], threshold: threshold, timeAmount: timeParse.amount});
	                                    }
	                                } else {
	                                    return splunkUtil.sprintf(_('Number of %(typetext)s is = %(threshold)s.').t(), {typetext: typeText[type], threshold:threshold});
	                                }
	                                break;
	                            case 'not equal to':
	                                if (isRealtime) {
	                                    switch(timeParse.unit) {
	                                        case 'm':
	                                            return splunkUtil.sprintf(i18n.ungettext('Number of %(typetext)s is &#8800; %(threshold)s in %(timeAmount)s minute.', 'Number of %(typetext)s is &#8800; %(threshold)s in %(timeAmount)s minutes.', timeParse.amount), {typetext: typeText[type], threshold: threshold, timeAmount: timeParse.amount});
	                                        case 'h':
	                                            return splunkUtil.sprintf(i18n.ungettext('Number of %(typetext)s is &#8800; %(threshold)s in %(timeAmount)s hour.', 'Number of %(typetext)s is &#8800; %(threshold)s in %(timeAmount)s hours.', timeParse.amount), {typetext: typeText[type], threshold: threshold, timeAmount: timeParse.amount});
	                                        case 'd':
	                                            return splunkUtil.sprintf(i18n.ungettext('Number of %(typetext)s is &#8800; %(threshold)s in %(timeAmount)s day.', 'Number of %(typetext)s is &#8800; %(threshold)s in %(timeAmount)s days.', timeParse.amount), {typetext: typeText[type], threshold: threshold, timeAmount: timeParse.amount});
	                                    }
	                                } else {
	                                    return splunkUtil.sprintf(_('Number of %(typetext)s is &#8800; %(threshold)s.').t(), {typetext: typeText[type], threshold:threshold});
	                                }
	                                break;
	                            case 'drops by':
	                                // drops by is only supported for non-realtime saved searches
	                                return splunkUtil.sprintf(_('Number of %(typetext)s drops by %(threshold)s.').t(), {typetext: typeText[type], threshold:threshold});
	                            case 'rises by':
	                                // rises by is only supported for non-realtime saved searches
	                                return splunkUtil.sprintf(_('Number of %(typetext)s rises by %(threshold)s.').t(), {typetext: typeText[type], threshold:threshold});
	                        }
	                        break;
	                    case 'custom':
	                        if (isAllTimeRT) {
	                            return _('Unsupported.').t();
	                        }
	                        if (isRealtime) {
	                            switch(timeParse.unit) {
	                                case 'm':
	                                    return splunkUtil.sprintf(i18n.ungettext('Custom. "%(alertCondition)s" in %(timeAmount)s minute.', 'Custom. "%(alertCondition)s" in %(timeAmount)s minutes.', timeParse.amount), {alertCondition: alertCondition, timeAmount: timeParse.amount});
	                                case 'h':
	                                    return splunkUtil.sprintf(i18n.ungettext('Custom. "%(alertCondition)s" in %(timeAmount)s hour.', 'Custom. "%(alertCondition)s" in %(timeAmount)s hours.', timeParse.amount), {alertCondition: alertCondition, timeAmount: timeParse.amount});
	                                case 'd':
	                                    return splunkUtil.sprintf(i18n.ungettext('Custom. "%(alertCondition)s" in %(timeAmount)s day.', 'Custom. "%(alertCondition)s" in %(timeAmount)s days.', timeParse.amount), {alertCondition: alertCondition, timeAmount: timeParse.amount});
	                            }
	                        } else {
	                            return splunkUtil.sprintf(_('Custom. "%s".').t(), alertCondition);
	                        }
	                        break;
	                }
	            }
	        });
	        // break the shared reference to Entry
	        Model.Entry = Model.Entry.extend({});
	        // now we can safely extend Entry.Content
	        Model.Entry.Content = Model.Entry.Content.extend({
	            defaults: EntryContentDefaults,
	            validation: _.extend({}, Model.Entry.Content.prototype.validation, {
	                'ui.type': {
	                    required: true
	                },
	                'ui.realtime.resultscomparatorinput': {
	                    fn: 'validateRealtimeResultsComparatorInput'
	                 },
	                'ui.realtime.resultstime': {
	                    fn: 'validateRealtimeResultsTime'
	                },
	                'ui.realtime.customsearch': {
	                    fn: 'validateRealtimeCustomSearch'
	                },
	                'ui.scheduled.resultsinput': {
	                    fn: 'validateScheduledResultsInput'
	                },
	                'ui.scheduled.customsearch': {
	                    fn: 'validateScheduledCustomSearch'
	                },
	                'alert.suppress.fields': {
	                    fn: 'validateFieldValue'
	                },
	                'ui.supresstime': {
	                    fn: 'validateSuppressTime'
	                },  
	                'alert.track': {
	                    fn: 'validateActions'
	                }
	            }),
	            validateRealtimeResultsComparatorInput: function(value, attr, computedState) {
	                if (computedState['ui.type'] === 'realtime' &&
	                    (computedState['ui.realtime.triggercondition'] === 'events' ||
	                        computedState['ui.realtime.triggercondition'] === 'hosts' ||
	                        computedState['ui.realtime.triggercondition'] === 'sources') &&
	                    _.isNaN(mathUtils.strictParseFloat(value))) {
	                    
	                    return _('Trigger threshold must be a number.').t();
	                }
	            },
	            validateRealtimeResultsTime: function(value, attr, computedState) {
	                if (computedState['ui.type'] === 'realtime' &&
	                    (computedState['ui.realtime.triggercondition'] === 'events' ||
	                        computedState['ui.realtime.triggercondition'] === 'hosts' ||
	                        computedState['ui.realtime.triggercondition'] === 'sources' ||
	                        computedState['ui.realtime.triggercondition'] === 'custom') &&
	                    (_.isNaN(parseFloat(value)) || parseFloat(value) <= 0)) {
	                    
	                    return _('Trigger time range must be a number greater than 0.').t();
	                }
	            },
	            validateRealtimeCustomSearch: function(value, attr, computedState) {
	                if (computedState['ui.type'] === 'realtime' &&
	                    computedState['ui.realtime.triggercondition'] === 'custom' &&
	                    (_.isUndefined(value) || $.trim(value).length === 0)) {
	                    
	                    return _('Custom condition is required.').t();
	                }
	            },
	            validateScheduledResultsInput: function(value, attr, computedState) {
	                if (computedState['ui.type'] === 'scheduled' &&
	                    (computedState['ui.scheduled.triggercondition'] === 'events' ||
	                        computedState['ui.scheduled.triggercondition'] === 'hosts' ||
	                        computedState['ui.scheduled.triggercondition'] === 'sources') &&
	                    _.isNaN(mathUtils.strictParseFloat(value))) {
	                    
	                    return _('Trigger threshold must be a number.').t();
	                }
	            },
	            validateScheduledCustomSearch: function(value, attr, computedState) {
	                if (computedState['ui.type'] === 'scheduled' &&
	                    computedState['ui.scheduled.triggercondition'] === 'custom' &&
	                    (_.isUndefined(value) || $.trim(value).length === 0)) {
	                    
	                    return _('Custom condition is required.').t();
	                }
	            },
	            validateFieldValue: function(value, attr, computedState) {
	                if (computedState['alert.suppress'] &&
	                    (!computedState['ui.executeactions'] ||
	                        (computedState['ui.type'] === 'realtime' &&
	                            computedState['ui.realtime.triggercondition'] === 'per_result')) &&
	                    (_.isUndefined(value) || $.trim(value).length === 0)) {
	                    
	                    return _('Per result alert throttling requires at least one throttling field; use * to throttle on all fields.').t();
	                }
	            },
	            validateSuppressTime: function(value, attr, computedState) {
	                if (computedState['alert.suppress'] &&
	                    (!mathUtils.isInteger(value) || value <= 0)) {
	                    
	                    return _('Throttle suppression time range must be a integer greater than 0.').t();
	                }
	            },          
	            validateActions: function(value, attr, computedState) {
	                if (!value) {
	                    var action = _.find(computedState, function(value, attr) {
	                        return splunkUtil.normalizeBoolean(value) === true && /^action.([^\.]*)$/.test(attr);
	                    });
	                    if (!action) {
	                        return _('Enable at least one action.').t();
	                    }
	                }
	            }
	        }); 

	        return Model;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/shared/TimeRange":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("stubs/i18n"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("collections/services/search/TimeParsers"),
	        __webpack_require__("util/splunkd_utils"),
	        __webpack_require__("util/time")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, i18n, BaseModel, TimeParsersCollection, splunkd_utils, time_utils) {
	        return BaseModel.extend({
	            initialize: function() {
	                BaseModel.prototype.initialize.apply(this, arguments);
	                this.timeParsers = new TimeParsersCollection();
	                this.associated.timeParsers = this.timeParsers;
	                this.units = time_utils.TIME_UNITS;
	            },
	            clear: function(options) {
	                delete this.timeParsersXHR;
	                return BaseModel.prototype.clear.apply(this, arguments);
	            },
	            defaults: {
	                enableRealTime: true
	            },
	            validation: {
	                earliest: [
	                    {},
	                    {
	                        fn: 'validateTime'
	                    }
	                ],
	                latest: [
	                    {},
	                    {
	                        fn: 'validateTime'
	                    }
	                ]
	            },
	            validateTime: function(value, attr, computedState) {
	                var earliest_time_attr = (computedState.earliest || ""),
	                    latest_time_attr = (computedState.latest || ""),
	                    enableRealTime = this.get('enableRealTime'),
	                    is_earliest_rt = time_utils.isRealtime(earliest_time_attr),
	                    is_latest_rt = time_utils.isRealtime(latest_time_attr),
	                    earliest_time = time_utils.stripRTSafe(earliest_time_attr, false),
	                    latest_time = time_utils.stripRTSafe(latest_time_attr, true);
	                
	                if (earliest_time && latest_time && (earliest_time === latest_time) && (attr === "latest")) {
	                    return _("You cannot have equivalent times.").t();
	                } else if (!enableRealTime) {
	                    if (((is_earliest_rt && is_latest_rt) && (attr === "latest")) ||
	                            ((is_earliest_rt && !is_latest_rt && (attr === "earliest")) ||
	                            (is_latest_rt && !is_earliest_rt && (attr === "latest")))) {
	                        return _("rt time values are not allowed").t();
	                    }
	                } else {
	                    if (is_earliest_rt && !is_latest_rt && (attr === "latest")) {
	                        return _("You must set a rt value for latest time if you set a rt value for earliest time.").t();
	                    } else if (!is_earliest_rt && is_latest_rt && (attr === "earliest")) {
	                        return _("You must set a rt value for earliest time if you set a rt value for latest time.").t();
	                    }                    
	                }
	            },
	            sync: function(method, model, options) {
	                var deferredResponse = $.Deferred(),
	                    rootModel = model,
	                    rootOptions = options,
	                    timeParsers,
	                    timeParsersISO,
	                    times = [],
	                    data = {},
	                    error_msg,
	                    latest,
	                    earliest;
	                
	                model.trigger('request', model, deferredResponse, options);

	                switch (method) {
	                    case 'create':
	                        earliest = time_utils.stripRTSafe(((model.get('earliest') || '') + ''), false);
	                        if (earliest) {
	                            times.push(earliest);
	                        }   
	                        latest = time_utils.stripRTSafe(((model.get('latest') || '') + ''), true);
	                        if (latest) {
	                            times.push(latest);
	                        }
	                        if (!times.length) {
	                            options.success(data);
	                            deferredResponse.resolve.apply(deferredResponse);
	                            return deferredResponse.promise();
	                        }

	                        //get epoch
	                        this.timeParsers.reset([]);
	                        this.timeParsersXHR = this.timeParsers.fetch({
	                            data: {
	                                time: times,
	                                output_time_format: '%s.%Q|%Y-%m-%dT%H:%M:%S.%Q%:z'
	                            },  
	                            success: function() {
	                                var timeParserEarliest = this.timeParsers.get(earliest),
	                                    timeParserEarliestParts = timeParserEarliest ? (timeParserEarliest.get('value') || '').split('|') : [],
	                                    timeParserEarliestEpoch = timeParserEarliestParts[0],
	                                    timeParserEarliestISO = timeParserEarliestParts[1],
	                                    timeParserLatest = this.timeParsers.get(latest),
	                                    timeParserLatestParts = timeParserLatest ? (timeParserLatest.get('value') || '').split('|') : [],
	                                    timeParserLatestEpoch = timeParserLatestParts[0],
	                                    timeParserLatestISO = timeParserLatestParts[1];
	                                if (timeParserEarliest) {
	                                    data.earliest_epoch = parseFloat(timeParserEarliestEpoch);
	                                }
	                                if (timeParserLatest) {
	                                    data.latest_epoch = parseFloat(timeParserLatestEpoch);
	                                }
	                                if (timeParserEarliestISO) {
	                                    data.earliest_iso = timeParserEarliestISO;
	                                    data.earliest_date = time_utils.isoToDateObject(timeParserEarliestISO);
	                                }
	                                if (timeParserLatestISO) {
	                                    data.latest_iso = timeParserLatestISO;
	                                    data.latest_date = time_utils.isoToDateObject(timeParserLatestISO);
	                                }
	                                if (timeParserEarliest && timeParserLatest) {
	                                    var earliestRounded = (Math.round(data.earliest_epoch * 1000) / 1000),
	                                        latestRounded = (Math.round(data.latest_epoch * 1000) / 1000);
	                                    
	                                    if (earliestRounded === latestRounded) {
	                                        error_msg = splunkd_utils.createSplunkDMessage(
	                                            splunkd_utils.ERROR,
	                                            _("You cannot have equivalent times.").t()
	                                        );
	                                    }
	                                    if (earliestRounded > latestRounded) {
	                                        error_msg = splunkd_utils.createSplunkDMessage(
	                                            splunkd_utils.ERROR,
	                                            _("Earliest time cannot be greater than latest time.").t()
	                                        );
	                                    }
	                                    if (error_msg) {
	                                        rootOptions.error(error_msg);
	                                        return;
	                                    }
	                                }
	                                rootOptions.success(data);
	                            }.bind(this),
	                            error: function() {
	                                var message = splunkd_utils.createSplunkDMessage(
	                                    splunkd_utils.ERROR,
	                                    _("You have an invalid time in your range.").t()
	                                );
	                                rootOptions.error(message);                                
	                            }
	                        });
	                        
	                        this.timeParsersXHR.done(function(){
	                            deferredResponse.resolve.apply(deferredResponse, arguments);
	                        });
	                        
	                        this.timeParsersXHR.fail(function(){
	                            deferredResponse.reject.apply(deferredResponse, arguments);
	                        });
	                        
	                        return deferredResponse.promise();
	                    default:
	                        throw 'Operation not supported';
	                }
	            },
	            
	            /**
	             * Convenience pass through methods to time_utils
	             */
	            getTimeParse: function(attr) {
	                return time_utils.parseTimeString(this.get(attr));
	            },
	            isRealtime: function(attr) {
	                return time_utils.isRealtime(this.get(attr));
	            },
	            isAbsolute: function(attr) {
	                return time_utils.isAbsolute(this.get(attr));
	            },
	            isEpoch: function(attr) {
	                return time_utils.isEpoch(this.get(attr));
	            },
	            isWholeDay: function(attr) {
	                return time_utils.timeAndJsDateIsWholeDay(this.get(attr), this.get(attr + '_date'));
	            },
	            latestIsNow: function() {
	                return time_utils.isNow(this.get('latest'));
	            },
	            hasNoEarliest: function() {
	                return time_utils.isEmpty(this.get('earliest'));
	            },

	            isRangeSnappedToSeconds: function() {
	                var earliestDate = this.get('earliest_date'),
	                    latestDate = this.get('latest_date');

	                if (earliestDate && (earliestDate.getMilliseconds() !== 0)) {
	                    return false;
	                }
	                if (latestDate && (latestDate.getMilliseconds() !== 0)) {
	                    return false;
	                }
	                return true;
	            },

	            /**
	            * presets: <collections.services.data.ui.TimesV2>
	            **/
	            generateLabel: function(presets) {               
	                return time_utils.generateLabel(presets, this.get('earliest'), this.get("earliest_date"), this.get('latest'), this.get("latest_date"));
	            },
	            fetchAbort: function() {
	                BaseModel.prototype.fetchAbort();
	                if (this.timeParsersXHR && this.timeParsersXHR.state && this.timeParsersXHR.state()==='pending') {
	                    this.timeParsersXHR.abort();
	                }
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "collections/services/search/TimeParsers":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("models/services/search/TimeParser"),
	        __webpack_require__("collections/Base"),
	        __webpack_require__("util/splunkd_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, Backbone, TimeParserModel, CollectionsBase, splunkDUtils) {
	        return CollectionsBase.extend({
	            model: TimeParserModel,
	            intialize: function() {
	                CollectionsBase.prototype.initialize.apply(this, arguments);
	            },
	            sync: function(method, collection, options) {
	                var appOwner = {},
	                    defaults = {
	                        data: {output_mode: "json"},
	                        traditional: true
	                    };
	                switch (method) {
	                    case 'read':
	                        if (options && options.data){
	                            appOwner = $.extend(appOwner, { //JQuery purges undefined
	                                app: options.data.app || undefined,
	                                owner: options.data.owner || undefined
	                            });
	                            delete options.data.app;
	                            delete options.data.owner;
	                        }
	                        defaults.url = splunkDUtils.fullpath(collection.url, appOwner);
	                        $.extend(true, defaults, options || {});
	                        return Backbone.sync.call(this, 'read', collection, defaults);
	                    default:
	                        throw 'Operation not supported';
	                }
	            },
	            url: "/services/search/timeparser",
	            parse: function(response) {
	                var model,
	                    models = [];
	                for (var key in response) {
	                    model = {};
	                    model[key] = response[key];
	                    models.push(model);
	                }
	                return models;
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/search/TimeParser":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("util/splunkd_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, Backbone, BaseModel, splunkd_utils) {
	        return BaseModel.extend({
	            initialize: function(options) {
	                BaseModel.prototype.initialize.call(this, options);
	            },
	            sync: function(method, model, options) {
	                switch (method) {
	                    case 'read':
	                        var syncOptions = splunkd_utils.prepareSyncOptions(options, model.url);
	                        if (options.data.time === ''){
	                            model.set({key: '', value: ''});
	                            return;
	                        }
	                        return Backbone.sync.call(this, 'read', model, syncOptions);
	                    default:
	                        throw 'Operation not supported';
	                }
	            },
	            url: "/services/search/timeparser",
	            parse:  function(response) {
	                if (!response) {
	                    return {};
	                }
	                var key = _.keys(response)[0],
	                    value = response[key];
	                return {
	                    key: key,
	                    value: value
	                };
	            },
	            idAttribute: 'key'
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/search/ScheduledReport":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("models/search/Report"),
	        __webpack_require__("models/shared/Cron"),
	        __webpack_require__("models/shared/TimeRange"),
	        __webpack_require__("util/validation"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        $,
	        ReportModel,
	        CronModel,
	        TimeRangeModel,
	        ValidationUtils,
	        splunkUtil
	    ) {
	        var ScheduledReportModel = ReportModel.extend({
	            initialize: function() {
	                ReportModel.prototype.initialize.apply(this, arguments);
	            },

	            initializeAssociated: function() {
	                ReportModel.prototype.initializeAssociated.apply(this, arguments);
	                var RootClass = this.constructor;
	                this.associated = this.associated || {};
	                
	                this.cron = this.cron || new RootClass.Cron();
	                this.associated.cron = this.cron;
	                
	                this.workingTimeRange = this.workingTimeRange || new RootClass.WorkingTimeRange({enableRealTime:false});
	                this.associated.workingTimeRange = this.workingTimeRange;
	            },

	            setFromSplunkD: function(payload, options) {
	                ReportModel.prototype.setFromSplunkD.apply(this, arguments);
	                this.transposeFromSavedsearch();
	            },

	            parse: function(response) {
	                var parsedResponse = ReportModel.prototype.parse.apply(this, arguments);
	                this.transposeFromSavedsearch();
	                return parsedResponse;
	            },

	            sync: function(method, model, options) {
	                options = $.extend(true, {}, options || {});
	                if (method === 'create' || method === 'update') {
	                    
	                    // transposeToSavedsearch is called below and sets values on the entry content
	                    // save the original values to set back on the mode if there is an error.
	                    var cloneContent = model.entry.content.clone().toJSON(),
	                        error = options.error;
	                        
	                    options.error = function () {
	                        model.entry.content.set(cloneContent);
	                        if (error) {
	                            error.apply(this, arguments);
	                        }
	                    };
	                    
	                    this.transposeToSavedsearch();
	                }

	                return ReportModel.prototype.sync.apply(this, arguments);
	            },

	            validate: function(attrs, setOptions) {
	                var errors = _.extend({}, ReportModel.prototype.validate.apply(this, arguments), this.entry.content.validate());

	                if (this.get('scheduled_and_enabled')) {
	                    _.extend(errors, this.cron.validate());
	                } else {
	                    this.cron.clearErrors();
	                }

	                if (_.isEmpty(errors)) {
	                    return undefined;
	                } else {
	                    return errors;
	                }
	            },

	            transposeToSavedsearch: function() {
	                if (this.get('scheduled_and_enabled')) {
	                    // SPL-109045: Set dispatchAs to owner if report is scheduled.
	                    this.entry.content.set({
	                        'is_scheduled': 1,
	                        'disabled': 0,
	                        'cron_schedule': this.cron.getCronString(),
	                        'dispatchAs': 'owner',
	                        'dispatch.earliest_time': this.workingTimeRange.get('earliest'),
	                        'dispatch.latest_time':this.workingTimeRange.get('latest')
	                    });

	                    this.transposeActionsToSavedsearch();

	                } else {
	                    this.entry.content.set('is_scheduled', 0);
	                }
	            },

	            transposeActionsToSavedsearch: function() {
	                if (this.entry.content.get('action.email')) {
	                    var sendResults = splunkUtil.normalizeBoolean(this.entry.content.get('action.email.sendpdf')) ||
	                            splunkUtil.normalizeBoolean(this.entry.content.get('action.email.sendcsv')) ||
	                            splunkUtil.normalizeBoolean(this.entry.content.get('action.email.inline'));
	                    this.entry.content.set('action.email.sendresults', +sendResults);
	                }

	                var actions = [];

	                _.each(this.entry.content.attributes, function(value, attr) {
	                    if (value == true) {
	                        var actionName = attr.match(/^action.([^\.]*)$/);
	                        if (actionName) {
	                            actions.push(actionName[1]);
	                        }
	                    }
	                });

	                this.entry.content.set('actions', actions.join(', '));
	            },

	            transposeFromSavedsearch: function() {
	                this.set({
	                    scheduled_and_enabled: !this.entry.content.get('disabled') && this.entry.content.get('is_scheduled')
	                });
	                this.cron.setFromCronString(this.entry.content.get('cron_schedule') || '0 6 * * 1');

	                this.workingTimeRange.save({
	                    'earliest': this.entry.content.get('dispatch.earliest_time'),
	                    'latest': this.entry.content.get('dispatch.latest_time')
	                });
	            },
	            unsetUnselectedActionArgs: function () {
	                var removedAttr = {};
	                _.each(this.entry.content.attributes, function(value, attr) {
	                    var match = attr.match(/^action.([^\.]*)\./);
	                    if (match && !this.entry.content.get('action.' + match[1])) {
	                        removedAttr[attr] = value;
	                        this.entry.content.unset(attr);
	                    }
	                }.bind(this));
	                return removedAttr;
	            }
	        },
	        {
	            Cron: CronModel,
	            WorkingTimeRange: TimeRangeModel
	        });

	        // break the shared reference to Entry
	        ScheduledReportModel.Entry = ScheduledReportModel.Entry.extend({});
	        // now we can safely extend Entry.Content
	        ScheduledReportModel.Entry.Content = ScheduledReportModel.Entry.Content.extend({
	            validation: {
	                'action.script.filename': {
	                    fn: 'validateScriptFilename'
	                },
	                'action.email.to': {
	                    fn: 'validateEmailTo'
	                },
	                'action.lookup.filename': {
	                    fn: 'validateLookupFilename'
	                }
	            },
	            validateScriptFilename: function(value, attr, computedState) {
	                if (computedState['action.script']) {
	                    if (_.isUndefined(value) || $.trim(value).length === 0) {
	                        return _('A file name is required if script action is enabled').t();
	                    }

	                    if (!ValidationUtils.isValidFilename(value)) {
	                       return _("Script file name cannot contain '..', '/', or '\\'").t();
	                    }
	                }
	            },
	            validateEmailTo: function(value, attr, computedState) {
	                 if (computedState['action.email']) {
	                    if (_.isUndefined(value) || $.trim(value).length === 0) {
	                        return _('An email address is required if email action is enabled').t();
	                    }

	                    if (!ValidationUtils.isValidEmailList(value)) {
	                        return _('One of the email addresses is invalid').t();
	                    }
	                 }
	            },
	            validateLookupFilename: function(value, attr, computedState) {
	                if (splunkUtil.normalizeBoolean(computedState['action.lookup'])) {
	                    if ((_.isUndefined(value) || $.trim(value).length === 0)) {
	                        return _('A file name is required if lookup action is enabled').t();
	                    }
	                    if (!/.*\.csv$/.test(value) || !ValidationUtils.isValidFilename(value)) {
	                        return _("Lookup file name must end with .csv and cannot contain '..', '/', or '\\'").t();
	                    }
	                }
	            }
	        });
	        return ScheduledReportModel;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "util/validation":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	            __webpack_require__("require/underscore"),
	            __webpack_require__("util/math_utils"),
	            __webpack_require__("shim/splunk.util")
	        ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	            _,
	            mathUtils,
	            splunkUtils
	        ) {

	    var isNumberOrAuto = function(value) {
	        return (value === 'auto' || !_.isNaN(mathUtils.strictParseFloat(value)));
	    };

	    var ValidationUtils = {};

	    ValidationUtils.positiveNumberOrAutoValidationGenerator = function(displayName) {
	        return function(value) {
	            var invalidMessage = splunkUtils.sprintf(
	                _('%s must be a positive number or "auto".').t(),
	                displayName
	            );
	            if (!isNumberOrAuto(value)) {
	                return invalidMessage;
	            }
	            var num = mathUtils.strictParseFloat(value);
	            if (!_.isNaN(num) && num <= 0) {
	                return invalidMessage;
	            }
	        };
	    };

	    ValidationUtils.numberOrAutoValidationGenerator = function(displayName) {
	        return function(value) {
	            if (!isNumberOrAuto(value)) {
	                return splunkUtils.sprintf(
	                    _('%s must be a number or "auto".').t(),
	                    displayName
	                );
	            }
	        };
	    };

	    ValidationUtils.minMaxValidationGenerator = function(minAttr, maxAttr, invalidMessage) {
	        return function(value, attr, computedState) {
	            var min = attr === minAttr ? mathUtils.strictParseFloat(value) : mathUtils.strictParseFloat(computedState[minAttr]),
	                max = attr === maxAttr ? mathUtils.strictParseFloat(value) : mathUtils.strictParseFloat(computedState[maxAttr]);

	            if (!_.isNaN(min) && !_.isNaN(max) && max <= min) {
	                return invalidMessage;
	            }
	        };
	    };

	    ValidationUtils.filterToValidRangeValues = function(rangeValues) {
	        if (_(rangeValues).isString()) {
	            rangeValues = ValidationUtils.parseStringifiedArray(rangeValues);
	        }
	        rangeValues = _(rangeValues).chain().map(parseFloat).filter(function(val) { return !_(val).isNaN(); }).uniq().value();
	        var runningMax = -Infinity;
	        rangeValues = _(rangeValues).filter(function(val) {
	            if(val < runningMax) {
	                return false;
	            }
	            runningMax = val;
	            return true;
	        });
	        return rangeValues;
	    };

	    ValidationUtils.validateRangeValues = function(value) {
	        var ranges;
	        if (value) {
	            try {
	                ranges = JSON.parse(value);
	            }
	            catch(e) {
	                return _('Ranges must be of the form: ["0","30","70","100"]').t();
	            }
	        } else {
	            ranges = [];
	        }
	        if (_(ranges).any(isNaN) || _(ranges).any(function(range) { return range === ""; })) {
	            return _('All color ranges must be valid numbers.').t();
	        }
	        ranges = ranges.map(parseFloat);
	        var filteredRanges = ValidationUtils.filterToValidRangeValues(ranges);
	        if(!_.isEqual(ranges, filteredRanges)) {
	            return _('Color ranges must be entered from lowest to highest.').t();
	        }
	    };

	    ValidationUtils.parseStringifiedColorArray = function(value) {
	        if (_(value).isArray()) {
	            return value;
	        }
	        if (!value || value.charAt(0) !== '[' || value.charAt(value.length - 1) !== ']') {
	            return false; //need to find a different way to bail
	        }
	        return splunkUtils.stringToFieldList(value.substring(1, value.length - 1));
	    };

	    ValidationUtils.parseStringifiedArray = function(value) {
	        if (!value) {
	            return [];
	        }
	        var parsedValues = [];
	        // SPL-80318 wrap this call to JSON.parse in a try-catch because the input could be invalid JSON
	        try {
	            parsedValues = _.values(JSON.parse(value));
	        }
	        catch(e) {}
	        return parsedValues;
	    };

	    /**
	     *
	     * Returns if an input is an integer that is supported in the conf 
	     *
	     * @param {String} value - string to be parsed into a number
	     * @return {Boolean}
	     */
	    ValidationUtils.isValidInteger = function(value) {
	        return value && (value === parseInt(value, 10).toString());
	    };

	    /**
	     *
	     * Returns if an input is an integer that is supported in the conf and not neg
	     *
	     * @param {String} value - string to be parsed into a number
	     * @return {Boolean}
	     */
	    ValidationUtils.isNonNegValidInteger = function(value) {
	        return ValidationUtils.isValidInteger(value) && value >= 0;
	    };

	    ValidationUtils.isPositiveValidInteger = function(value) {
	        return ValidationUtils.isValidInteger(value) && value > 0;
	    };

	    /**
	     *
	     * Returns if an input is a valid hex color string
	     *
	     * @param {String} value - string to be parsed into a hex color
	     * @return {Boolean}
	     */
	    ValidationUtils.isValidHexColorString = function(value) {
	        if (!_.isString(value)) {
	            return false;
	        }
	        return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(value);
	    };

	    /**
	     *
	     * Returns if an input is a valid list of email addresses
	     *
	     * @param {String} value - string to be parsed into email addresses
	     * @return {Boolean}
	     */
	    ValidationUtils.isValidEmailList = function(value) {
	        if (!_.isString(value)) {
	            return false;
	        }
	        return /(^((?:[^@\s]+@(?:[^@\s.]+\.)+[a-z]{2,})|(\$([\w.*#\- ]+)(?:\{([^}]+)\})?\$))(?:\s*[,;]\s*((?:[^@\s]+@(?:[^@\s.]+\.)+[a-z]{2,})|(\$([\w.*#\- ]+)(?:\{([^}]+)\})?\$)))*$)/gi.test(value);
	    };

	        /**
	     *
	     * Returns if an input is a valid filename
	     *
	     * @param {String} value - string to be parsed into a filename
	     * @return {Boolean}
	     */
	    ValidationUtils.isValidFilename = function(value) {
	        if (!_.isString(value) || !value.trim().length) {
	            return false;
	        }
	        return !/\.\.|\/|\\\\/.test(value);
	    };

	    return ValidationUtils;

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "collections/datasets/Datasets":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("collections/services/datasets/Datasets"),
	        __webpack_require__("models/datasets/PolymorphicDataset")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function (
	        _,
	        BaseDatasetsCollection,
	        DatasetsPolymorphicDatasetModel
	    ) {
	        var OPERATION = {
	                CLONE: 'clone',
	                EXTEND: 'extend'
	            },
	            DatasetsCollection = BaseDatasetsCollection.extend({
	            model: DatasetsPolymorphicDatasetModel,

	            initialize: function() {
	                BaseDatasetsCollection.prototype.initialize.apply(this, arguments);
	            },
	            
	            sync: function(method, model, options) {
	                switch (method) {
	                    case 'read' :
	                        options = options || {};
	                        if (!options.forceSearchData) {
	                            options.data = options.data || {};
	                            // TODO: this will currently filter out all transforms until (SPL-113898) is fixed.
	                            // Also, if even geo/external lookup table and definitions produce results with the from command we should revisit this (SPL-113158).
	                            
	                            var search = '(' + DatasetsCollection.DATASETS_SEARCH_STRING + ')';
	                            if (options.data.search) {
	                                search += ' AND (' + options.data.search + ')';
	                            }
	                            options.data.search = search;
	                        }
	                        
	                        break;
	                }
	                return BaseDatasetsCollection.prototype.sync.apply(this, arguments);
	            },
	            
	            getFieldPickerItems: function() {
	                return this.map(function(dataset) {
	                    return {
	                        label: dataset.getFormattedName(),
	                        value: dataset.id
	                    };
	                });
	            }
	        }, {
	            DATASETS_SEARCH_STRING: '((eai:type = "inputlookup-table") AND ((name != "*.kmz") AND (name != "*.kml") AND (name != "__mlspl_*"))) OR ((eai:type = "inputlookup-transform") AND (type != "geo") AND (type != "external")) OR (eai:type = "datamodel")',
	            TABLES_ONLY_SEARCH_STRING: 'eai:type = "datamodel" AND dataset.type = "table"',
	            OPERATION: OPERATION
	        });
	        
	        return DatasetsCollection;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "collections/services/datasets/Datasets":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("models/services/datasets/PolymorphicDataset"),
	        __webpack_require__("collections/SplunkDsBase")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        PolymorphicDatasetModel,
	        SplunkDsBaseCollection
	    ) {
	        return SplunkDsBaseCollection.extend({
	            url: 'datasets',
	            model: PolymorphicDatasetModel,
	            
	            initialize: function() {
	                SplunkDsBaseCollection.prototype.initialize.apply(this, arguments);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/services/datasets/PolymorphicDataset":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("models/services/data/TransformsLookup"),
	        __webpack_require__("models/services/data/LookupTableFile"),
	        __webpack_require__("models/services/datasets/DataModelObject"),
	        __webpack_require__("mixins/dataset")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        Backbone,
	        LookupTransformModel,
	        LookupTableFileModel,
	        DataModelObjectModel,
	        datasetMixin
	    ) {
	        var LOOKUP_TRANSFORM = 'inputlookup-transform',
	            LOOKUP_TABLE = 'inputlookup-table',
	            DATAMODEL = 'datamodel',
	            TABLE = 'table';
	        
	        var PolymorphicDataset = Backbone.Model.extend({
	            
	            constructor: function(attributes, options) {
	                /* 
	                 * 
	                 * Datasets are going to be created by their eai:type attribute..
	                 *
	                 */
	                var Model = PolymorphicDataset.getModel(attributes);
	                
	                if (!Model) {
	                    throw new Error("You must define a valid entry[0].content['eai:type'] for dataset construction!");
	                }
	                
	                // force the model to extend the dataset interface
	                _.defaults(Model.prototype, datasetMixin);
	                
	                return new Model(attributes, options);
	            }
	        
	        }, {
	            getModel: function(attributes) {
	                var Model;
	                
	                if (attributes && attributes.entry && attributes.entry[0] && attributes.entry[0].content) {
	                    
	                    if (attributes.entry[0].content['eai:type'] === LOOKUP_TRANSFORM) {
	                        Model = LookupTransformModel;
	                    } else if (attributes.entry[0].content['eai:type'] === LOOKUP_TABLE) {
	                        Model = LookupTableFileModel;
	                    } else if ((attributes.entry[0].content['eai:type'] === DATAMODEL) && (attributes.entry[0].content['dataset.type'] !== TABLE)) {
	                        Model = DataModelObjectModel;
	                    }
	                }
	                return Model;
	            },
	            LOOKUP_TRANSFORM: LOOKUP_TRANSFORM,
	            LOOKUP_TABLE: LOOKUP_TABLE,
	            DATAMODEL: DATAMODEL
	        });
	        
	        return PolymorphicDataset;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/services/data/TransformsLookup":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/SplunkDBase")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        SplunkDBaseModel
	    ) {
	        var TransformLookup = SplunkDBaseModel.extend({
	            url: 'data/transforms/lookups',

	            initialize: function() {
	                SplunkDBaseModel.prototype.initialize.apply(this, arguments);
	            },
	            
	            getFieldsList: function() {
	                var fieldsList = this.entry.content.get("fields_array");

	                if (_(fieldsList).isArray()) {
	                    return fieldsList;
	                } else if (fieldsList != "" && !_(fieldsList).isUndefined()) {
	                    return fieldsList.split(",");
	                } else {
	                    return [];
	                }
	            },
	            
	            getDatasetDisplayType: function() {
	                return TransformLookup.DATASET_DISPLAY_TYPES.LOOKUP_TRANSFORM;
	            },
	            
	            getFromType: function() {
	                return TransformLookup.DATASET_FROM_TYPES.INPUTLOOKUP;
	            },
	            
	            getFields: function() {
	                var fieldsList = this.getFieldsList();
	                
	                return _.map(fieldsList, function(field) {
	                    return {
	                        name: field
	                    };
	                });
	            },
	            
	            canEditDescription: function() {
	                return false;
	            },
	            
	            canClone: function() {
	                //TODO: determine how the cloning of lookup definitions does not conform to other EAI endpoints and enable this
	                return false;
	            }
	        }, {
	            DATASET_FROM_TYPES: {
	                INPUTLOOKUP: 'inputlookup'
	            },
	            DATASET_DISPLAY_TYPES: {
	                LOOKUP_TRANSFORM: _('lookup definition').t()
	            }
	        });
	        
	        return TransformLookup;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/data/LookupTableFile":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/SplunkDBase")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        SplunkDBaseModel
	    ) {
	        var LookupTableFile = SplunkDBaseModel.extend({
	            url: 'data/lookup-table-files',
	            
	            initialize: function() {
	                SplunkDBaseModel.prototype.initialize.apply(this, arguments);
	            },
	            
	            getDatasetDisplayType: function() {
	                return LookupTableFile.DATASET_DISPLAY_TYPES.LOOKUP_TABLE;
	            },
	            
	            getFromType: function() {
	                return LookupTableFile.DATASET_FROM_TYPES.INPUTLOOKUP;
	            },
	            
	            getFields: function() {
	                // TODO: the backend at some point is going to provide us with fields from
	                // lookup table files.
	            
	                return [];
	            },
	            
	            getTypedFields: function() {
	                return this.getFields();
	            },
	            
	            // we have to return false here because we get no fields for table files
	            // we are dependent on the AST to tell us the fields
	            isFixedFields: function() {
	                return false;
	            },
	            
	            canPivot: function() {
	                return true;
	            },
	            
	            canSearch: function() {
	                return true;
	            },
	            
	            canTable: function() {
	                return true;
	            },
	            
	            canEditDescription: function() {
	                return false;
	            },
	            
	            canClone: function() {
	                //TODO: determine how the cloning of lookup table files does not conform to other EAI endpoints and enable this
	                return false;
	            }
	            
	        }, {
	            DATASET_FROM_TYPES: {
	                INPUTLOOKUP: 'inputlookup'
	            },
	            DATASET_DISPLAY_TYPES: {
	                LOOKUP_TABLE: _('lookup table file').t()
	            }
	        });
	        
	        return LookupTableFile;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/datasets/DataModelObject":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/SplunkDBase"),
	        __webpack_require__("models/services/datamodel/private/Object")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        SplunkDBaseModel,
	        PrivateDataModelObjectModel
	    ) {
	        var DataModelObect = SplunkDBaseModel.extend({
	            initialize: function() {
	                SplunkDBaseModel.prototype.initialize.apply(this, arguments);
	            },

	            initializeAssociated: function() {
	                SplunkDBaseModel.prototype.initializeAssociated.apply(this, arguments);

	                // do a dynamic lookup of the current constructor so that this method is inheritance-friendly
	                var RootClass = this.constructor;
	                this.associated = this.associated || {};

	                this.parsedObject = this.parsedObject || new RootClass.PrivateDataModelObject();
	                this.associated.parsedObject = this.parsedObject;
	            },

	            parse: function(response, options) {
	                var parsedObject;

	                this.initializeAssociated();

	                response = $.extend(true, {}, response);

	                var response_entry = response.entry[0];

	                if (response_entry && response_entry.content && response_entry.content.description) {
	                    parsedObject = this.parsedObject.parse(JSON.parse(response_entry.content.description), options);
	                    this.parsedObject.set(parsedObject, options);
	                }

	                response = SplunkDBaseModel.prototype.parse.apply(this, arguments);

	                return response;
	            },

	            getDatasetDisplayType: function() {
	                return DataModelObect.DATASET_DISPLAY_TYPES.DATA_MODEL;
	            },

	            /**
	            * Data Model Objects do not have a description attribute that is human readable. If you want
	            * to access the JSON description do it directly.
	            */
	            getDescriptionAttribute: function() {
	                return undefined;
	            },

	            getFormattedName: function() {
	                return this.entry.content.get('displayName') || this.entry.get('name');
	            },

	            getFromName: function() {
	                return this.entry.content.get('from_name');
	            },

	            /**
	            * Because these models cannot be sync'd they can also not be cloned.
	            */
	            canClone: function() {
	                return false;
	            },

	            canEditPermissions: function() {
	                return false;
	            },

	            canEditDescription: function() {
	                return false;
	            },

	            canPivot: function() {
	                return true;
	            },

	            canSearch: function() {
	                return true;
	            },

	            canTable: function() {
	                return true;
	            },

	            getFields: function() {
	                var fields = this.parsedObject.getAllSearchFields(),
	                    fieldsWithoutHidden = _.where(fields, { hidden: false });

	                return _.map(fieldsWithoutHidden, function(field) {
	                    return {
	                        name: field.fieldName,
	                        type: field.type
	                    };
	                });
	            },

	            getTypedFields: function() {
	                return this.getFields();
	            },

	            isFixedFields: function() {
	                return true;
	            },

	            typeCanBeAccelerated: function() {
	                return true;
	            }
	        }, {

	            PrivateDataModelObject: PrivateDataModelObjectModel,
	            DATASET_DISPLAY_TYPES: {
	                DATA_MODEL: _('data model').t()
	            }
	        });

	        return DataModelObect;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/datamodel/private/Object":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * A model representing a single data model object.
	 *
	 * To be used only as a model inside the "collections/services/datamodel/private/ObjectHierarchy" module.
	 *
	 * For a description of possible attributes, see http://eswiki.splunk.com/Data_Model_JSON_Specification#Object
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("models/services/datamodel/private/Field"),
	        __webpack_require__("collections/services/datamodel/private/Fields"),
	        __webpack_require__("collections/services/datamodel/private/Calculations"),
	        __webpack_require__("collections/services/datamodel/private/FieldSampleValues"),
	        __webpack_require__("util/pivot/config_form_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseModel,
	        Field,
	        Fields,
	        Calculations,
	        FieldSampleValues,
	        formElementUtils
	    ) {

	        return BaseModel.extend({

	            ROOT_OBJECTS: ['BaseEvent', 'BaseTransaction', 'BaseSearch', 'BaseInterface', 'BaseImplements'],

	            idAttribute: 'objectName',

	            defaults: {
	                constraints: [],
	                objectsToGroup: []
	            },

	            validation: {
	                displayName: [
	                    {
	                        required: true,
	                        msg: _("Dataset Name is a required field.").t()
	                    },
	                    {
	                        pattern: /^((?!\*).)*$/,
	                        msg: _("Dataset Name can not contain an asterisk.").t()
	                    }

	                ],
	                objectName: [
	                    {
	                        required: true,
	                        msg: _("Dataset ID is a required field.").t()
	                    },
	                    {
	                        pattern: /^[\w\-]+$/,
	                        msg: _("Dataset ID can only contain alphanumeric characters, underscores or hyphens. Whitespace is not allowed.").t()
	                    },
	                    {
	                        pattern: /^[^_].*/,
	                        msg: _("Dataset ID can not start with an underscore character.").t()
	                    }
	                ],
	                objectsToGroup: {
	                    fn : function(value, attr, computedState) {
	                        var rootParent = computedState.parentName;
	                        if (rootParent == "BaseTransaction") {
	                            if (value.length == 0) {
	                                return _("Root transaction-based datasets require at least one Group Datasets value.").t();
	                            }
	                        }
	                    }
	                },
	                baseSearch: {
	                    fn: function(value, attr, computedState) {
	                        if (computedState.parentName == "BaseSearch") {
	                            if (_(value).isUndefined() || value == "") {
	                                return _("Root search-based datasets require a Search String.").t();
	                            }
	                        }
	                    }
	                }
	            },

	            initialize: function(attrs, options) {
	                BaseModel.prototype.initialize.apply(this, arguments);
	                this.initializeAssociated();
	                this.modelIdAndFechOptionsDataMapping = {};
	            },

	            // TODO: this depends on the object being inside of an ObjectHierarchy, it should really be moved
	            // (only used in DataModel.js line 80)
	            getBasicAttributes: function() {
	                return ({
	                    objectName: this.get('objectName'),
	                    displayName: this.get('displayName'),
	                    rootParent: this.get('rootParent'),
	                    lineage: this.get('lineage')
	                });
	            },

	            /**
	             * Returns the field object corresponding to the given field name and (optionally) owner,
	             * or undefined if no field matches.
	             *
	             * Searches over primitive fields and fields from calculations
	             *
	             * @param {String} name - the name of the field to match
	             * @param {String) owner (optional) - the owner of the field to match
	             */

	            getFieldByName: function(name, owner) {
	                var fields = this.getFieldList(),
	                    calculatedFields = _(this.getCalculationList()).chain().pluck('outputFields').flatten().value(),
	                    allFields = _.union(fields, calculatedFields);

	                return _(allFields).find(function(field) {
	                    return (field.fieldName === name && (!owner || field.owner === owner));
	                });
	            },

	            /**
	             * Returns the field object corresponding to the index time field, if one exists,
	             * otherwise returns undefined.
	             *
	             * Enforces that the field must have type 'timestamp' to differentiate from user-created fields.
	             * (see SPL-82440)
	             *
	             * @param {String} name - the name of the field to match
	             * @param {String) owner (optional) - the owner of the field to match
	             */
	            getIndexTimeField: function() {
	                var candidate = this.getFieldByName('_time');
	                if(candidate && candidate.type === 'timestamp') {
	                    return candidate;
	                }
	                return undefined;
	            },

	            /**
	             * Returns a list representing all fields that are available on the object in a reporting context.
	             *
	             * Includes primitive fields and fields from calculations.
	             * Primary sort is by field data type (objectCount then childCount then all others), secondary sort is
	             * lexical by field name.
	             *
	             * @return {Array<Object>}
	             */

	            getReportFields: function() {
	                var fields = _(this.getFieldList()).filter(function(field) { return !field.hidden; }),
	                    calculatedFields = _(this.getCalculationList())
	                        .chain()
	                        .pluck('outputFields').flatten().filter(function(field) { return field.hidden !== true; })
	                        .value(),
	                    reportFields = _.union(fields, calculatedFields),
	                    sortedReportFields = _(reportFields).sortBy(function(field) {
	                        // objectCount fields come before the others, followed by childCount,
	                        // then sort is alphabetical by field display name (not case-sensitive)
	                        var displayNameLower = field.displayName.toLowerCase();
	                        if(field.type === 'objectCount') {
	                            return 'a' + displayNameLower;
	                        }
	                        if(field.type === 'childCount') {
	                            return 'b' + displayNameLower;
	                        }
	                        return 'c' + displayNameLower;
	                    }),
	                    objectCountField = _(sortedReportFields).find(function(field) {
	                        return field.type === 'objectCount';
	                    });

	                // FIXME: this is a little weird
	                if(objectCountField) {
	                    objectCountField.displayName = formElementUtils.getCellValueLabel(this.get('displayName'), 'count');
	                }
	                return sortedReportFields;
	            },

	            /**
	             * In order to be opened in pivot, the object must have some report attributes in addition to its
	             * "objectCount" and "childCount" fields
	             */

	            isPivotable: function() {
	                return _(this.getReportFields()).any(function(field) {
	                    return (field.type !== 'objectCount' && field.type !== 'childCount');
	                });
	            },

	            /**
	             * Returns the reportFields (see getReportFields above) and divides it by data type.
	             *
	             * Data type categories are "timestamp", "objectCount" (also includes childCount) and "other".
	             * Return value is a dictionary of category names mapping to lists of field objects.
	             *
	             * @return {Object}
	             */

	            getGroupedReportFields: function() {
	                var groups = _(this.getReportFields()).groupBy(function(field) {
	                    if(field.type === 'timestamp') {
	                        return 'timestamp';
	                    }
	                    if(field.type in { objectCount: true, childCount: true }) {
	                        return 'objectCount';
	                    }
	                    return 'other';
	                });

	                groups.objectCount = groups.objectCount || [];
	                groups.timestamp = groups.timestamp || [];
	                groups.other = groups.other || [];
	                return groups;
	            },

	            /**
	             * Returns true if the Object's parentName is not BaseTransaction, BaseEvent or BaseSearch
	             *
	             * @return {Boolean}
	             */
	            isChildObject: function() {
	                return _(this.ROOT_OBJECTS).indexOf(this.get('parentName')) == -1;
	            },

	            /**
	             * Returns a list of field objects representing the fields inherited from the object's parents.
	             *
	             * Includes primitive fields and fields from calculations.
	             *
	             * @return {Array<Object>}
	             */

	            getInheritedFields: function() {
	                var ownName = this.get('lineage'),
	                    inheritedFields = _(this.getFieldList())
	                        .chain()
	                        .filter(function(field) { return (field.owner !== ownName && field.type !== 'childCount'); })
	                        .sortBy(function(field) {
	                            return field.displayName.toLowerCase();
	                        })
	                        .value(),
	                    inheritedCalculatedFields = _(this.getCalculationList())
	                    .chain()
	                    .filter(function(calc) { return calc.owner !== ownName;})
	                    .map(function(calc) {
	                        return _(calc.outputFields).chain()
	                                                   .map(function(outputField) {
	                                                        return $.extend(outputField, {calculationID: calc.calculationID});})
	                                                   .value();})
	                    .flatten()
	                    .value();

	                return _.union(inheritedFields, inheritedCalculatedFields);
	            },

	            /**
	             * Returns a list of field objects representing the fields defined by the object itself.
	             *
	             * Does not include fields from calculations.
	             *
	             * @return {Array<Object>}
	             */

	            getOwnFields: function() {
	                var ownName = this.get('lineage');
	                return _(this.getFieldList())
	                    .chain()
	                    .filter(function(field) {
	                        return (field.owner === ownName && field.type !== 'childCount' && field.type !== 'objectCount'); })
	                    .sortBy(function(field) {
	                        return field.displayName.toLowerCase();
	                    })
	                    .value();
	            },

	            /**
	             * Returns a list of own and inherited field objects of type ipv4
	             *
	             * Does not include fields from calculations.
	             *
	             * @return {Array<Object>}
	             */
	            getIPV4Fields: function() {
	                return _(this.getAllowedInputFields()).filter(function(field) { return field.type === "ipv4"; });
	            },

	            /**
	             * Returns a list of own and inherited field objects of type ipv4 that are not currently used
	             * for a GeoIP Calculation of this Object or its ancestors
	             *
	             * Does not include fields from calculations.
	             *
	             * @return {Array<Object>}
	             */
	            getAvailableIPV4Fields: function() {
	                var geoIPCalculations = this.calculations.filter(
	                    function(calculation) { return calculation.get("calculationType") === "GeoIP";});

	                return _(this.getAllowedInputFields()).filter(
	                    function(field) { return field.type === "ipv4" && !_(geoIPCalculations).find(
	                         function(calculation) {return field.fieldName === calculation.get("inputField"); }, this);},
	                        this);
	            },

	            /**
	             * Returns a list of calculation objects representing the calculations defined by the object itself.
	             *
	             * @return {Array<Object>}
	             */

	            getOwnCalculations: function() {
	                return _(this.getCalculationList()).filter(function(calc) {
	                    return this.isOwnCalculation(calc);
	                }, this);
	            },

	            isOwnCalculation: function(calculation) {
	                var outputFieldType = "";
	                var ownName = this.get('lineage');

	                if (calculation.calculationType == "Eval" && calculation.outputFields.length > 0) {
	                    outputFieldType = calculation.outputFields[0].type;
	                }

	                // TODO [JCS] Don't show StatsField calculations until we decide how to add/edit them.
	                return (calculation.owner === ownName && outputFieldType != "childCount"
	                        && outputFieldType != "objectCount" && calculation.calculationType != "StatsField");
	            },

	            /**
	             * Filters the collapsed constraints (see getCollapsedConstraints below) to the ones that are inherited
	             * from a parent.
	             *
	             * @return {Array<Object>}
	             */

	            getInheritedConstraints: function() {
	                return _(this.getCollapsedConstraints()).filter(function(constraint) {
	                    return constraint.owner !== this.get('lineage');
	                }, this);
	            },

	            /**
	             * Filters the collapsed constraints (see getCollapsedConstraints below) to the one that is owned
	             * by the object.
	             *
	             * @return {Array<Object>}
	             */

	            getOwnConstraint: function() {
	                return _(this.getCollapsedConstraints()).find(function(constraint) {
	                    return constraint.owner === this.get('lineage');
	                }, this);
	            },

	            /**
	             * Returns a list of field objects containing only those field names that can be referenced
	             * in the search language.
	             *
	             * Includes primitive fields and those that come from calculations.
	             * Removes all objectCount and childCount fields.
	             *
	             * @return {Array<String>}
	             */

	            getAllSearchFields: function() {
	                var ownFieldNames = _(this.getOwnFields())
	                        .chain()
	                        .filter(function(field) { return !(field.type in { objectCount: true, childCount: true }); })
	                        .value(),
	                    inheritedFieldNames = _(this.getInheritedFields())
	                        .chain()
	                        .filter(function(field) { return !(field.type in { objectCount: true, childCount: true }); })
	                        .value(),
	                    ownCalculatedFieldNames = _(this.getOwnCalculations())
	                        .chain()
	                        .pluck('outputFields').flatten()
	                        .value();

	                return _.union(inheritedFieldNames, ownFieldNames, ownCalculatedFieldNames);
	            },

	            /**
	             * Returns the results of getAllSearchFields plus the _raw field
	             *
	             * @return {Array}
	             */
	            getAllowedInputFields: function() {
	                var rawField = [Field.createRawField().getBasicDescription()];
	                var allFields = this.getAllSearchFields();

	                return _.union(rawField, allFields);
	            },

	            /**
	             * Return true if the field is owned by this Object
	             *
	             * @param fieldName
	             * @return {Boolean}
	             */
	            isOwnField: function(fieldName) {
	                var field = this.getField(fieldName);
	                if (field && field.get("owner") == this.get("lineage"))
	                    return true;
	                return false;
	            },


	            /**
	             * Returns a search string that will generate a table with only the object's search language fields.
	             *
	             * TODO: we may be able to remove this now that the back end appends it
	             *
	             * @return {String}
	             */

	            getPreviewSearch: function() {
	                var allFieldNames = _(this.getAllSearchFields()).pluck('fieldName');
	                return (this.get('objectSearch') + ' | fields ' + allFieldNames.join(','));
	            },

	            getCalculationPreviewSearch: function(calculationFieldNames, includeAllFields, includeTime) {
	                var previewSearch = this.get("previewSearch") + " | fields ";

	                var fieldsString = "";
	                var useComma = false;

	                if (includeTime)
	                    calculationFieldNames.unshift("_time");

	                _(calculationFieldNames).each(function(fieldName) {
	                    if (useComma)
	                        fieldsString += ",";
	                    fieldsString += '"' + fieldName + '"';
	                    useComma = true;
	                }, this);

	                if (includeAllFields) {
	                    _(this.getAllSearchFields()).each(function(field) {
	                        if (!_(calculationFieldNames).contains(field.fieldName)) {
	                            if (useComma)
	                                fieldsString += ",";
	                            fieldsString += '"' + field.displayName + '"';
	                            useComma = true;
	                        }
	                    }, this);

	                    if (useComma)
	                        fieldsString += ",";
	                    fieldsString += "*";
	                }

	                return previewSearch + fieldsString;
	            },

	            /**
	             * Add a new Field to the Object
	             *
	             * @param attributes
	             * @param options
	             * @return The new Field
	             */
	            addField: function(attributes, options) {
	                attributes = $.extend({ owner: this.get('lineage') }, attributes);
	                return this.fields.add(attributes, options);
	            },
	            /**
	             * Removes a field from the object
	             *
	             * Will not remove the field if it is inherited.
	             *
	             * @param attributes {Object} - the attributes needed to find the field to remove,
	             * will be matched by field name
	             */

	            removeField: function(attributes) {
	                var toRemove = this.fields.get(attributes.fieldName);

	                if(!toRemove || toRemove.get('owner') !== this.get('lineage')) {
	                    // fail silently if the field doesn't exist or it is inherited
	                    // FIXME: should we throw or log an error?
	                    return;
	                }
	                this.fields.remove(toRemove);
	            },

	            getField: function(fieldName) {
	                return this.fields.get(fieldName);
	            },

	            getCalculation: function(calculationID) {
	                return this.calculations.get(calculationID);
	            },

	            getAnyField: function(fieldName, calculationID) {
	                if (calculationID) {
	                    var calc = this.getCalculation(calculationID);
	                    if (calc)
	                        return calc.getFieldByName(fieldName);
	                }

	                return this.getField(fieldName);
	            },

	            /**
	             * Create a new calculation in the object and return a reference to it.
	             *
	             * @param attributes {Object} an object literal with the attributes to construct the new calculation
	             * @param options {Object} - options to pass to the collection add method ("at" will be ignored)
	             * @return {Model} - the newly created calculation model
	             */

	            createCalculation: function(attributes, options) {
	                var calcs = this.calculations,
	                    beforeLength = calcs.length;

	                attributes = attributes || {};
	                $.extend(attributes, {
	                    owner: this.get('lineage'),
	                    calculationID: Math.random().toString(36).slice(2)
	                });

	                // not supporting adding a calculation at a specific index, so delete the 'at' option
	                options = options || {};
	                delete options.at;

	                calcs.add(attributes, options);
	                // the new calculation is at the end of the collection,
	                // so look it up based on the original length and return it
	                var newCalc = calcs.at(beforeLength);

	                // Prepopulate the outputFields for a GeoIP
	                if (attributes.calculationType == "GeoIP")
	                    newCalc.addGeoIPFields(options);

	                return newCalc;
	            },

	            /**
	             * Removes a calculation from the object
	             *
	             * @param calculationID - The calculationID attribute of the calculation to remove
	             */

	            removeCalculation: function(calculationID) {
	                var toRemove = this.calculations.get(calculationID);
	                this.calculations.remove(toRemove);
	            },

	            /**
	             * Re-orders the objects calculations to match the given list of ids
	             *
	             * @param order {Array<String>} a list of calculation cid's
	             */
	            reOrderCalculations: function(order) {

	                var ownCalculationIndices = [];

	                // Populate ownCalculationIndices array with the indices of our own calculations
	                // which might be sparsely located within the calculations array
	                this.calculations.each(function(calculation, index) {
	                    var calculationBasic = calculation.getBasicDescription();

	                    if (this.isOwnCalculation(calculationBasic)) {
	                        ownCalculationIndices.push(index);
	                    }
	                }, this);

	                // We only want to reorder our own calculations. So non-own calculations stay at the
	                // same index. Own calculations map from the new order array to the sparse indices.
	                var newCollection = this.calculations.sortBy(function(calculation, index) {
	                    var returnIndex = index;
	                    var calculationBasic = calculation.getBasicDescription();

	                    if (this.isOwnCalculation(calculationBasic))
	                        returnIndex = ownCalculationIndices[_(order).indexOf(calculationBasic.calculationID+'')];

	                    return returnIndex;
	                }, this);

	                this.calculations.reset(newCollection);

	            },

	            // apply the specified callback to each descendant of the specified parent object
	            // TODO: this depends on the object being inside of an ObjectHierarchy, it should really be moved
	            withEachDescendant: function(callback, context) {
	                if(!this.children) {
	                    return;
	                }
	                context = context || null;

	                var recApplyFn = function(child) {
	                    callback.call(context, child);
	                    _(child.children).each(recApplyFn);
	                };

	                _(this.children).each(recApplyFn);
	            },

	            getSampleValuesModel: function(fieldName, owner, fetchOptions) {
	                var safeFieldName = this.addLineagePrefix(fieldName, owner),
	                    existingModel = this.fieldSampleValues.get(safeFieldName);

	                if (existingModel) {
	                    if (_.isEqual(this.modelIdAndFechOptionsDataMapping[existingModel.cid], fetchOptions.data)) {
	                        return existingModel;
	                    }
	                    else if (this.modelIdAndFechOptionsDataMapping[existingModel.cid]) {
	                        this.fieldSampleValues.remove(existingModel.cid);
	                        delete this.modelIdAndFechOptionsDataMapping[existingModel.cid];
	                    }
	                }
	                this.fieldSampleValues.add({ fieldName: safeFieldName });
	                var newModel = this.fieldSampleValues.get(safeFieldName);
	                newModel.fetch(fetchOptions);
	                this.modelIdAndFechOptionsDataMapping[newModel.cid] = fetchOptions.data;

	                return newModel;
	            },

	            addLineagePrefix: function(fieldName, owner) {
	                var baseObjectNames = ['BaseEvent', 'BaseTransaction', 'BaseSearch', 'BaseInterface', 'BaseImplements'];
	                if(!_(baseObjectNames).contains(owner)) {
	                    return owner + '.' + fieldName;
	                }
	                return fieldName;
	            },

	            // ----- sync behavior ----- //

	            initializeAssociated: function() {
	                this.fieldSampleValues = this.fieldSampleValues || new FieldSampleValues();

	                this.associated = this.associated || {};
	                if (!this.fields) {
	                    this.fields = this.associated.fields = new Fields();
	                    this.fields.on({
	                        "change": function(model, options) {this.triggerAssociatedChange("change", model, options);},
	                        "associatedChange": function(model, options) {this.triggerAssociatedChange("associatedChange", model, options);},
	                        "add":function(model, options) {this.triggerAssociatedChange("add", model, options);},
	                        "remove":function(model, options) {this.triggerAssociatedChange("remove", model, options);},
	                        "update":function(model, options) {this.triggerAssociatedChange("update", model, options);},
	                        "reset":function(model, options) {this.triggerAssociatedChange("reset", model, options);}
	                    }, this);
	                }

	                if (!this.calculations) {
	                    this.calculations = this.associated.calculations = new Calculations();
	                    this.calculations.on({
	                        "change": function(model, options) {this.triggerAssociatedChange("change", model, options);},
	                        "associatedChange": function(model, options) {this.triggerAssociatedChange("associatedChange", model, options);},
	                        "add":function(model, options) {this.triggerAssociatedChange("add", model, options);},
	                        "remove":function(model, options) {this.triggerAssociatedChange("remove", model, options);},
	                        "update":function(model, options) {this.triggerAssociatedChange("update", model, options);},
	                        "reset":function(model, options) {this.triggerAssociatedChange("reset", model, options);}
	                    }, this);
	                }
	            },

	            triggerAssociatedChange: function(eventName, model, options) {
	                //console.log("Object [",this.cid,"] [",this.get("displayName"),"] event [",eventName, "] model [",model.id, "]");
	                this.trigger("associatedChange", model, options);
	            },

	            clone: function(options) {
	                var clone = BaseModel.prototype.clone.call(this);
	                clone.fields.set(this.fields.toJSON(options));
	                clone.calculations.set(this.calculations.toJSON(options));
	                return clone;
	            },

	            parse: function(response, options) {
	                response = $.extend(true, {}, response);
	                // set the display name to the object name if none is specified
	                if(!response.displayName) {
	                    response.displayName = response.objectName;
	                }
	                return this.parseAssociated(response, options);
	            },

	            parseAssociated: function(response, options) {
	                this.initializeAssociated();

	                // Clear the fieldSampleValues cache and reapply the baseSearch string
	                this.fieldSampleValues.reset();
	                this.fieldSampleValues.setBaseSearch(response.objectSearch);
	                this.fieldSampleValues.setTsidxNamespace(response.tsidxNamespace);

	                if(response.fields) {
	                    this.fields.set(response.fields, $.extend({ parse: true }, options));
	                    delete response.fields;
	                }
	                if(response.calculations) {
	                    this.calculations.set(response.calculations, $.extend({ parse: true }, options));
	                    delete response.calculations;
	                }
	                return response;
	            },

	            toJSON: function(options) {
	                var json = BaseModel.prototype.toJSON.apply(this, arguments);
	                json.fields = this.fields.toJSON(options);
	                json.calculations = this.calculations.toJSON(options);
	                return json;
	            },
	            
	            sync: function(method, model, options) {
	                throw new Error('sync not allowed for a Data Model Object model');
	            },

	            // ----- private methods ----- //


	            /**
	             * Returns a list of object literals representing a simple description of the object's fields.
	             *
	             * @return {Array<Object>}
	             */

	            getFieldList: function() {
	                return this.fields.map(function(field) {
	                    return field.getBasicDescription();
	                });
	            },

	            /**
	             * Returns a list of object literals representing a simple description of the object's calculations.
	             *
	             * @return {Array<Object>}
	             */

	            getCalculationList: function() {
	                return this.calculations.map(function(calc) {
	                    return calc.getBasicDescription();
	                });
	            },

	            /**
	             * Returns a list of constraint objects where any constraints with the same owner have been combined.
	             *
	             * Constraints are combined by joining their "search" attribute on a space character
	             *
	             * For example if the object's constraints have this structure:
	             *
	             * [
	             *   {
	             *     owner: "Object1",
	             *     search: "field1=value1"
	             *   },
	             *   {
	             *     owner: "Object2",
	             *     search: "field2=value2"
	             *   },
	             *   {
	             *     owner: "Object2",
	             *     search: "field3=value3"
	             *   }
	             * ]
	             *
	             * The method will return this structure:
	             *
	             * [
	             *   {
	             *     owner: "Object1",
	             *     search: "field1=value1"
	             *   },
	             *   {
	             *     owner: "Object2",
	             *     search: "field2=value2 field3=value3"
	             *   }
	             * ]
	             *
	             * @return {Array<Object>}
	             */

	            getCollapsedConstraints: function() {
	                var constraints = this.get('constraints'),
	                    groupedList = _(constraints).groupBy('owner'),
	                    ownerList = _(constraints).chain().pluck('owner').uniq().value();

	                return _(ownerList).map(function(owner) {
	                    return {
	                        owner: owner,
	                        search: _(groupedList[owner]).pluck('search').join(' ')
	                    };
	                });
	            },

	            toString: function() {
	                return "Object ["+this.cid+"] displayName [" + this.get("displayName") + "] " + this.calculations.toString();
	            }

		    });
		}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/datamodel/private/Field":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * A model representing a single data model object field.
	 *
	 * To be used only as a model inside the "collections/services/datamodel/private/Fields" collection
	 *
	 * For a description of possible attributes, see http://eswiki.splunk.com/Data_Model_JSON_Specification#Field
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/Base")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, BaseModel) {

	        var Field =  BaseModel.extend({

	            idAttribute: 'fieldName',

	            defaults: {
	                type: 'string',
	                constraints: [],
	                fieldName: '',
	                required: false,
	                multivalue: false,
	                hidden: false,
	                editable: true
	            },

	            validation: {
	                fieldName: [
	                    {
	                        required: true,
	                        msg: _("Field Name is required.").t()
	                    },
	                    {
	                        pattern: /^((?![{}"\s*']).)*$/g,
	                        msg: _("Field Name can not contain whitespace, double quotes, single quotes, curly braces or asterisks.").t()
	                    }
	                ],
	                displayName: [
	                    {
	                        required: false
	                    },
	                    {
	                        pattern: /^((?!\*).)*$/,
	                        msg: _("Display Name can not contain an asterisk.").t()
	                    }
	                ]
	            },

	            getBasicDescription: function() {
	                return ({
	                    displayName: this.get('displayName'),
	                    fieldName: this.get('fieldName'),
	                    type: this.get('type'),
	                    localizedType: this.getLocalizedType(),
	                    hidden: this.get('hidden'),
	                    required: this.get('required'),
	                    owner: this.get('owner'),
	                    editable: this.get('editable')
	                });
	            },

	            getLocalizedType: function() {
	                var type = this.get("type");
	                var localizedType = type;
	                switch (type) {
	                    case "string":
	                        localizedType = _("String").t();
	                        break;
	                    case "number":
	                        localizedType = _("Number").t();
	                        break;
	                    case "timestamp":
	                        localizedType = _("Time").t();
	                        break;
	                    case "boolean":
	                        localizedType = _("Boolean").t();
	                        break;
	                    case "ipv4":
	                        localizedType = _("IPv4").t();
	                        break;
	                }

	                return localizedType;
	            }
	        },
	        {
	            createRawField: function() {
	                return new Field({multivalue: false,
	                                  owner: "BaseEvent",
	                                  fieldSearch: "",
	                                  fieldName: "_raw",
	                                  type: "string",
	                                  displayName: "_raw",
	                                  hidden: false,
	                                  required: false,
	                                  editable: true});
	            }
	        });
	        return Field;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "collections/services/datamodel/private/Fields":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @author sfishel
	 *
	 * A collection of fields contained in each data model object.
	 *
	 * To be used only as an internal members of the "models/services/datamodel/private/Object" module
	 * and the "models/services/datamodel/private/Calculation" module
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("collections/Base"), __webpack_require__("models/services/datamodel/private/Field")], __WEBPACK_AMD_DEFINE_RESULT__ = function(Base, Field) {

	    return Base.extend({ model: Field });

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "collections/services/datamodel/private/Calculations":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * A collection of calculations contained in each data model object.
	 *
	 * To be used only as an internal member of the "models/services/datamodel/private/Object" module
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	            __webpack_require__("shim/jquery"),
	            __webpack_require__("collections/Base"),
	            __webpack_require__("models/services/datamodel/private/Calculation"),
	            __webpack_require__("models/services/datamodel/private/EvalCalculation"),
	            __webpack_require__("models/services/datamodel/private/GeoIPCalculation"),
	            __webpack_require__("models/services/datamodel/private/LookupCalculation"),
	            __webpack_require__("models/services/datamodel/private/RexCalculation")
	       ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	            $,
	            Base,
	            Calculation,
	            EvalCalculation,
	            GeoIPCalculation,
	            LookupCalculation,
	            RexCalculation
	           ) {

	    // Create a specific Calculation class based on the calculationType
	    var ModelFactory = function(attributes, options) {

	        switch(attributes.calculationType) {
	            case 'Eval':
	                return new EvalCalculation(attributes, options);
	            case 'GeoIP':
	                return new GeoIPCalculation(attributes, options);
	            case 'Lookup':
	                return new LookupCalculation(attributes, options);
	            case 'Rex':
	                return new RexCalculation(attributes, options);
	            default:
	                return new Calculation(attributes, options);
	        }
	    };

	    // make sure the model factory prototype has the correct idAttribute
	    $.extend(ModelFactory.prototype, {
	        idAttribute: Calculation.prototype.idAttribute
	    });

	    return Base.extend({

	        model: ModelFactory,

	        toString: function() {

	            var children = "";
	            this.each(function(calculation) {
	                if (children != "")
	                    children += ", ";
	                children += calculation.toString();
	            }, this);

	            return "Calculations [" + children + "]";
	        }
	    });

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/services/datamodel/private/Calculation":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * A model representing a single calculation operation.
	 *
	 * To be used only as a model inside the "collections/services/datamodel/private/Calculations" collection
	 *
	 * For a description of available attributes, see http://eswiki.splunk.com/Data_Model_JSON_Specification#Calculation
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	            __webpack_require__("shim/jquery"),
	            __webpack_require__("require/underscore"),
	            __webpack_require__("collections/services/datamodel/private/Fields"),
	            __webpack_require__("models/Base"),
	            __webpack_require__("util/model_utils")
	        ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	            $,
	            _,
	            Fields,
	            BaseModel,
	            modelUtils
	        ) {

	    return BaseModel.extend({

	        idAttribute: 'calculationID',
	        outputFieldsClass: Fields,

	        initialize: function(attrs, options) {
	            BaseModel.prototype.initialize.call(this, attrs, options);
	            this.initializeAssociated();
	        },

	        getBasicDescription: function() {
	            return ({
	                calculationID: this.get('calculationID'),
	                calculationType: this.get('calculationType'),
	                expandedType: this.getExpandedType(),
	                outputFields: this.getFieldList(),
	                expression: this.get('expression'),
	                owner: this.get('owner'),
	                editable: this.get('editable')
	            });
	        },

	        getFieldAt: function(index) {
	            return this.outputFields.at(index);
	        },

	        getFieldByName: function(name) {
	            return this.outputFields.get(name);
	        },

	        removeField: function(cid) {
	            var outputFields = this.outputFields,
	                toRemove = outputFields.get(cid);

	            return outputFields.remove(toRemove);
	        },

	        removeFieldByName: function(fieldName, options) {
	            var outputFields = this.outputFields,
	                toRemove = outputFields.get(fieldName);

	            outputFields.remove(toRemove, options);
	        },

	        removeAllFields: function(options) {
	            var outputFields = this.outputFields;
	            outputFields.reset([], options);
	        },

	        addField: function(attributes, options) {
	            attributes = attributes || {};
	            $.extend(attributes, {
	                owner: this.get('owner')
	            });

	            var beforeLength = this.outputFields.length;

	            this.outputFields.add(attributes, options);

	            return this.outputFields.at(beforeLength);
	        },

	        withEachField: function(callback, context) {
	            context = context || null;
	            this.outputFields.each(callback, context);
	        },

	        getFieldNames: function() {
	            return this.outputFields.map(function(outputField) {
	                return outputField.get("fieldName");
	            }, this);
	        },

	        // ----- sync behavior ----- //


	        initializeAssociated: function() {
	            this.associated = this.associated || {};

	            if (!this.outputFields) {
	                this.outputFields = this.associated.outputFields = new this.outputFieldsClass();
	                this.outputFields.on("change associatedChange add remove update reset",
	                function(model, options) {
	                    this.trigger("associatedChange", model, options);
	                }, this);
	            }
	        },

	        clone: function(options) {
	            var clone = BaseModel.prototype.clone.apply(this, arguments);
	            clone.outputFields.set(this.outputFields.toJSON(options));
	            return clone;
	        },

	        parse: function(response, options) {
	            response = $.extend(true, {}, response);
	            return this.parseAssociated(response, options);
	        },

	        parseAssociated: function(response, options) {
	            this.initializeAssociated();
	            if(response.outputFields) {
	                this.outputFields.set(response.outputFields, $.extend({ parse: true }, options));
	                delete response.outputFields;
	            }
	            return response;
	        },

	        toJSON: function(options) {
	            var json = BaseModel.prototype.toJSON.apply(this, arguments);
	            json.outputFields = this.outputFields.toJSON(options);
	            // TODO [sff] look into these comments from the original toJSON function
	            // work-around for SPL-56828, the read endpoint response is different from what the update endpoint expects
	            // removing customData from the json spec...fix for SPL-57405
	            return json;
	        },


	        // ----- private methods ----- //


	        getFieldList: function() {
	            return this.outputFields.map(function(field) {
	                return field.getBasicDescription();
	            });
	        },

	        getExpandedType: function() {
	            var type = this.get("calculationType");

	            var returnType = type;

	            switch(type) {
	                case "Eval":
	                    returnType = _("Eval Expression").t();
	                    break;
	                case "GeoIP":
	                    returnType = _("Geo IP").t();
	                    break;
	                case "Rex":
	                    returnType = _("Regular Expression").t();
	                    break;
	                case "Lookup":
	                    returnType = _("Lookup").t();
	                    break;
	            }

	            return returnType;
	        },

	        toString: function() {
	            return "Calculation " + this.get("calculationType") + "[" + this.get("calculationID") + "]";
	        }

	    });

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "util/model_utils":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * Util package for working with models.
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("require/underscore")], __WEBPACK_AMD_DEFINE_RESULT__ = function(_) {

	    var collectionsAreEquivalent = function(coll1, coll2) {
	        return _(coll1.toJSON()).isEqual(coll2.toJSON());
	    };

	    /**
	     * @author sfishel
	     *
	     * A method to reset a collection, first checks that the new data is different from the data already there
	     *
	     * @param collection {Collection} the collection to reset
	     * @param data {Array<Object>} the data to reset the collection
	     * @param options {Object} options to be passed to Backbone's reset method
	     */

	    var safeResetCollection = function(collection, data, options) {
	        var comparisonCollection = new collection.constructor();
	        comparisonCollection.reset(data, options);
	        if(!collectionsAreEquivalent(collection, comparisonCollection)) {
	            collection.reset(data, options);
	        }
	    };

	    /**
	     * @author sfishel
	     *
	     * Parse out and handle the JSON representation of a nested collection from a raw sync response.
	     *
	     * @param model {Model} - the parent model
	     * @param response {Object} - the JSON sync response
	     * @param keyName {String} - the name of the model attribute that should contain the collection
	     * @param collType {Constructor} - the constructor for the nested collection
	     */

	    var parseNestedCollection = function(model, response, keyName, collType) {
	        response = response || {};
	        // if the nested collection doesn't exist yet, create a new one
	        if(!model.attributes || !model.get(keyName)) {
	            // TODO: what if we needed to parse at the collection level here?
	            response[keyName] = new collType(response[keyName] || [], { parse: true });
	        }
	        // otherwise reset the collection if new models were specified in the response
	        else if(response[keyName]) {
	            var collection = model.get(keyName),
	            // have to explicitly call the collection's parse method
	                parsedModels = collection.parse.call(collection, response[keyName]),
	            // create new collection to compare to the old one to see if anything changed
	                comparisonCollection = new collType(parsedModels, { parse: true });

	            // if the two collections are different, reset the model's collection to the contents of the new one
	            if(!collectionsAreEquivalent(collection, comparisonCollection)) {
	                collection.reset(comparisonCollection.toArray());
	            }
	            // remove the objects from the response so they don't get passed to 'set'
	            delete(response[keyName]);
	        }
	    };

	    /**
	     * @author sfishel
	     *
	     * Bind to a nested collection and bubble up some custom events at the model level.
	     *
	     * @param model {Model} - the parent model
	     * @param keyName {String} - the name of the model attribute that contains the collection
	     * @param collType {Constructor} - the constructor for the nested collection
	     */
	    
	    var bindNestedCollection = function(model, keyName, collType, options) {
	        if(!model.get(keyName)) {
	            model.set(keyName, new collType(), options);
	        }
	        var collection = model.get(keyName);
	        // TODO: should we pass some information along when these events are triggered?
	        collection.on('add', function(added, collection, options) {
	            model.trigger('add:' + keyName, added, collection, options);
	            model.trigger('change');
	        });
	        collection.on('remove', function(removed, collection, options) {
	            model.trigger('remove:' + keyName, removed, collection, options);
	            model.trigger('change');
	        });
	        collection.on('reset', function(collection, options) {
	            model.trigger('reset:' + keyName, collection, options);
	            model.trigger('update:' + keyName);
	            model.trigger('change');
	        });
	        collection.on('change', function(changed, options) {
	            model.trigger('change:' + keyName, changed, options);
	            model.trigger('update:' + keyName);
	            model.trigger('change');
	        });
	    };
	    
	    return ({
	        safeResetCollection: safeResetCollection,
	        parseNestedCollection: parseNestedCollection,
	        bindNestedCollection: bindNestedCollection
	    });
	    
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/services/datamodel/private/EvalCalculation":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @author jszeto
	 * @date 12/7/12
	 */
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("require/underscore"), __webpack_require__("models/services/datamodel/private/Calculation")], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, Calculation) {

	    /**
	     * Represents an Eval Calculation.
	     *
	     */
	    return Calculation.extend({

	        defaults: {
	            calculationType: "Eval",
	            expression: "",
	            editable: true
	        },

	        validation: {
	            expression : {
	                required : true,
	                msg: _("Eval Expression is a required field.").t()
	            },
	            calculationType : {
	                oneOf : ["Eval"]
	            }
	        },

	        toString: function() {
	            if (this.outputFields.length > 0)
	                return "EvalCalc [" + this.outputFields.at(0).get("displayName") + "]";
	            else
	                return "Empty EvalCalc";
	        }

	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/services/datamodel/private/GeoIPCalculation":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @author jszeto
	 * @date 12/7/12
	 */
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("require/backbone"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/services/datamodel/private/Calculation"),
	        __webpack_require__("collections/services/datamodel/private/LookupOutputFields")
	       ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        Backbone,
	        _,
	        Calculation,
	        LookupOutputFields) {

	    /**
	     * Represents an GeoIP Calculation.
	     *
	     */
	    return Calculation.extend({

	        defaults: {
	            calculationType: "GeoIP",
	            inputField: "",
	            editable: true
	        },

	        initialize: function(attrs, options) {
	            Calculation.prototype.initialize.call(this, attrs, options);

	            this.on("change:inputField", this.inputFieldChanged, this);
	        },

	        inputFieldChanged: function(model, value, options) {
	            if (value !== "") {
	                this.withEachField(function(field) {
	                    field.set("fieldName", value + "_" + field.get("lookupOutputFieldName"));
	                }, this);
	            }
	        },

	        getVisibleOutputFieldsLength: function() {
	            var visibleCount = 0;
	            this.outputFields.each(function(field) {
	                if (!field.get("hidden"))
	                    visibleCount++;
	            }, this);

	            return visibleCount;
	        },

	        validation: {
	            inputField : {
	                required : true,
	                msg : _("A Geo IP Calculation must contain an input field.").t()
	            },
	            calculationType : {
	                oneOf : ["GeoIP"],
	                fn : function(value, attr, computedState) {
	                    var outputFields = this.outputFields;
	                    var visibleCount = 0;
	                    if (outputFields instanceof Backbone.Collection) {
	                        var length = outputFields.length;

	                        for (var i = 0; i < length; i++) {
	                            var field = outputFields.at(i);
	                            if (!field.get("hidden"))
	                                visibleCount++;
	                            if (!_.isUndefined(field.get("displayName")) && field.get("displayName").indexOf('"') != -1)
	                                return _('A Geo IP Attribute Display Name cannot contain a quotation mark.').t();
	                        }

	                        if (visibleCount == 0) {
	                            return _("Select at least one Geo IP Attribute.").t();
	                        }
	                    } else {
	                        return _("Internal Error: The Geo IP outputFields are invalid.").t();
	                    }
	                }
	            }
	        },


	        /**
	         * Create the initial outputFields for a GeoIP Calculation
	         *
	         * @param options
	         */
	        addGeoIPFields: function(options) {
	            this.addGeoIPField("lon", "number", options);
	            this.addGeoIPField("lat", "number", options);
	            this.addGeoIPField("City", "string", options);
	            this.addGeoIPField("Region", "string", options);
	            this.addGeoIPField("Country", "string", options);
	        },

	        addGeoIPField: function(fieldName, type, options) {
	            var attributes = {required:true,
	                hidden:false,
	                type:type,
	                lookupOutputFieldName: fieldName,
	                fieldName: this.get("inputField") + "_" + fieldName};

	            this.addField(attributes, options);
	        },

	        initializeAssociated: function() {
	            this.associated = this.associated || {};
	            this.outputFields = this.associated.outputFields = this.outputFields || new LookupOutputFields();
	            this.outputFields.on("change associatedChange add remove update reset",
	                function(model, options) {
	                    this.trigger("associatedChange", model, options);
	                }, this);
	        }

	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "collections/services/datamodel/private/LookupOutputFields":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @author jszeto
	 *
	 * A collection of LookupOutputFields contained in the Lookup or GeoIP Calculation
	 *
	 * To be used only as an internal members of the "models/services/datamodel/private/LookupCalculation" module
	 * and the "models/services/datamodel/private/GeoIPCalculation" module
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("collections/services/datamodel/private/Fields"), __webpack_require__("models/services/datamodel/private/LookupOutputField")], __WEBPACK_AMD_DEFINE_RESULT__ = function(Fields, LookupOutputField) {

	    return Fields.extend({ model: LookupOutputField });

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/services/datamodel/private/LookupOutputField":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * A model representing a single data model object output field for a Lookup or GeoIP Calculation.
	 *
	 * To be used only as a model inside the "collections/services/datamodel/private/LookupOutputFields" collection
	 *
	 * For a description of possible attributes, see http://eswiki.splunk.com/Data_Model_JSON_Specification#Field
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/services/datamodel/private/Field")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, Field) {

	        return Field.extend({

	            idAttribute: 'fieldName',

	            defaults: {
	                type: 'string',
	                constraints: [],
	                fieldName: '',
	                lookupOutputFieldName: '',
	                required: false,
	                multivalue: false,
	                hidden: false,
	                editable: true
	            },

	            validation: {
	                fieldName: [
	                    {
	                        required: true,
	                        msg: _("Field Name is required.").t()
	                    },
	                    {
	                        pattern: /^((?![{}"\s*']).)*$/g,
	                        msg: _("Field Name can not contain whitespace, double quotes, single quotes, curly braces or asterisks.").t()
	                    }
	                ],
	                displayName: [
	                    {
	                        required: false
	                    },
	                    {
	                        pattern: /^((?!\*).)*$/,
	                        msg: _("Display Name can not contain an asterisk.").t()
	                    }
	                ],
	                lookupOutputFieldName: {
	                    required: true,
	                    msg: _("Field in Lookup is a required field.").t()
	                }
	            },

	            getBasicDescription: function() {
	                return ({
	                    displayName: this.get('displayName'),
	                    lookupOutputFieldName: this.get('lookupOutputFieldName'),
	                    fieldName: this.get('fieldName'),
	                    type: this.get('type'),
	                    localizedType: this.getLocalizedType(),
	                    hidden: this.get('hidden'),
	                    required: this.get('required'),
	                    owner: this.get('owner'),
	                    editable: this.get('editable')
	                });
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/services/datamodel/private/LookupCalculation":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @author jszeto
	 * @date 12/7/12
	 */
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("models/services/datamodel/private/Calculation"),
	        __webpack_require__("collections/services/datamodel/private/LookupInputs"),
	        __webpack_require__("collections/services/datamodel/private/LookupOutputFields")
	       ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        Backbone,
	        Calculation,
	        LookupInputs,
	        LookupOutputFields
	    ) {

	    /**
	     * Represents a Lookup Calculation.
	     *
	     */
	    return Calculation.extend({

	        outputFieldsClass: LookupOutputFields,

	        defaults: {
	            calculationType: "Lookup",
	            lookupName: undefined,
	            inputField: "",
	            lookupField: "",
	            editable: true
	        },

	        validation: {
	            lookupName : {
	                required : true,
	                msg: _("Select a valid Lookup Table.").t()
	            }/*,
	            lookupField: {
	                required : true,
	                msg: _("Input Field in Lookup is a required field").t()
	            },
	            inputField : {
	                required : true,
	                msg: _("Select a valid Input Attribute.").t()
	            }*/
	        },

	        initializeAssociated: function() {
	            Calculation.prototype.initializeAssociated.apply(this, arguments);

	            if (!this.lookupInputs) {
	                this.lookupInputs = this.associated.lookupInputs = this.lookupInputs || new LookupInputs();
	                this.lookupInputs.on("change associatedChange add remove update reset",
	                    function(model, options) {
	                        this.trigger("associatedChange", model, options);
	                    }, this);
	            }
	        },

	        parseAssociated: function(response, options) {
	            Calculation.prototype.parseAssociated.call(this, response, options);
	            if(response.lookupInputs) {
	                this.lookupInputs.set(response.lookupInputs, $.extend({ parse: true }, options));
	                delete response.lookupInputs;
	            }
	            return response;
	        },

	        toJSON: function(options) {
	            var json = Calculation.prototype.toJSON.apply(this, arguments);
	            json.lookupInputs = this.lookupInputs.toJSON(options);
	            return json;
	        },

	        /**
	         * Remove an output field by matching its lookupOutputFieldName
	         * @param lookupOutputFieldName
	         * @return {*}
	         */
	        removeFieldByLookup: function(lookupOutputFieldName) {
	            var field = this.outputFields.findWhere({lookupOutputFieldName: lookupOutputFieldName});
	            if (field)
	                this.outputFields.remove(field);

	            return field;
	        },

	        /**
	         * Returns the output field with the given lookupOutputFieldName
	         *
	         * @param lookupOutputFieldName
	         * @return {*}
	         */
	        getFieldByLookup: function(lookupOutputFieldName) {
	            return this.outputFields.findWhere({lookupOutputFieldName: lookupOutputFieldName});
	        },

	        /**
	         * Run a function on each LookupInput
	         *
	         * @param callback
	         * @param context
	         */
	        withEachLookupInput: function(callback, context) {
	            context = context || null;
	            this.lookupInputs.each(callback, context);
	        },

	        /**
	         * Add a new LookupInput to lookupInputs
	         * @param attributes
	         * @param options
	         * @return {*}
	         */
	        addLookupInput: function(attributes, options) {
	            var beforeLength = this.lookupInputs.length;
	            this.lookupInputs.add(attributes, options);
	            return this.lookupInputs.at(beforeLength);
	        },

	        /**
	         * Remove a lookupInput
	         * @param cid
	         */
	        removeLookupInput: function(cid) {
	            var toRemove = this.lookupInputs.get(cid);
	            this.lookupInputs.remove(toRemove);
	        },

	        /**
	         * Remove all lookupInputs
	         * @param options
	         */
	        removeAllLookupInputs: function(options) {
	            this.lookupInputs.reset([], options);
	        },

	        /**
	         * Return the lookup input associated with a given lookupField
	         * @param lookupField
	         * @return {*}
	         */
	        getLookupInput: function(lookupField) {
	            return this.lookupInputs.find(function(lookupInput) {
	                return lookupInput.get("lookupField") == lookupField;
	            }, this);
	        }

	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "collections/services/datamodel/private/LookupInputs":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
	 * @author jszeto
	 * @date 1/14/14
	 *
	 * A collection of LookupInputs contained in the Lookup Calculation
	 *
	 * To be used only as an internal members of the "models/services/datamodel/private/LookupInput" module
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("collections/Base"), __webpack_require__("models/services/datamodel/private/LookupInput")], __WEBPACK_AMD_DEFINE_RESULT__ = function(BaseCollection, LookupInput) {

	    return BaseCollection.extend({model: LookupInput});

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/datamodel/private/LookupInput":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @author jszeto
	 * @date 1/14/14
	 */

	/**
	 * A model representing a single data model object lookup input field for a Lookup Calculation.
	 *
	 * To be used only as a model inside the "collections/services/datamodel/private/LookupInputFields" collection
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/Base")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, BaseModel) {

	        return BaseModel.extend({

	            idAttribute: 'lookupField',

	            defaults: {
	                lookupField: '',
	                inputField: ''
	            },

	            validation: {
	                lookupField: {
	                    required: true,
	                    msg: _("Field in Lookup is a required field.").t()
	                },
	                inputField: {
	                    required: true,
	                    msg: _("Input Attribute is required.").t()
	                }
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/datamodel/private/RexCalculation":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @author jszeto
	 * @date 12/7/12
	 */
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("shim/splunk.util"),
	        __webpack_require__("models/services/datamodel/private/Calculation"),
	        __webpack_require__("models/services/datamodel/private/RexOutputFields")], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        Backbone,
	        splunkUtil,
	        Calculation,
	        RexOutputFields) {

	    /**
	     * Represents a Rex Calculation.
	     *
	     */
	    return Calculation.extend({
	        outputFieldsClass: RexOutputFields,

	        defaults: {
	            calculationType: "Rex",
	            expression: "",
	            inputField: "",
	            outputFields: undefined,
	            editable: true
	        },

	        validation: {
	            expression : [
	                {
	                    required : true,
	                    msg: _("Regular Expression is a required field.").t()
	                }/*,
	                {
	                    fn : function(value, attr, computedState) {
	                        var outputFields = computedState.outputFields;
	                        if (outputFields instanceof Backbone.Collection) {
	                            if (outputFields.length == 0) {
	                                return "A Rex Calculation must contain at least one outputField";
	                            }
	                        } else {
	                            return "Rex Calculation outputFields is invalid";
	                        }
	                    }
	                }*/
	            ],
	            inputField : {
	                required : true,
	                msg : _("Select a field to Extract From.").t()
	            },
	            calculationType : {
	                oneOf : ["Rex"]
	            }

	        },

	        getPreviewSearch: function() {
	            return splunkUtil.sprintf('rex field=%s "%s" max_match=1',
	                                this.get("inputField"), this.get("expression"));
	        },

	        getPreviewAllSearch: function() {
	            return splunkUtil.sprintf('eval _is_match = if(match(%s, "%s"), 1, 0)',
	                                this.get("inputField"), this.get("expression"));
	        },

	        getPreviewMatchSearch: function() {
	            return splunkUtil.sprintf('where match(%s, "%s")',
	                                this.get("inputField"), this.get("expression"));
	        },

	        getPreviewNonMatchSearch: function() {
	            return splunkUtil.sprintf('where NOT match(%s, "%s")',
	                                this.get("inputField"), this.get("expression"));
	        }

	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/services/datamodel/private/RexOutputFields":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @author jszeto
	 * @date 3/05/2014
	 *
	 * A collection of RexOutputFields contained in the Rex Calculation
	 *
	 * To be used only as an internal members of the "models/services/datamodel/private/RexCalculation" module
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("collections/services/datamodel/private/Fields"), __webpack_require__("models/services/datamodel/private/RexOutputField")], __WEBPACK_AMD_DEFINE_RESULT__ = function(Fields, RexOutputField) {

	    return Fields.extend({ model: RexOutputField });

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/services/datamodel/private/RexOutputField":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @author jszeto
	 * @date 3/5/14
	 *
	 * A model representing a single data model object output field for a Rex Calculation.
	 *
	 * To be used only as a model inside the "collections/services/datamodel/private/RexOutputFields" collection
	 *
	 * For a description of possible attributes, see http://eswiki.splunk.com/Data_Model_JSON_Specification#Field
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/services/datamodel/private/Field")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, Field) {

	        return Field.extend({

	            toJSON: function(options) {
	                var json = Field.prototype.toJSON.apply(this, arguments);
	                // If options.data.provisional == true, then always return required = false
	                if (options && options.data && options.data.provisional) {
	                    json.required = false;
	                }
	                return json;
	            }

	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "collections/services/datamodel/private/FieldSampleValues":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	            __webpack_require__("shim/jquery"),
	            __webpack_require__("collections/Base"),
	            __webpack_require__("models/Base"),
	            __webpack_require__("util/splunkd_utils")
	        ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	            $,
	            BaseCollection,
	            BaseModel,
	            splunkdUtils
	        ) {

	    var SampleValues = BaseModel.extend({

	        idAttribute: 'fieldName',

	        defaults: {
	            limit: 10
	        },

	        sync: function(method, model, options) {
	            if(method !== 'read') {
	                throw new Error('sync method not supported: ' + method);
	            }
	            var baseUrl = 'search/jobs',
	                ajaxData = $.extend(true, {}, options, {
	                    data: {
	                        exec_mode: 'oneshot',
	                        output_mode: 'json_cols',
	                        max_time: 30
	                    },
	                    type: 'POST',
	                    dataType: 'json'
	                });

	            if(model.collection.tsidxNamespace) {
	                ajaxData.data.search = '| tstats count from ' + model.collection.tsidxNamespace
	                                                 + ' groupby ' + this.id + ' | sort limit=' + this.get('limit') + ' -count';
	            }
	            else {
	                ajaxData.data.search = model.collection.baseSearch + ' | top ' + this.get('limit') + ' "' + this.id + '"';
	            }

	            return $.ajax(splunkdUtils.prepareSyncOptions(ajaxData, baseUrl));
	        },

	        parse: function(response) {
	            var values = (response && response.columns && response.columns.length > 0 ) ? response.columns[0] : [];
	            return { values: values };
	        }

	    });

	    return BaseCollection.extend({

	        model: SampleValues,

	        initialize: function(models, options) {
	            options = options || {};
	            this.setBaseSearch(options.baseSearch);
	            this.setTsidxNamespace(options.tsidxNamespace);
	            BaseCollection.prototype.initialize.apply(this, arguments);
	        },

	        setBaseSearch: function(baseSearch) {
	            this.baseSearch = baseSearch;
	        },

	        setTsidxNamespace: function(ns) {
	            this.tsidxNamespace = ns;
	        }

	    });

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "util/pivot/config_form_utils":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @author sfishel
	 *
	 * A util package for working with pivot report element forms.
	 *
	 * Provides some centralized functions for translating report element property values into corresponding display strings.
	 * These functions are shared by the pivot report element views and models to avoid duplicate code.
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	            __webpack_require__("require/underscore"),
	            __webpack_require__("util/time"),
	            __webpack_require__("shim/splunk.util"),
	            __webpack_require__("stubs/i18n")
	        ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	            _,
	            timeUtils,
	            splunkUtils,
	            i18n
	        ) {

	    var MATCH_FILTER_LABELS = {
	        is: _('%(fieldName)s is %(matchValue)s').t(),
	        contains: _('%(fieldName)s contains %(matchValue)s').t(),
	        isNot: _('%(fieldName)s is not %(matchValue)s').t(),
	        doesNotContain: _('%(fieldName)s does not contain %(matchValue)s').t(),
	        startsWith: _('%(fieldName)s starts with %(matchValue)s').t(),
	        endsWith: _('%(fieldName)s ends with %(matchValue)s').t(),
	        isNull: _('%(fieldName)s is null').t(),
	        isNotNull: _('%(fieldName)s is not null').t(),
	        'in': _('%(fieldName)s is in (%(matchValue)s)').t(),
	        regex: _('%(fieldName)s matches %(matchValue)s').t(),
	        '=': _('%(fieldName)s = %(matchValue)s').t(),
	        '!=': _('%(fieldName)s != %(matchValue)s').t(),
	        '<=': _('%(fieldName)s <= %(matchValue)s').t(),
	        '<': _('%(fieldName)s < %(matchValue)s').t(),
	        '>=': _('%(fieldName)s >= %(matchValue)s').t(),
	        '>': _('%(fieldName)s > %(matchValue)s').t(),
	        'true': _('%(fieldName)s is true').t(),
	        'false': _('%(fieldName)s is false').t()
	    };

	    var FILTER_RULE_DISPLAY_NAMES = {
	        is: _('is').t(),
	        contains: _('contains').t(),
	        isNot: _('is not').t(),
	        doesNotContain: _('does not contain').t(),
	        startsWith: _('starts with').t(),
	        endsWith: _('ends with').t(),
	        isNull: _('is null').t(),
	        isNotNull: _('is not null').t(),
	        'in': _('is in list').t(),
	        regex: _('regex').t(),
	        '=': _('=').t(),
	        '!=': _('!=').t(),
	        '<=': _('<=').t(),
	        '<': _('<').t(),
	        '>=': _('>=').t(),
	        '>': _('>').t(),
	        'true': _('is true').t(),
	        'false': _('is false').t()
	    };

	    var LIMIT_FILTER_LABELS_LONG = {
	        highest: _('Highest %(limitAmount)s %(fieldName)s by %(limitBy)s').t(),
	        lowest: _('Lowest %(limitAmount)s %(fieldName)s by %(limitBy)s').t()
	    };

	    var LIMIT_FILTER_LABELS_SHORT = {
	        highest: _('Highest %(limitAmount)s %(fieldName)s').t(),
	        lowest: _('Lowest %(limitAmount)s %(fieldName)s').t()
	    };

	    var FILTER_LIMIT_TYPE_DISPLAY_NAMES = {
	        highest: _('Highest').t(),
	        lowest: _('Lowest').t()
	    };

	    var CELL_VALUE_LABELS = {
	        'list': _('Values of %(fieldName)s').t(),
	        'values': _('Distinct Values of %(fieldName)s').t(),
	        'first': _('First Value of %(fieldName)s').t(),
	        'last': _('Last Value of %(fieldName)s').t(),
	        'earliest': _('Earliest Value of %(fieldName)s').t(),
	        'latest': _('Latest Value of %(fieldName)s').t(),
	        'count': _('Count of %(fieldName)s').t(),
	        'dc': _('Distinct Count of %(fieldName)s').t(),
	        'sum': _('Sum of %(fieldName)s').t(),
	        'avg': _('Average of %(fieldName)s').t(),
	        'max': _('Max of %(fieldName)s').t(),
	        'min': _('Min of %(fieldName)s').t(),
	        'stdev': _('Standard Deviation of %(fieldName)s').t(),
	        'median': _('Median of %(fieldName)s').t(),
	        'duration': _('Duration').t(),
	        'listDistinct': _('Distinct Values of %(fieldName)s').t()
	    };

	    var CELL_VALUE_DISPLAY_NAMES = {
	        'list': _('List Values').t(),
	        'values': _('List Distinct Values').t(),
	        'first': _('First Value').t(),
	        'last': _('Last Value').t(),
	        'count': _('Count').t(),
	        'dc': _('Distinct Count').t(),
	        'sum': _('Sum').t(),
	        'avg': _('Average').t(),
	        'max': _('Max').t(),
	        'min': _('Min').t(),
	        'stdev': _('Standard Deviation').t(),
	        'median': _('Median').t(),
	        'duration': _('Duration').t(),
	        'earliest': _('Earliest').t(),
	        'latest': _('Latest').t(),
	        'listDistinct': _('List Distinct Values').t()
	    };

	    var CELL_VALUE_OUTPUT_TYPES = {
	        'list': 'dimension',
	        'values': 'dimension',
	        'first': 'dimension',
	        'last': 'dimension',
	        'count': 'metric',
	        'dc': 'metric',
	        'sum': 'metric',
	        'avg': 'metric',
	        'max': 'metric',
	        'min': 'metric',
	        'stdev': 'metric',
	        'median': 'metric',
	        'duration': 'metric',
	        'earliest': 'dimension',
	        'latest': 'dimension',
	        'listDistinct': 'dimension'
	    };

	    var SPLIT_MODE_DISPLAY_NAMES = {
	        'all': _('All Values').t(),
	        'ranges': _('Value Ranges').t()
	    };

	    var sampleDate = new Date(2011, 0, 31, 23, 1, 1),
	        formatSampleDate = function(granularity) {
	            return i18n.format_date(sampleDate, timeUtils.RESULTS_TIMESTAMP_FORMATS[granularity]);
	        };

	    var SPLIT_TIME_PERIOD_DISPLAY_NAMES = {
	        'auto': _('Auto').t(),
	        'year': splunkUtils.sprintf(_('Years (%(sampleDate)s)').t(), { sampleDate: formatSampleDate('year') }),
	        'month': splunkUtils.sprintf(_('Months (%(sampleDate)s)').t(), { sampleDate: formatSampleDate('month') }),
	        'day': splunkUtils.sprintf(_('Days (%(sampleDate)s)').t(), { sampleDate: formatSampleDate('day') }),
	        'hour': splunkUtils.sprintf(_('Hours (%(sampleDate)s)').t(), { sampleDate: formatSampleDate('hour') }),
	        'minute': splunkUtils.sprintf(_('Minutes (%(sampleDate)s)').t(), { sampleDate: formatSampleDate('minute') }),
	        'second': splunkUtils.sprintf(_('Seconds (%(sampleDate)s)').t(), { sampleDate: formatSampleDate('second') })
	    };

	    var SPLIT_TIME_PERIOD_DISPLAY_NAMES_SHORT = {
	        'auto': _('Auto').t(),
	        'year': _('Years').t(),
	        'month': _('Months').t(),
	        'day': _('Days').t(),
	        'hour': _('Hours').t(),
	        'minute': _('Minutes').t(),
	        'second': _('Seconds').t()
	    };

	    /**
	     * @param dict
	     * @param key
	     * @return the corresponding value of the key in the dict, or the key itself if it is not in the dict
	     */
	    var dictValueOrKey = function(dict, key) {
	        return dict.hasOwnProperty(key) ? dict[key] : key;
	    };

	    var quoteIfContainsSpacesOrCommas = function(str) {
	        if (/\s|,/.test(str)) {
	            return '"' + str + '"';
	        }
	        return str;
	    };

	    var prettyPrintArrayForLabel = function(values) {
	        return _(values).map(quoteIfContainsSpacesOrCommas).join(', ');
	    };

	    return ({

	        getMatchFilterLabel: function(fieldName, ruleKey, matchValue) {
	            if (_.isArray(matchValue)) {
	                matchValue = prettyPrintArrayForLabel(matchValue);
	            }
	            return splunkUtils.sprintf(
	                MATCH_FILTER_LABELS[ruleKey],
	                { fieldName: fieldName, matchValue: matchValue }
	            );
	        },

	        filterRuleToDisplay: function(rule) {
	            return FILTER_RULE_DISPLAY_NAMES[rule];
	        },

	        getLimitFilterLabel: function(fieldName, limitType, limitAmount, limitBy) {
	            if(limitBy) {
	                return splunkUtils.sprintf(
	                    LIMIT_FILTER_LABELS_LONG[limitType],
	                    { fieldName: fieldName, limitAmount: limitAmount, limitBy: limitBy }
	                );
	            }
	            return splunkUtils.sprintf(
	                LIMIT_FILTER_LABELS_SHORT[limitType],
	                { fieldName: fieldName, limitAmount: limitAmount }
	            );
	        },

	        filterLimitTypeToDisplay: function(limitType) {
	            return FILTER_LIMIT_TYPE_DISPLAY_NAMES[limitType];
	        },

	        cellValueToDisplay: function(valueType) {
	            return CELL_VALUE_DISPLAY_NAMES[valueType];
	        },

	        getCellValueLabel: function(fieldName, valueKey) {
	            return splunkUtils.sprintf(CELL_VALUE_LABELS[valueKey], { fieldName: fieldName });
	        },

	        cellValueToOutputType: function(valueType, dataType) {
	            if(dataType === 'objectCount' || dataType === 'childCount') {
	                return 'metric';
	            }
	            return CELL_VALUE_OUTPUT_TYPES[valueType];
	        },

	        splitModeToDisplay: function(mode) {
	            return dictValueOrKey(SPLIT_MODE_DISPLAY_NAMES, mode);
	        },

	        splitTimePeriodToDisplay: function(period, showSamples) {
	            if(showSamples) {
	                return dictValueOrKey(SPLIT_TIME_PERIOD_DISPLAY_NAMES, period);
	            }
	            return dictValueOrKey(SPLIT_TIME_PERIOD_DISPLAY_NAMES_SHORT, period);
	        },

	        booleanFieldNameLabel: function(fieldName, isTrue) {
	            return isTrue ?
	                splunkUtils.sprintf(_('is %(fieldName)s').t(), { fieldName: fieldName }) :
	                splunkUtils.sprintf(_('is not %(fieldName)s').t(), { fieldName: fieldName });
	        }

	    });

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "mixins/dataset":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("util/splunkd_utils"),
	        __webpack_require__("shim/splunk.util"),
	        __webpack_require__("stubs/i18n")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        ColumnModel,
	        splunkDUtils,
	        splunkUtil,
	        i18n
	    ) {
	        /**
	         * @mixin dataset
	         *
	         * The purpose of this mixin is to define a standard interface for dataset models.
	         * The backend datasets combined endpoint does not provide a consistent response for
	         * all datasets because each one comes from separate, and legacy conf entities.
	         * Attributes such as the available fields are going to be vastly different per type
	         * of entity. By mixing in, and extending this interface, we can provide a standard
	         * on the front end side.
	         */
	        var dataset = {
	            /**
	             * @returns The list of field objects from the dataset in the format of:
	             * [{ name:<name1>, type:<type>, ... }, ..., { name:<nameN>, type:<type>, ... }]
	             * The only required attribute is name.
	             *
	             */
	            getFields: function() {
	                throw new Error('You must define a custom getFields for this dataset type that conforms to the standard!');
	            },

	            /**
	             * @returns Ensures that the list of fields has the default type for each field in the format of:
	             * [{ name:<name1>, type:<type>, ... }, ..., { name:<nameN>, type:<type>, ... }]
	             * The only required attribute is name.
	             *
	             */
	            getTypedFields: function(options) {
	                options = options || {};
	                var fields = this.getFields(),
	                    typedFields = _.each(fields, function(field) {
	                        var type = ColumnModel.TYPES.STRING;

	                        if (field.name === '_time') {
	                            type = ColumnModel.TYPES._TIME;
	                        } else if (field.name === '_raw') {
	                            type = ColumnModel.TYPES._RAW;
	                        }

	                        _.defaults(field, {
	                            type: type
	                        });

	                        return field;
	                    });

	                if (options.withoutUnfixed) {
	                    typedFields = _.filter(typedFields, function(typedField) {
	                        return typedField.name !== '*';
	                    });
	                }

	                return typedFields;
	            },

	            /**
	             * @returns An object with two keys:
	             *     fields: an array of the available field names
	             *     containsStar: a boolean, true if the fields list contains the "*" wildcard, false if not
	             */
	            getFlattenedFieldsObj: function() {
	                var flattenedFieldsObj = {
	                        containsStar: false,
	                        fields: []
	                    },
	                    fields = this.getFields();

	                flattenedFieldsObj.fields = _.map(_.filter(fields, function(field) {
	                    if (field.name === '*') {
	                        flattenedFieldsObj.containsStar = true;
	                        return false;
	                    }

	                    return true;
	                }), function(field) {
	                    return field.name;
	                });

	                return flattenedFieldsObj;
	            },

	            /**
	             * @param {Object} options The options hash for the function
	             *     options.numFieldsToShow: a number to limit how many fields are returned.
	             *                              If any fields are truncated, "and more" is added to the end of the string.
	             *                              Defaults to the total number of fields (aka shows all).
	             *     options.showTotal: a boolean of whether or not to show the total number of fields in parentheses
	             *                        before the entire list.
	             *                        Defaults to false.
	             * @returns The list of available fields as a single string to be displayed to the user
	             *
	             */
	            getRenderableFieldsList: function(options) {
	                var fields = this.getFields(),
	                    flattenedFieldsObj = this.getFlattenedFieldsObj(),
	                    numFields = flattenedFieldsObj.fields.length,
	                    stringifiedFields = '',
	                    flattenedFieldsToShow;

	                options = options || {};
	                _.defaults(options, {
	                    numFieldsToShow: numFields,
	                    showTotal: false
	                });

	                flattenedFieldsToShow = flattenedFieldsObj.fields.slice(0, options.numFieldsToShow);

	                if (_.isEmpty(fields) || _.isEmpty(flattenedFieldsObj.fields)) {
	                    return _('Unknown').t();
	                }

	                if (options.showTotal) {
	                    stringifiedFields += splunkUtil.sprintf(i18n.ungettext('(%d) ', '(%s) ', numFields), numFields);
	                }
	                stringifiedFields += flattenedFieldsToShow.join(_(', ').t());

	                if (flattenedFieldsObj.containsStar || flattenedFieldsToShow.length < numFields) {
	                    return stringifiedFields + _(' and more').t();
	                }

	                return stringifiedFields;
	            },

	            /**
	             * @returns The list of fields in the format for the search page to show the fields as selected
	             */
	            getSelectedFieldsString: function() {
	                var fields = this.getFields(),
	                    flattenedFields;

	                flattenedFields = _.map(_.filter(fields, function(field) {
	                    if (field.name === '*') {
	                        return false;
	                    }

	                    // Strip out underscore fields
	                    if (field.name.charAt(0) === '_') {
	                        return false;
	                    }

	                    return true;
	                }), function(field) { return field.name; });

	                if (flattenedFields.length) {
	                    return JSON.stringify(flattenedFields);
	                }
	            },
	            
	            /*
	            * @returns if the fields contain a field named the fieldname passed in
	            */
	            hasField: function(fieldname) {
	                var fields = this.getFields(),
	                    foundField;

	                foundField = _.find(fields, function(field) {
	                    return field.name === fieldname;
	                });

	                if (foundField) {
	                    return true;
	                }

	                return false;
	            },

	            /*
	            * @returns if the fields are empty or contain a field named * then the set of fields is not fixed
	            */
	            isFixedFields: function() {
	                var fields = this.getFields(),
	                    starField;

	                starField = _.find(fields, function(field) {
	                    return field.name === '*';
	                });

	                if (_.isEmpty(fields) || starField) {
	                    return false;
	                }

	                return true;
	            },

	            /*
	            * @returns if the dataset can be extended in pivot
	            */
	            canPivot: function() {
	                return this.isFixedFields();
	            },

	            /*
	            * @returns if the dataset can be extended in search
	            */
	            canSearch: function() {
	                return true;
	            },

	            /*
	            * @returns if the dataset can be extended in the table ui
	            */
	            canTable: function() {
	                return true;
	            },

	            /*
	            * @returns if the dataset has an editable user readable description attribute
	            */
	            canEditDescription: function() {
	                return true;
	            },

	            /*
	            * @returns if the dataset has an editable permissions. This is not to be confused with
	            * the question if the user has the rights to do so.
	            */
	            canEditPermissions: function() {
	                return true;
	            },

	            /**
	            * @returns The server known type of the dataset.
	            */
	            getEAIType: function() {
	                return this.entry.content.get('eai:type');
	            },

	            /**
	             * @returns a specific type that has been determined by more than the eai:type attribute when overridden.
	             */
	            getType: function() {
	                return this.getEAIType();
	            },

	            /**
	             * @returns the type that the from command expects to run this dataset.
	             */
	            getFromType: function() {
	                return this.getEAIType();
	            },

	            /**
	             * @returns the name that the from command expects to run this dataset.
	             */
	            getFromName: function() {
	                return this.entry.get('name');
	            },

	            /**
	             * @returns an i18n'd string of the type to the user. The model being mixed into is responsible for this value.
	             */
	            getDatasetDisplayType: function() {
	                throw new Error('You must define a custom getDisplayType!');
	            },

	            /**
	             * We may have a special way of rendering the title of datasets that have dot notation for parent relationships.
	             * This will allow custom formatting of the name.
	             *
	             * @returns the name of the entity.
	             *
	             */
	            getFormattedName: function() {
	                return this.entry.get('name');
	            },

	            /**
	             * Data Model Objects and Data Models use description to define their JSON payloads and have no actual description.
	             * This allows the model to override the standard accessor string for description.
	             *
	             * @returns the attribute to access the user entered description of the entity.
	             *
	             */
	            getDescriptionAttribute: function() {
	                return 'description';
	            },

	            /**
	             * Data Model Objects and Data Models use description to define their JSON payloads and have no actual description.
	             * This allows the model to override the method by which the human readable description is retrieved.
	             *
	             * @returns the user entered description of the entity.
	             *
	             */
	            getDescription: function() {
	                var descriptionAttribute = this.getDescriptionAttribute();

	                if (descriptionAttribute) {
	                    return this.entry.content.get(descriptionAttribute);
	                }

	                return undefined;
	            },

	            /**
	             * @returns an object containing the necessary k/v pairs to successfully route to the dataset viewing page
	             */
	            getRoutingData: function() {
	                var data = {
	                        name: this.entry.get('name'),
	                        eaiType: this.getEAIType(),
	                        eaiOwner: this.entry.acl.get('owner'),
	                        eaiApp: this.entry.acl.get('app')
	                    },
	                    datasetType = this.entry.content.get('dataset.type');

	                if (datasetType) {
	                    data.datasetType = datasetType;
	                }

	                // TODO: It doesn't look like we can import PolymorphicDataset in this file (and maybe we shouldn't).
	                // Is this the best way?
	                if (this.getType() !== 'datamodel') {
	                    data.linksAlternate = this.entry.links.get('alternate');
	                }

	                return data;
	            },

	            /**
	             * Proves that the mixin has been applied to your model.
	             *
	             * @returns true for all datasets.
	             *
	             */
	            isDataset: function() {
	                return true;
	            },

	            /**
	             * Returns true if the dataset is a table dataset (the table model overrides this to true).
	             *
	             * @returns false.
	             *
	             */
	            isTable: function() {
	                return false;
	            },

	            /**
	             * Returns true if the dataset type can be accelerated in the backend. This is convention that is tied
	             * to knowledge about the REST API. Any dataset type that allows acceleration must override this for now
	             * because the consolidated Datasets REST API does not transmit this knowledge.
	             *
	             * @returns false.
	             *
	             */
	            typeCanBeAccelerated: function() {
	                return false;
	            },

	            /**
	             * Returns true if the dataset is accelerated.
	             *
	             * @returns true/false based on the REST response from the consolidated Datasets REST API.
	             *
	             */
	            isAcceleratedDataset: function() {
	                return splunkUtil.normalizeBoolean(this.entry.content.get('accelerated'), false);
	            },

	            /**
	             * Because there is no dedicated endpoint for a singular dataset we have to fake this by fetching
	             * from the consolidation API with enough information to get only the dataset payload we want.
	             *
	             * @returns bbXHR from a fetch to the datasets endpoint
	             *
	             */
	            fetchAsDataset: function(options) {
	                options = options || {};

	                if (!options.app && !options.owner) {
	                    throw new Error('You must specify an app or owner because the datasets endpoint is not available on services.');
	                }

	                var url = splunkDUtils.fullpath('datasets', {
	                        app: options.app,
	                        owner: options.owner
	                    }),
	                    search = 'name="' + this.entry.get('name') + '" AND eai:type="' + this.getEAIType() +
	                        '" AND eai:acl.owner="' + this.entry.acl.get('owner') + '" AND eai:acl.app="' + this.entry.acl.get('app') + '"';

	                options = $.extend(true, {}, {
	                    url: url,
	                    data: {
	                        search: search
	                    }
	                }, options);

	                return this.fetch(options);
	            },

	            /*
	             * @returns a search that uses the from command to load the events, using the type and name as namespaces
	             */
	            getFromSearch: function() {
	                return '| from ' + this.getFromType() + ':"' + this.getFromName() + '"';
	            },


	            /*
	             * @returns true if this is a data summary or transforming dataset
	             */
	            canLimitEvents: function(isTransforming) {
	                return (this.isTable() && !this.isTableMode()) || isTransforming;
	            },

	            /*
	             * @returns an array of pipes to be appended to the search string based on the chosen diversity
	             */
	            getDiversitySearchComponent: function(options) {
	                options = options || {};
	                // use the diversity setting to determine the search string
	                var diversity = this.entry.content.get('dataset.display.diversity'),
	                    pipes = [];


	                if (this.canLimitEvents(options.isTransforming)) {
	                    // No sampling if we are limiting events
	                    return [];
	                }

	                if (diversity === dataset.DIVERSITY.RANDOM) {
	                    // random is going to be based on the sampling ratio of 1:100
	                    this.entry.content.set('dataset.display.sample_ratio', '100');
	                    pipes.push('head 50');

	                // latest is the default
	                } else {
	                    // no sampling ratio for latest
	                    this.entry.content.set('dataset.display.sample_ratio', '1');
	                    pipes.push('head 50');
	                }

	                return pipes;
	            },

	            getDispatchRatio: function(options) {
	                options = options || {};
	                if (this.canLimitEvents(options.isTransforming)) {
	                    return '1';
	                }

	                return this.entry.content.get('dataset.display.sample_ratio');
	            },

	            /*
	             * @param {Object} options The options hash for the function
	             * @param {string} options.isTranforming If the dataset is transforming or non transforming
	             * @returns {Number} a integer value of events to limit on
	             */
	            getEventLimit: function(options) {
	                options = options || {};
	                var limit = parseInt((this.entry.content.get('dataset.display.limiting')), 10);
	                if (_.isFinite(limit) && this.canLimitEvents(options.isTransforming)) {
	                    return limit;
	                }
	                return 0;
	            },

	            DIVERSITY: {
	                LATEST: 'latest',
	                RANDOM: 'random'
	            },

	            MODES: {
	                TABLE: 'table',
	                DATA_SUMMARY: 'datasummary'
	            }
	        };

	        return dataset;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/Column":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("util/general_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseModel,
	        generalUtils
	    ) {
	        var TYPES = {
	                // Generic Types
	                EPOCH_TIME: 'epochTime',
	                NUMBER: 'number',
	                STRING: 'string',
	                BOOLEAN: 'boolean',
	                IPV4: 'ipv4',

	                // Unique Data Types
	                // - Users cannot assign these types to other fields
	                // - Users cannot change the types of these fields
	                // - If field is duplicated, assign 'epoch' or 'string' generic types
	                _RAW: 'raw',
	                _TIME: 'timestamp'
	            },
	            WIDTH_SELECT_ALL = 60,
	            WIDTH_DEFAULT = 200,
	            WIDTH_DEFAULT_RAW = 600,
	            ICONS = {},
	            TYPE_LABELS = {};

	        ICONS[TYPES.EPOCH_TIME] = 'clock';
	        ICONS[TYPES.NUMBER] = 'number';
	        ICONS[TYPES.STRING] = 'string';
	        ICONS[TYPES.BOOLEAN] = 'boolean';
	        ICONS[TYPES.IPV4] = 'ipv4';
	        ICONS[TYPES._RAW] = 'greater';
	        ICONS[TYPES._TIME] = 'clock';

	        TYPE_LABELS[TYPES.EPOCH_TIME] = _('Epoch Time').t();
	        TYPE_LABELS[TYPES.NUMBER] = _('Number').t();
	        TYPE_LABELS[TYPES.STRING] = _('String').t();
	        TYPE_LABELS[TYPES.BOOLEAN] = _('Boolean').t();
	        TYPE_LABELS[TYPES.IPV4] = _('IPv4').t();
	        TYPE_LABELS[TYPES._RAW] = _('Raw').t();
	        TYPE_LABELS[TYPES._TIME] = _('Timestamp').t();

	        return BaseModel.extend({
	            initialize: function(attributes, options) {
	                BaseModel.prototype.initialize.apply(this, arguments);
	            },

	            defaults: function() {
	                return {
	                    id: generalUtils.generateUUID(),
	                    type: TYPES.STRING
	                };
	            },

	            validation: {
	                name: function(value) {
	                    if (!value) {
	                        throw new Error('You cannot set on a column without a name.');
	                    }
	                }
	            },

	            sync: function(method, model, options) {
	                throw new Error('sync not allowed for the Column model');
	            },

	            isTouchedByComparison: function(comparisonColumn, options) {
	                options = options || {};
	                var currentName = options.previousColumnName || this.get('name'),
	                    comparisonName = comparisonColumn.get('name');

	                if (this.id !== comparisonColumn.id) {
	                    throw new Error('You cannot compare columns with different ids!');
	                }

	                return (currentName !== comparisonName);
	            },

	            isEpochTime: function() {
	                var type = this.get('type');
	                return ((type === TYPES.EPOCH_TIME) || (type === TYPES._TIME));
	            },

	            isSplunkTime: function() {
	                var type = this.get('type');
	                return (type === TYPES._TIME);
	            },

	            getWidth: function() {
	                var customSetWidth = parseFloat(this.get('display.width'));

	                if (customSetWidth && !_.isNaN(customSetWidth)) {
	                    return customSetWidth;
	                } else {
	                    return this.get('type') === TYPES._RAW ? WIDTH_DEFAULT_RAW : WIDTH_DEFAULT;
	                }
	            }
	        }, {
	            TYPES: TYPES,
	            ICONS: ICONS,
	            TYPE_LABELS: TYPE_LABELS,
	            WIDTH_SELECT_ALL: WIDTH_SELECT_ALL,
	            WIDTH_DEFAULT: WIDTH_DEFAULT,
	            WIDTH_DEFAULT_RAW: WIDTH_DEFAULT_RAW
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/PolymorphicDataset":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("models/services/datasets/PolymorphicDataset"),
	        __webpack_require__("models/datasets/Table"),
	        __webpack_require__("mixins/dataset")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        Backbone,
	        PolymorphicDatasetBaseModel,
	        TableModel,
	        datasetMixin
	    ) {
	        
	        var TABLE = 'table';
	        
	        var PolymorphicDataset = PolymorphicDatasetBaseModel.extend({
	            constructor: function(attributes, options) {
	                var Model = PolymorphicDataset.getModel(attributes);
	                
	                if (!Model) {
	                    throw new Error("You must define a valid entry[0].content['eai:type'] for dataset construction!");
	                }
	                
	                // force the model to extend the dataset interface
	                _.defaults(Model.prototype, datasetMixin);
	                
	                return new Model(attributes, options);
	            }
	        }, {
	            getModel: function(attributes) {
	                var Model;
	                
	                if (attributes && attributes.entry && attributes.entry[0] && attributes.entry[0].content) {
	                    
	                     // Datasets that come from datamodels.conf
	                    if (attributes.entry[0].content['eai:type'] === PolymorphicDatasetBaseModel.DATAMODEL) {
	                        if (attributes.entry[0].content['dataset.type'] === TABLE) {
	                            Model = TableModel;
	                        }
	                    }
	                }
	                
	                if (!Model) {
	                    Model = PolymorphicDatasetBaseModel.getModel(attributes);
	                }
	                
	                return Model;
	            },
	            TABLE: TABLE
	        });
	        
	        return PolymorphicDataset;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/datasets/Table":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("models/SplunkDBase"),
	        __webpack_require__("models/ACLReadOnly"),
	        __webpack_require__("models/shared/Cron"),
	        __webpack_require__("models/shared/TimeRange"),
	        __webpack_require__("models/services/datamodel/DataModel"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/commands/InitialData"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("collections/Base"),
	        __webpack_require__("collections/datasets/Commands"),
	        __webpack_require__("collections/datasets/Columns"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseModel,
	        SplunkDBaseModel,
	        ACLReadOnlyModel,
	        CronModel,
	        TimeRangeModel,
	        DataModel,
	        BaseCommand,
	        InitialDataCommand,
	        Column,
	        BaseCollection,
	        CommandsCollection,
	        ColumnsCollection,
	        splunkUtil
	    ) {
	        var TableModel = DataModel.extend({
	            initialize: function(attributes, options) {
	                options = options || {};

	                DataModel.prototype.initialize.call(this, attributes, options);

	                this.commands.on('add remove reset change', this.populateTableFromCommands, this);
	                this.entry.content.on('change:dataset.commands', this.populateCommandsFromTable, this);

	                // When the attributes are passed into the constructor like in collection creation then change
	                // events do not fire
	                if (this.entry.content.get('dataset.commands')) {
	                    this.populateCommandsFromTable();
	                }

	                this.selectedColumns.on('add remove reset change', this.populateTableFromSelectedColumns, this);
	                this.entry.content.on('change:dataset.display.selectedColumns', this.populateSelectedColumnsFromTable, this);

	                this.on('applyAction', this.populateTableFromCommands, this);
	            },

	            initializeAssociated: function() {
	                DataModel.prototype.initializeAssociated.apply(this, arguments);

	                // do a dynamic lookup of the current constructor so that this method is inheritance-friendly
	                var RootClass = this.constructor;
	                this.associated = this.associated || {};

	                //associated
	                this.commands = this.commands || new RootClass.Commands();
	                this.associated.commands = this.commands;

	                this.selectedColumns = this.selectedColumns || new RootClass.SelectedColumns();
	                this.associated.selectedColumns = this.selectedColumns;
	            },

	            parse: function(response) {
	                var parsedResponse = DataModel.prototype.parse.apply(this, arguments);

	                if (this.isNew()) {
	                    this.entry.content.set({
	                        'dataset.type': 'table'
	                    });
	                }

	                return parsedResponse;
	            },

	            parseSplunkDPayload: function(payload, options) {
	                var entry = payload.entry,
	                    acceleration,
	                    content;

	                if (entry && entry.length > 0 && entry[0].content) {
	                    content = entry[0].content;

	                    if (content.acceleration) {
	                        acceleration = JSON.parse(content.acceleration); // String representation of the acceleration JSON
	                    }

	                    if (_(acceleration).isObject()) {
	                        this.entry.content.acceleration.set(acceleration, $.extend({ parse: true }, options));
	                    }
	                }

	                return payload;
	            },

	            populateCommandsFromTable: function() {
	                var commands = [];
	                //turn off the listener so that we don't have a circular reference
	                this.commands.off('add remove reset change', this.populateTableFromCommands, this);

	                //set fields into a collection (facilitates mgt)
	                _.each(this.entry.content.toObject('dataset.commands') || [], function(command) {
	                    commands.push(command);
	                });

	                this.commands.reset(commands, {parse: true});

	                //turn the listener back on
	                this.commands.on('add remove reset change', this.populateTableFromCommands, this);
	            },

	            populateTableFromCommands: function(commandModel, commands, options) {
	                if (!(commands instanceof CommandsCollection) && !options) {
	                    options = commands;
	                }
	                options = options || {};
	                // If you call unset on a command attribute, Backbone adds { unset: true } as an option, and that gets
	                // passed all the way to this function when the change event fires. Thus, since we were passing those
	                // same options to set, we were unsetting all the attributes!
	                // There's literally no use for us to care about unset here, so just get rid of it.
	                delete options.unset;
	                //turn off the listener so that we don't have a circular reference
	                this.entry.content.off('change:dataset.commands', this.populateCommandsFromTable, this);

	                var newCommandIdx = this.getCurrentCommandIdx(),
	                    newCommand,
	                    safeCommand,
	                    lastCommandBeforeDisabledIndex,
	                    shouldOpenEditor = 0;

	                if (options.add) {
	                    if (_.isNumber(options.at)) {
	                        newCommandIdx = options.at;
	                    } else if (_.isUndefined(newCommandIdx)) {
	                        newCommandIdx = 0;
	                    } else if (!_.isUndefined(this.entry.content.get('dataset.display.currentCommand'))) {
	                        newCommandIdx++;
	                    }
	                }

	                safeCommand = this.getLastSafeCommandForCommandIndex(newCommandIdx);
	                // Snap to first error if there are any disabled commands
	                lastCommandBeforeDisabledIndex = this.commands.indexOf(safeCommand) + 1;
	                newCommandIdx = newCommandIdx > lastCommandBeforeDisabledIndex ? lastCommandBeforeDisabledIndex : newCommandIdx;
	                newCommand = this.commands.at(newCommandIdx);

	                if (options.forceOpenEditor || (newCommand && !newCommand.isComplete() && !newCommand.isModalized)) {
	                    shouldOpenEditor = 1;
	                }

	                this.entry.content.set({
	                    'dataset.commands': JSON.stringify(this.commands.toJSON()),
	                    'dataset.display.currentCommand': newCommandIdx,
	                    'dataset.display.showEditor': shouldOpenEditor
	                }, options);

	                //turn the listener back on
	                this.entry.content.on('change:dataset.commands', this.populateCommandsFromTable, this);
	            },

	            populateSelectedColumnsFromTable: function() {
	                var selectedColumns = [];

	                this.selectedColumns.off('add remove reset change', this.populateTableFromSelectedColumns, this);

	                _.each(this.entry.content.toObject('dataset.display.selectedColumns') || [], function(selectedColumn) {
	                    selectedColumns.push(selectedColumn);
	                });

	                this.selectedColumns.set(selectedColumns);

	                this.selectedColumns.on('add remove reset change', this.populateTableFromSelectedColumns, this);
	            },

	            populateTableFromSelectedColumns: function(selectedColumnModel, selectedColumns, options) {
	                this.entry.content.off('change:dataset.display.selectedColumns', this.populateSelectedColumnsFromTable, this);

	                this.entry.content.set({
	                    'dataset.display.selectedColumns': JSON.stringify(this.selectedColumns.toJSON())
	                });

	                this.entry.content.on('change:dataset.display.selectedColumns', this.populateSelectedColumnsFromTable, this);
	            },

	            clearSelections: function() {
	                this.selectedColumns.reset();
	                // Can't set them to undefined because they'll get cleared by jQuery's extend(). Setting them to
	                // empty string effectively clears them out anyway, so this is fine.
	                this.entry.content.set({
	                    'dataset.display.selectedColumnValue': '',
	                    'dataset.display.selectedText': '',
	                    'dataset.display.selectedStart': '',
	                    'dataset.display.selectedEnd': '',
	                    'dataset.display.selectionType': '',
	                    'dataset.display.isSelectionError': ''
	                });
	            },

	            initBaseCommand: function(values, options) {
	                values = values || {};
	                options = options || {};

	                values.type = BaseCommand.INITIAL_DATA;
	                if (!values.columns) {
	                    values.columns = [];
	                }

	                if (!this.commands.length) {
	                    this.commands.addNewCommand(values, options);
	                    return true;
	                }
	            },

	            migrateFromSearch: function(options) {
	                var optionsCopy = $.extend(true, {}, (options || {})),
	                    search = optionsCopy.search || this.entry.content.get('search'),
	                    selectedFields = optionsCopy.selectedFields || this.entry.content.toObject('dataset.search.fields') || [],
	                    columnsCollection = new ColumnsCollection(),
	                    initialDataCommandValues = {
	                        selectedMethod: (optionsCopy.selectedMethod || InitialDataCommand.METHODS.SEARCH)
	                    },
	                    didCreateInitialDataCommand,
	                    initialDataCommand;

	                _.each(selectedFields, function(field) {
	                    columnsCollection.addColumn({
	                        columnName: field
	                    });
	                }, this);

	                if (this.ast && !this.ast.isTransforming()) {
	                    columnsCollection.setInitialColumns();
	                }

	                // Ensure that the commands list is already empty
	                if (search && (this.commands.length === 0)) {
	                    if (initialDataCommandValues.selectedMethod === InitialDataCommand.METHODS.DATASET) {
	                        initialDataCommandValues.spl = search;
	                    } else {
	                        initialDataCommandValues.baseSPL = search;
	                    }

	                    didCreateInitialDataCommand = this.initBaseCommand(initialDataCommandValues, optionsCopy);
	                    initialDataCommand = this.commands.first();

	                    if (didCreateInitialDataCommand) {
	                        initialDataCommand.columns.reset(columnsCollection.toJSON());

	                        if (optionsCopy.selectedDataset) {
	                            initialDataCommand.resetSelectedDataset(optionsCopy.selectedDataset);
	                        }
	                    }

	                    // isComplete will normally be false (have to go through Initial Data) but if you extend a dataset
	                    // with fixed fields, then we consider Initial Data to be complete, and we should proceed to table UI.
	                    initialDataCommand.set('isComplete', optionsCopy.selectedDataset && optionsCopy.selectedDataset.isFixedFields());
	                    this.entry.content.set({
	                        'search': initialDataCommand.generateSPL(),
	                        'dataset.commands': JSON.stringify([initialDataCommand]),
	                        'dataset.display.currentCommand': 0
	                    }, optionsCopy);
	                    this.setSelectedColumnsForNewCommandIndex(0);
	                }
	            },

	            setSelectedColumnsForNewCommandIndex: function(newCommandIdx) {
	                var newCommand = this.commands.at(newCommandIdx);

	                if (newCommand) {
	                    // First, get rid of any selected columns that won't exist when we move to the new index
	                    this.selectedColumns.reset(this.selectedColumns.filter(function(column) {
	                        return newCommand.columns.findWhere({ id: column.get('id') });
	                    }.bind(this)));

	                    // If we don't have a valid selection after that, then reset back to the first column.
	                    if (!this.hasValidSelection({ commandIndex: newCommandIdx }) && newCommand.columns.length) {
	                        this.selectedColumns.reset({
	                            id: newCommand.columns.first().id
	                        });
	                        this.entry.content.set('dataset.display.selectionType', 'column');
	                    }
	                }
	            },

	            // Make sure the model value is not undefined, null, or empty string
	            valueIsVaildSelection: function(value) {
	                return !(_.isUndefined(value) || _.isNull(value) ||(value === ""));
	            },

	            hasValidSelection: function(options) {
	                options = options || {};

	                var selectionType = this.entry.content.get('dataset.display.selectionType'),
	                    selectedText = this.entry.content.get('dataset.display.selectedText'),
	                    selectedColumnValue = this.entry.content.get('dataset.display.selectedColumnValue'),
	                    selectedStart = this.entry.content.get('dataset.display.selectedStart'),
	                    selectedEnd = this.entry.content.get('dataset.display.selectedEnd'),
	                    selectedColumnsClone = this.selectedColumns.clone(),
	                    commandModel = this.commands.at(options.commandIndex) || this.getCurrentCommandModel(),
	                    hasSelectedColumnValue = this.valueIsVaildSelection(selectedColumnValue),
	                    hasSelectedText = this.valueIsVaildSelection(selectedText),
	                    hasSelectedStart = this.valueIsVaildSelection(selectedStart),
	                    hasSelectedEnd = this.valueIsVaildSelection(selectedEnd),
	                    hasTextSelection,
	                    hasCellSelection,
	                    hasColumnSelection,
	                    hasTableSelection;

	                if (!this.commands.length) {
	                    return false;
	                }

	                selectedColumnsClone.reset(selectedColumnsClone.filter(function(column) {
	                    return commandModel.columns.findWhere({ id: column.get('id') });
	                }.bind(this)));

	                hasTextSelection = (selectionType === 'text') && (selectedColumnsClone.length === 1) && hasSelectedColumnValue &&
	                    hasSelectedText && hasSelectedStart && hasSelectedEnd;

	                hasCellSelection = (selectionType === 'cell') && (selectedColumnsClone.length === 1) && hasSelectedColumnValue &&
	                    !hasSelectedText && !hasSelectedStart && !hasSelectedEnd;

	                hasColumnSelection = (selectionType === 'column') && selectedColumnsClone.length && !hasSelectedColumnValue &&
	                    !hasSelectedText && !hasSelectedStart && !hasSelectedEnd;

	                hasTableSelection = (selectionType === 'table') && !selectedColumnsClone.length && !hasSelectedColumnValue &&
	                    !hasSelectedText && !hasSelectedStart && !hasSelectedEnd;

	                return hasColumnSelection || hasTableSelection || hasCellSelection || hasTextSelection;
	            },

	            getCurrentCommandIdx: function() {
	                var currentCommandIdx = parseInt(this.entry.content.get('dataset.display.currentCommand'), 10),
	                    lastCommandIdx = this.commands.length - 1;

	                if (_.isNaN(currentCommandIdx)) {
	                    if (this.commands.length) {
	                        return lastCommandIdx;
	                    }
	                    return undefined;
	                }

	                if (currentCommandIdx < 0) {
	                    return 0;
	                }

	                if (currentCommandIdx > lastCommandIdx) {
	                    if (lastCommandIdx < 0) {
	                        return undefined;
	                    }
	                    return lastCommandIdx;
	                }

	                return currentCommandIdx;
	            },

	            getCurrentCommandModel: function() {
	                return this.commands.models[this.getCurrentCommandIdx()];
	            },

	            getNearestSearchPointIdx: function(idx) {
	                var currentCommandIdx = isNaN(idx) ? this.getCurrentCommandIdx() : idx;

	                for (var i = currentCommandIdx; i >= 0; i--) {
	                    if (this.commands.at(i).isSearchPoint) {
	                        return i;
	                    }
	                }

	                return currentCommandIdx;
	            },

	            getSearch: function(idx, options) {
	                options = options || {};

	                var currentCommandIdx = isNaN(idx) ? this.getCurrentCommandIdx() : idx,
	                    splArray = [],
	                    currentCommand = this.commands.at(currentCommandIdx),
	                    i = 0,
	                    nearestSearchPointIdx,
	                    eventsString;

	                if (!this.commands.length) {
	                    return this.entry.content.get('search') || '';
	                }

	                if (options.respectSearchPoints && !currentCommand.isSearchPoint) {
	                    if (!options.searchPointJob) {
	                        throw new Error('You must specify the searchPointJob to get the proper search.');
	                    }

	                    if (!options.searchPointJob.prepared) {
	                        throw new Error('The searchPointJob must be prepared before getting the loadjob search.');
	                    }

	                    nearestSearchPointIdx = this.getNearestSearchPointIdx(currentCommandIdx);

	                    if (this.getSearch(nearestSearchPointIdx, options) !== splunkUtil.stripLeadingSearchCommand(options.searchPointJob.getSearch())) {
	                        throw new Error('The searchPointJob does not match the search for the nearest search point.');
	                    }

	                    eventsString = options.searchPointJob.isReportSearch() ? 'false' : 'true';
	                    splArray.push('| loadjob ' + options.searchPointJob.id + ' events=' + eventsString + ' require_finished=false');
	                    i = nearestSearchPointIdx + 1;
	                }

	                for (; i <= currentCommandIdx; i++) {
	                    currentCommand = this.commands.at(i);
	                    if (currentCommand.isComplete()) {
	                        // All commands are now updated once per page route, so they should always be in a complete state when we
	                        // call getSearch. In the event that a call happens and a proper search cannot be returned, ensure the developer
	                        // knows that they shouldn't be calling getSearch yet.
	                        if (currentCommand.validate() || !currentCommand.get('spl')) {
	                            throw new Error('You called getSearch on a Table that has a command marked complete that is invalid, or has not yet generated SPL for itself.');
	                        }
	                        splArray.push(currentCommand.get('spl'));
	                    }
	                }

	                // If we're respecting search points, we need to pass in the isTransforming option
	                if (options.respectSearchPoints && currentCommand.isSearchPoint && splArray.length) {
	                    splArray.push(this.getDiversitySearchComponent({ isTransforming: options.isTransforming }));
	                }

	                return _.flatten(splArray).join(' | ').trim().replace(/\s+/g, ' ');
	            },

	            getFullSearch: function(options) {
	                return this.getSearch(this.commands.length - 1, options);
	            },

	            isDirty: function(otherTable, whitelist) {
	                whitelist = whitelist || TableModel.DIRTY_WHITELIST;
	                return DataModel.prototype.isDirty.call(this, otherTable, whitelist);
	            },

	            isValid: function() {
	                return !!(this.commands.length &&
	                    !this.commands.find(
	                        function(command) {
	                            // The order of these checks is actually important because the
	                            // Backbone.validation library will populate the command models
	                            // with errors if they happen to be invalid. This is acceptable
	                            // on complete commands that shouldn't be valid.
	                            return !command.isComplete() || !command.isValid(true);
	                        }
	                    )
	                );
	            },

	            isTableMode: function() {
	                return (this.entry.content.get('dataset.display.mode') === 'table');
	            },

	            isDataSummaryMode: function() {
	                return (this.entry.content.get('dataset.display.mode') === 'datasummary');
	            },

	            getFields: function() {
	                if (!this.commands.length) {
	                    return [];
	                }

	                return this.commands.at(this.commands.length - 1).columns.toJSON();
	            },

	            getTypedFields: function() {
	                return this.getFields();
	            },

	            getType: function() {
	                return DataModel.DOCUMENT_TYPES.TABLE;
	            },

	            getDatasetDisplayType: function() {
	                return TableModel.DATASET_DISPLAY_TYPES.TABLE;
	            },

	            getDescription: function() {
	                return this.entry.content.get('dataset.description');
	            },

	            getDescriptionAttribute: function() {
	                return 'dataset.description';
	            },

	            getFormattedName: function() {
	                return this.entry.content.get('displayName');
	            },

	            setSelectedColumn: function(columnIndex) {
	                var currentCommand = this.getCurrentCommandModel(),
	                    columnGuid;

	                if (columnIndex < currentCommand.columns.length) {
	                    columnGuid = currentCommand.getGuidForColIndex(columnIndex);
	                }

	                if (columnGuid) {
	                    this.selectedColumns.add({
	                        id: columnGuid
	                    });
	                }
	            },

	            setSelectionTypeToColumn: function() {
	                this.entry.content.set('dataset.display.selectionType', 'column');
	                this.entry.content.set('dataset.display.selectedColumnValue', '');
	                this.entry.content.set('dataset.display.selectedText', '');
	                this.entry.content.set('dataset.display.isSelectionError', '');
	                this.entry.content.set('dataset.display.selectedStart', '');
	                this.entry.content.set('dataset.display.selectedEnd', '');
	            },

	            // This function's purpose is to find if this command is changing or adding the name of any field and,
	            // if it is, finding if there are any fields in the future that are named the same. That throws us into
	            // a weird state so we need to prevent against that.
	            // Can pass in your own fieldsToAdd or pass in the inmem/pristine commands and this function will determine
	            // the fields being added for you.
	            setCollidingFieldNames: function(options) {
	                options = options || {};

	                var i,
	                    currentCommandIndex = this.getCurrentCommandIdx(),
	                    currentCommand = this.commands.at(currentCommandIndex),
	                    currentCommandFieldsToAdd = currentCommand.getFieldsToAddAsArray(),
	                    collisionFields = [],
	                    commandEdited = options.commandEdited,
	                    commandPristine = options.commandPristine,
	                    fieldsToAdd,
	                    currentlyInspectedCommand,
	                    matchingColumn;
	                
	                if (options.fieldsToAdd) {
	                    fieldsToAdd = options.fieldsToAdd;
	                } else if (options.commandPristine && options.commandEdited) {
	                    fieldsToAdd = _.difference(commandEdited.getFieldsToAddAsArray(), commandPristine.getFieldsToAddAsArray());
	                } else {
	                    throw new Error('You must pass commandPristine and commandEdited models into options unless explicitly passing fieldsToAdd');
	                }

	                _.each(fieldsToAdd, function(fieldToAdd) {
	                    /*
	                     If fieldToAdd already exists on commandPristine (we use currentCommand here as commandPristine is
	                     not always passed in, and they are the same model), then fieldToAdd was added to the command's columns
	                     (and propagated to future commands) by a previous Apply - so we shouldn't add it as a new field to collisionFields.
	                     */
	                    if (_.indexOf(currentCommandFieldsToAdd, fieldToAdd) === -1) {
	                        for (i = currentCommandIndex; i < this.commands.length; i++) {
	                            currentlyInspectedCommand = this.commands.at(i);
	                            if (currentlyInspectedCommand) {
	                                matchingColumn = currentlyInspectedCommand.columns.find(function(column) {
	                                    return column.get('name') === fieldToAdd;
	                                });
	                                if (matchingColumn) {
	                                    collisionFields.push(fieldToAdd);
	                                }
	                            }
	                        }
	                    }
	                }, this);

	                if (options.commandEdited) {
	                    options.commandEdited.set('collisionFields', _.uniq(collisionFields));
	                }
	                return collisionFields;
	            },

	            getLastSafeCommandForCommandIndex: function(commandIndex) {
	                var currentCommandIndex = commandIndex || this.getCurrentCommandIdx(),
	                    currentCommand,
	                    lastSafeCommand,
	                    i;

	                for (i = 0; i <= currentCommandIndex; i++) {
	                    currentCommand = this.commands.at(i);

	                    if (currentCommand && currentCommand.isComplete() && currentCommand.isValid(true)) {
	                        lastSafeCommand = currentCommand;
	                    } else {
	                        break;
	                    }
	                }

	                return lastSafeCommand;
	            },

	            isTable: function() {
	                return true;
	            },

	            typeCanBeAccelerated: function() {
	                return true;
	            }
	        }, {
	            Cron: CronModel,
	            WorkingTimeRange: TimeRangeModel,
	            Commands: CommandsCollection,
	            SelectedColumns: BaseCollection,

	            DIRTY_WHITELIST: [
	              '^dataset\.display\..*$',
	              '^dataset\.commands$'
	            ],

	            MODES: {
	                TABLE: 'table',
	                DATA_SUMMARY: 'datasummary'
	            },
	            DATASET_DISPLAY_TYPES: {
	                TABLE: _('table').t()
	            }
	        });

	        // break the shared reference to Entry and do not use the DataModel Entry because its Content model
	        // defines a very custom toJSON.
	        TableModel.Entry = SplunkDBaseModel.Entry.extend({});
	        // now we can safely extend Entry.Content
	        TableModel.Entry.Content = SplunkDBaseModel.Entry.Content.extend({
	            defaults: {
	                'dataset.type': 'table',
	                'eai:type': 'datamodel',
	                // dangerous to import the mixin here (circular references), so we're just using the constant
	                'dataset.display.mode': 'table'
	            },

	            toJSON: function(options) {
	                var json = SplunkDBaseModel.Entry.Content.prototype.toJSON.apply(this, arguments);

	                // serialize the acceleration object back into the parent
	                json.acceleration = JSON.stringify(this.acceleration.toJSON(options));

	                return json;
	            }
	        });

	        return TableModel;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Base":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("collections/Base"),
	        __webpack_require__("collections/datasets/Columns"),
	        __webpack_require__("collections/datasets/RequiredColumns"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("models/datasets/TableAST"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("models/datasets/RequiredColumn"),
	        __webpack_require__("shim/splunk.util"),
	        __webpack_require__("util/general_utils"),
	        __webpack_require__("util/dataset_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCollection,
	        ColumnsCollection,
	        RequiredColumnsCollection,
	        BaseModel,
	        TableAST,
	        ColumnModel,
	        RequiredColumnModel,
	        splunkUtils,
	        generalUtils,
	        datasetUtils
	    ) {
	        var SELECTION = {
	            TABLE: 'table',
	            MULTICOLUMN: 'multicolumn',
	            COLUMN: 'column',
	            CELL: 'cell',
	            TEXT: 'text'
	        };

	        var _isTypeBlacklisted = function(type, blacklist, selection) {
	            var columnBlacklistArray = _.where(blacklist, { selection: selection }),
	                columnBlacklist;

	            if (columnBlacklistArray.length) {
	                columnBlacklist = columnBlacklistArray[0];
	                // If columnBlacklist.types is defined, find out if it's in the array.
	                if (columnBlacklist && columnBlacklist.types !== undefined) {
	                    return _.contains(columnBlacklist.types, type);
	                }

	                // If there is a columnBlacklist, but no types are defined, all types are blacklisted.
	                return true;
	            }

	            // If columnBlacklist is undefined, no field types are blacklisted.
	            return false;
	        };

	        var Command = BaseModel.extend({
	            _displayName: undefined,
	            _placeholderSPL: undefined,
	            _useAST: false,
	            _advancedCommand: undefined,

	            // Determine if this command should use a new search or a loadjob
	            // of the results of the closest previous _searchPoint command.
	            isSearchPoint: false,

	            fieldPickerBlacklistSelection: SELECTION.COLUMN,

	            initialize: function(attributes, options) {
	                BaseModel.prototype.initialize.apply(this, arguments);

	                this.initializeAssociated();

	                this.columns.on('change', function(changedColumn, options) {
	                    this.trigger('changeColumn', changedColumn, this, options);
	                }, this);

	                this.columns.on('add', function(addedColumn, columns, options) {
	                    this.trigger('addColumn', addedColumn, this, options);
	                }, this);

	                this.columns.on('remove', function(removedColumn, columns, options) {
	                    this.trigger('removeColumn', removedColumn, this, options);
	                }, this);

	                this.columns.on('reset', function(resetColumns, options) {
	                    this.trigger('resetColumns', resetColumns, this, options);
	                }, this);

	                this.requiredColumns.on('add remove reset change', function() {
	                    this.trigger('requiredColumnsChange');
	                }, this);

	                this.editorValues.on('add remove reset change', function() {
	                    this.trigger('editorValuesChange');
	                }, this);

	                this.on('change:type', function(model, type) {
	                    throw new Error('You cannot change the type of a command. They must be constructed by type.');
	                }, this);
	            },

	            defaults: function() {
	                return Command.getDefaults();
	            },

	            validation: {
	                type: function(value) {
	                    if (!value) {
	                        throw new Error('You must have a type set on the command.');
	                    }
	                },

	                spl: 'validateSPL'
	            },

	            validateSPL: function(value, attr, option) {
	                throw new Error('You must define your own validateSPL method');
	            },

	            validateASTErrors: function() {
	                var astError = this.ast && this.ast.error.get('messages');

	                // Make sure no ill formed commands are slipped in here
	                if (astError && astError.length) {
	                    return splunkUtils.escapeHtml(astError[0].message);
	                }
	            },

	            validatePipes: function() {
	                var astSources = this.ast && this.ast.get('ast') && this.ast.get('ast').sources;

	                // If sources has stuff in it, then that means the user piped to another command.
	                // Easier to go through the AST here instead of trying to do any parsing ourselves.
	                if (astSources && astSources.length > 0) {
	                    return _('Pipes to other Splunk commands are not allowed.').t();
	                }
	            },

	            initializeAssociated: function() {
	                // do a dynamic lookup of the current constructor so that this method is inheritance-friendly
	                var RootClass = this.constructor;
	                this.associated = this.associated || {};

	                this.columns = this.columns || new RootClass.Columns();
	                this.associated.columns = this.columns;

	                this.requiredColumns = this.requiredColumns || new RootClass.RequiredColumns();
	                this.associated.requiredColumns = this.requiredColumns;

	                this.editorValues = this.editorValues || new RootClass.EditorValues();
	                this.associated.editorValues = this.editorValues;
	            },

	            // Individual commands can override this to do any custom setup work on their attributes
	            setInitialState: function(initialStateOptions) { },

	            sync: function(method, model, options) {
	                throw new Error('sync not allowed for a Command model');
	            },

	            parse: function(response, options) {
	                this.initializeAssociated();

	                response = $.extend(true, {}, response);

	                if (response.columns) {
	                    this.columns.reset(response.columns, options);
	                    delete response.columns;
	                }

	                if (response.requiredColumns) {
	                    this.requiredColumns.reset(response.requiredColumns, options);
	                    delete response.requiredColumns;
	                }

	                if (response.editorValues) {
	                    this.editorValues.reset(response.editorValues, options);
	                    delete response.editorValues;
	                }

	                return response;
	            },

	            setFromCommandJSON: function(jsonPayload, options) {
	                options = options || {};
	                if (!options.skipClone) {
	                    jsonPayload = $.extend(true, {}, jsonPayload);
	                }

	                if (jsonPayload) {
	                    if (jsonPayload.columns) {
	                        this.columns.set(jsonPayload.columns, options);
	                        delete jsonPayload.columns;
	                    }

	                    if (jsonPayload.requiredColumns) {
	                        this.requiredColumns.set(jsonPayload.requiredColumns, options);
	                        delete jsonPayload.requiredColumns;
	                    }

	                    if (jsonPayload.editorValues) {
	                        this.editorValues.reset(jsonPayload.editorValues, options);
	                        delete jsonPayload.editorValues;
	                    }
	                }

	                return this.set(jsonPayload, options);
	            },

	            clear: function(options) {
	                var setDefaultsOptions = _.extend({}, options, {
	                    setDefaults: true
	                });
	                BaseModel.prototype.clear.call(this, setDefaultsOptions);
	            },

	            toJSON: function(options) {
	                var baseJSON = BaseModel.prototype.toJSON.apply(this, arguments),
	                    columnsJSON = this.columns.toJSON(options),
	                    requiredColumnsJSON = this.requiredColumns.toJSON(options),
	                    editorValuesJSON = this.editorValues.toJSON(options);

	                if (!_.isEmpty(baseJSON) || !_.isEmpty(columnsJSON)) {
	                    baseJSON.columns = columnsJSON;
	                }

	                if (!_.isEmpty(baseJSON) || !_.isEmpty(requiredColumnsJSON)) {
	                    baseJSON.requiredColumns = requiredColumnsJSON;
	                }

	                if (!_.isEmpty(baseJSON) || !_.isEmpty(editorValuesJSON)) {
	                    baseJSON.editorValues = editorValuesJSON;
	                }

	                return baseJSON;
	            },

	            /**
	             * Interface method, you must override this method to ask the command to generate the current SPL for itself
	             */
	            generateSPL: function(options) {
	                throw new Error('You must override generateSPL in your command model.');
	            },

	            /**
	             * Ask the command to generate the current SPL for itself and set it
	             */
	            updateSPL: function(options) {
	                options = options || {};
	                _.defaults(options, {
	                    validate: true
	                });
	                // Some commands need context of the previous command in order to do their validation. And our
	                // validation plugin sucks and doesn't allow any way for us to pass options to any of our validation
	                // functions. So, we're setting the previousCommand on the model itself so validateSPL can do its
	                // checking. Then we remove it. This is dumb but what can you do.
	                this.previousCommand = options.previousCommand;

	                // Create the deferred and callback to run to validate and set the SPL
	                var dfd = null,
	                    setCallback = function() {
	                        var isComplete = false,
	                            spl,
	                            setReturnVal;

	                        if (!options.validate || this.isValid(true)) {
	                            isComplete = true;
	                            spl = this.generateSPL(options);
	                        } else {
	                            // Make sure that we force isComplete to be false and clear spl.
	                            // The set below will not set anything if validation fails
	                            this.set({
	                                isComplete: isComplete,
	                                spl: spl
	                            });
	                        }

	                        setReturnVal = this.set({
	                            isComplete: isComplete,
	                            spl: spl
	                        }, options);

	                        delete this.previousCommand;
	                        return setReturnVal;
	                    }.bind(this);

	                // If the flag is set to use the AST to validate an SPL query first
	                if (this._useAST) {
	                    // Get a new AST model
	                    this.ast = new TableAST();

	                    // We should only fetch the AST if we are told to validate. The contract is that you can have
	                    // AST validation checks on your validateSPL method, but those checks should pass if the AST has not
	                    // been fetched. Then, we will fetch the AST and in the callback we will validate with the fetched AST.
	                    if (options.validate && !this.validate()) {
	                        dfd = this.fetchAST({ applicationModel:  options.applicationModel });
	                    }

	                    // Run the set callback when the AST fetch is resolved
	                    $.when(dfd).always(function() {
	                        setCallback();
	                    }.bind(this));
	                } else {
	                    // If we don't need to use the AST, then run the callback immediately
	                    // And by not setting dfd, we will return a null deferred, which will resolve immediately
	                    setCallback();
	                }
	                return dfd;
	            },

	            // This will fetch the ast for the search as provided by the getASTSearchSPL function,
	            // overridden by individual commands
	            fetchAST: function(options) {
	                options = options || {};

	                // Return if the ast hasn't been previously created
	                if (!this.ast) {
	                    return null;
	                }
	                // Create a new AST Model to fetch the current SPL
	                var dfd = $.Deferred();

	                // Set the SPL provided by the overridden getASTSearchSPL function
	                this.ast.set({
	                    spl: this.getASTSearchSPL()
	                });

	                // Fetch the AST, resolving the deferred when completing the request
	                this.ast.fetch({
	                    data: {
	                        app: options.applicationModel && options.applicationModel.get('app'),
	                        owner: options.applicationModel && options.applicationModel.get('owner')
	                    },
	                    success: function(model, response) {
	                        dfd.resolve();
	                    }.bind(this),
	                    error: function(model, response) {
	                        // Need to defer rejecting this to allow error events to run
	                        _.defer(dfd.reject);
	                    }.bind(this)
	                });

	                // Return the deferred
	                return dfd;
	            },

	            // Defaults to the command's generateSPL(). Can override if you need more specific behavior.
	            getASTSearchSPL: function() {
	                return this.generateSPL({ skipValidation: true });
	            },

	            // Override this method for each Command Model that alters the Table's Columns
	            // with a routine to apply those changes to its own Columns Collection.
	            // Default: no-op
	            applyChangesToColumns: function(values, options) { },

	            // Each command can decide separately if it stops propagation of column changes and/or adds&removes&resets.
	            // Most commands don't need to worry about this, but some transforming commands do (see stats for example).
	            stopForwardChangePropagation: false,
	            stopForwardAddRemoveResetPropagation: false,

	            propagateColumnChange: function(changedColumn, options) {
	                var changedAttributes = changedColumn.changedAttributes();

	                if (changedAttributes && !_.isEmpty(changedAttributes)) {
	                    var matchedColumn = this.columns.get(changedColumn.id);

	                    if (matchedColumn && (!changedColumn.isTouchedByComparison(matchedColumn, options))) {
	                        matchedColumn.set(changedAttributes, options);
	                    }
	                }

	                return this;
	            },

	            propagateColumnAdd: function(addedColumn, options) {
	                return this.columns.add(addedColumn, options);
	            },

	            propagateColumnRemove: function(removedColumn, options) {
	                this.requiredColumns.remove(this.requiredColumns.get(removedColumn.id), options);
	                return this.columns.remove(removedColumn, options);
	            },

	            propagateColumnReset: function(newColumnsCollection, options) {
	                // NOTE: The default of this reset propagation is to force a SET of the columns
	                // set will do a smart update of the propagation
	                // YOU MUST OVERRIDE TO PROVIDE YOUR OWN USE OF PREVIOUS COMMANDS

	                return this.columns.set(newColumnsCollection.toJSON(), options);
	            },

	            validateForTypes: function(typesArray) {
	                var errorString,
	                    // Ignore _raw and _time types as fields cannot be retyped to those types, and user is unaware of those unique types.
	                    cleanedTypesArray = _.without(typesArray, ColumnModel.TYPES._RAW, ColumnModel.TYPES._TIME),
	                    typeLabelsArray = _.map(cleanedTypesArray, function(type) { return ColumnModel.TYPE_LABELS[type]; }),
	                    typesString = typeLabelsArray.join(_(', ').t());

	                this.requiredColumns.find(function(column) {
	                    var actualColumn = this.columns.get(column.id),
	                        matchedType = _.find(typesArray, function(type) {
	                            return actualColumn && (actualColumn.get('type') === type);
	                        }, this);
	                    if (!matchedType && actualColumn) {
	                        if (cleanedTypesArray.length > 1) {
	                            errorString = splunkUtils.sprintf(_("Field has type \"%s\" but must have one of types \"%s\".").t(), ColumnModel.TYPE_LABELS[actualColumn.get("type")], typesString);
	                        } else {
	                            errorString = splunkUtils.sprintf(_("Field has type \"%s\" but must have type \"%s\".").t(), ColumnModel.TYPE_LABELS[actualColumn.get("type")], typesString);
	                        }
	                    }
	                }.bind(this));

	                return errorString;
	            },

	            getWhitelistedTypes: function(options) {
	                options = options || {};
	                var typesList = _.values(ColumnModel.TYPES),
	                    // If the user passes in a selectionType, then use that blacklist. Else, default to looking at Column blacklist.
	                    blacklist = _.where(this.getBlacklist(), { selection: (options.selectionType || SELECTION.COLUMN) }),
	                    blacklistedTypes = blacklist.length && blacklist[0].types;
	                if (blacklist.length) {
	                    // Column is blacklisted for this command, so find whitelist by diffing all types and blacklisted types
	                    if (blacklistedTypes) {
	                        return _.difference(typesList, blacklistedTypes);
	                    } else {
	                        // All field types are blacklisted if types attr is unspecified
	                        return [];
	                    }
	                } else {
	                    // Column is not blacklisted for this command. All field types are whitelisted.
	                    return typesList;
	                }
	            },

	            getGuidForColIndex: function(colIndex) {
	                if (0 > colIndex || colIndex > (this.columns.length - 1)) {
	                    throw new Error('Provided an invalid colIndex argument to getGuidForColIndex - not in range');
	                }

	                return this.columns.at(colIndex).id;
	            },

	            getDisplayName: function() {
	                if (this._displayName) {
	                    return this._displayName;
	                }
	                throw new Error('You must set _displayName in your command model.');
	            },

	            getDisplaySPL: function(options) {
	                if (!this.isComplete()) {
	                    if (this._placeholderSPL) {
	                        return this._placeholderSPL;
	                    }
	                    throw new Error('You must set _placeholderSPL in your command model or override getDisplaySPL().');
	                }
	                return this.get('spl') || this.generateSPL(options);
	            },

	            isBaseCommand: function() {
	                return this.get('type') === Command.INITIAL_DATA;
	            },

	            isNew: function() {
	                return _.isUndefined(this.get('isComplete'));
	            },

	            isComplete: function() {
	                return (this.get('isComplete') === true);
	            },

	            isInvalid: function() {
	                return (!this.isNew() && !this.isComplete());
	            },

	            isDirty: function(commandPristine, options) {
	                options = options || {};
	                // Need to ignore attributes that have undefined values as these are
	                // not synced from command to commandPristine in setFromCommandJSON()
	                var workingAttributes = generalUtils.stripUndefinedAttrs(this.toJSON()),
	                    pristineAttributes = generalUtils.stripUndefinedAttrs(commandPristine.toJSON());

	                if (options.ignoreSortId) {
	                    // The "orderId" attribute on each of the editor values is just used for jQueryUI's sorting and
	                    // shouldn't be used for comparison at all.
	                    _.each(workingAttributes.editorValues, function(editorValue) {
	                        delete editorValue.orderId;
	                    }, this);
	                    _.each(pristineAttributes.editorValues, function(editorValue) {
	                        delete editorValue.orderId;
	                    }, this);
	                }

	                return !(_.isEqual(workingAttributes, pristineAttributes));
	            },

	            getBlacklist: function() {
	                return this.constructor.blacklist;
	            },

	            resetRequiredColumns: function(columnGuids) {
	                var newRequiredColumns = [];
	                _.each(columnGuids, function(guid) {
	                    if (_.isObject(guid)) {
	                        newRequiredColumns.push(new RequiredColumnModel(guid));
	                    } else  {
	                        newRequiredColumns.push(new RequiredColumnModel({ id: guid }));
	                    }
	                }, this);
	                this.requiredColumns.reset(newRequiredColumns);
	            },

	            convertGuidsToFields: function(guidArray, options) {
	                options = options || {};

	                return _.map(guidArray, function(guid) {
	                    return this.getFieldNameFromGuid(guid, options);
	                }, this);
	            },

	            getFieldNameFromGuid: function(guid, options) {
	                options = options || {};

	                var column = this.columns.get(guid),
	                    name;

	                if (!column) {
	                    return undefined;
	                }

	                name = column.get('name');

	                if (name && options.singleQuoteWrap) {
	                    return '\'' + name + '\'';
	                }

	                if (name && options.doubleQuoteWrap) {
	                    return '"' + name + '"';
	                }

	                return name;
	            },

	            isTypeBlacklisted: function(type) {
	                return _isTypeBlacklisted(type, this.getBlacklist(), this.fieldPickerBlacklistSelection);
	            },

	            getPreviousColumns: function() {
	                if (this.collection) {
	                    return this.collection.getPreviousCommandColumns(this);
	                }
	            },

	            getAddedColumnGuids: function(options) {
	                options = options || {};
	                var comparisonColumnsCollection = options.comparisonColumnsCollection || this.getPreviousColumns();

	                if (comparisonColumnsCollection && comparisonColumnsCollection.length) {
	                    return _.difference(this.columns.pluck('id'), comparisonColumnsCollection.pluck('id'));
	                }
	            },

	            /*
	               This function helps the editor forms figure out if a column to add has a name collision with another
	               column in the table, either in this command or in a future command.
	               BY DEFAULT, this returns the value for the 'newFieldName' attribute on the command model, but if you
	               have more specific behavior (ex: commands/Join), you MUST override this!
	             */
	            getFieldsToAddAsArray: function() {
	                var newFieldName = this.get('newFieldName');

	                if (newFieldName) {
	                    return [ newFieldName ];
	                }
	            },

	            // Asking for an editor value ID increments the internal counter.
	            // This helps the editor values' sort order in the command editor.
	            // This is only called in BaseSortable editor, and this._editorValueId should only be initialized in
	            // command models that use BaseSortable editors.
	            getUniqueEditorValueId: function() {
	                if (_.isUndefined(this._editorValueId)) {
	                    this._editorValueId = 1;
	                } else {
	                    this._editorValueId++;
	                }
	                return this._editorValueId.toString();
	            },

	            /*
	               If you want to validate collision fields, just add 'collisionFields: "validateCollisionFields"' in the
	               validation hash in your command model.
	             */
	            validateCollisionFields: function() {
	                var collisionFields = this.get('collisionFields');

	                if (collisionFields && collisionFields.length) {
	                    return splunkUtils.sprintf(_('The field(s) %s share the same name as another field in your table and cannot be added.').t(), collisionFields.join(', '));
	                }
	            },

	            hasValidRequiredColumn: function() {
	                var requiredColumn = this.requiredColumns.first();

	                // Verify there is a required column, with an ID
	                if (!requiredColumn || requiredColumn.isNew()) {
	                    return false;
	                }

	                return true;
	            },

	            // Calls into util in order to standardize error message
	            validateFieldName: function(string) {
	                if (!datasetUtils.isValidFieldName(string)) {
	                    return _('Field names cannot be blank, start with an underscore, or contain quotes, backslashes, or spaces.').t();
	                }
	            },

	            validateRexFieldName: function(string) {
	                if (!datasetUtils.isValidRexFieldName(string)) {
	                    return _('Field names for this command cannot be blank, start with an underscore, or contain any non-alphanumeric characters.').t();
	                }
	            },

	            validateReferencedFieldsExistence: function() {
	                var referencedFieldNames,
	                    allReferencedFieldsExist,
	                    commandColumns;

	                // We have to look to the previous command's columns to figure out what fields can be referenced in the
	                // expression. First, see if this.previousCommand was set on the model (happens for inmem commands that
	                // we're trying to validate). Then see if we can just grab the previous command if it's already in a
	                // collection. Fallback is just using this.columns, but I don't think that should ever happen.
	                if (this.previousCommand) {
	                    commandColumns = this.previousCommand.columns;
	                } else if (this.collection) {
	                    commandColumns = this.getPreviousColumns();
	                } else {
	                    commandColumns = this.columns;
	                }

	                if (this.ast) {
	                    referencedFieldNames = this.ast.getReferencedFieldsNameList();
	                    allReferencedFieldsExist = _.all(referencedFieldNames, function(name) {
	                        return !!commandColumns.findWhere({ name: name });
	                    }.bind(this));

	                    if (!allReferencedFieldsExist) {
	                        return _('The expression references one or more fields that are not in the table.').t();
	                    }
	                }
	            },

	            // Interface for updating required columns, no-op unless defined
	            updateRequiredColumns: function() { },

	            updateRequiredColumnsFromReferencedASTFields: function(columnsToRetain) {
	                columnsToRetain = columnsToRetain || [];

	                var referencedFieldNames,
	                    referencedColumnIds;

	                if (this.ast) {
	                    referencedFieldNames = this.ast.getReferencedFieldsNameList();
	                    referencedColumnIds = _.compact(_.map(referencedFieldNames, function(name) {
	                        var foundColumn = this.columns.findWhere({ name: name });

	                        if (foundColumn) {
	                            return { id: foundColumn.id };
	                        }
	                    }.bind(this)));
	                }

	                this.requiredColumns.reset(columnsToRetain.concat(referencedColumnIds || []));
	            },

	            getAdvancedCommandJSON: function() {
	                return $.extend(true, {}, this.getAdvancedCommandAttributes(), {
	                    type: this._advancedCommand,
	                    selectedColumns: this.requiredColumns.pluck('id'),
	                    columns: this.columns.toJSON(),
	                    isComplete: this.isComplete()
	                });
	            },

	            /*
	              Interface for commands that can be escaped to an advanced version. Must be implemented for those commands.
	              Maps the attributes in the normal version to the advanced one.
	             */
	            getAdvancedCommandAttributes: function() {
	                throw new Error('Tried to get advanced command attributes for a command that doesn\'t have an advanced version!');
	            }
	        }, {
	            Columns: ColumnsCollection,
	            RequiredColumns: RequiredColumnsCollection,
	            EditorValues: BaseCollection,
	            /*
	             *
	             * Command names go here to keep them consistent
	             *
	             */
	            INITIAL_DATA: 'initialdata',
	            SORT: 'sort',
	            RENAME: 'rename',
	            TRUNCATE: 'truncate',
	            JOIN: 'join',
	            REPLACE: 'replace',
	            DEDUP: 'dedup',
	            EXTRACT_DATE_TIME: 'extractDateTime',
	            REMOVE: 'remove',
	            REX: 'rex',
	            FILTER_VALUES: 'filtervalues',
	            REMOVE_NON_NUMERICAL_VALUES: 'removenonnumericalvalues',
	            FILL_VALUES: 'fillvalues',
	            EVAL: 'eval',
	            EVAL_EXISTING_FIELD: 'evalexisting',
	            RANGEMAP: 'rangemap',
	            SEARCH: 'search',
	            CONCATENATE: 'concatenate',
	            DUPLICATE: 'duplicate',
	            STATS: 'stats',
	            CHANGE_CASE: 'changecase',
	            FILTER_REGEX: 'filterregex',
	            ADVANCED_REX: 'advancedrex',
	            COALESCE: 'coalesce',
	            WHERE: 'where',
	            SPLIT: 'split',
	            CALCULATE_FIELD: 'calculatefield',
	            ROUND: 'round',
	            BUCKET: 'bucket',
	            REPLACE_MISMATCHED_TYPES: 'replacemismatchedtypes',
	            FILTER_MISMATCHED_TYPES: 'filtermismatchedtypes',

	            SELECTION: SELECTION,
	            blacklist: [],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    isComplete: undefined
	                });
	            },
	            isTypeBlacklisted: function(type, blacklist, selection) {
	                return _isTypeBlacklisted(type, blacklist, selection);
	            }
	        });

	        return Command;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/TableAST":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/services/search/AST")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseAST
	    ) {
	    var TableAST = BaseAST.extend({
	        initialize: function() {
	            BaseAST.prototype.initialize.apply(this, arguments);
	        },
	        
	        getInterestingFields: function(options) {
	            options = options || {};
	            
	            var ast = this.get('ast'),
	                fields;
	            
	            if (ast && ast['annotations'] && ast['annotations']['interesting_fields']) {
	                fields = ast['annotations']['interesting_fields'];
	            }

	            if (options.withoutUnfixed) {
	                return _.filter(fields, function(field) {
	                    return field.name !== TableAST.UNFIXED_NAME;
	                });
	            }
	            
	            return fields;
	        },

	        getFields: function() {
	            var ast = this.get('ast'),
	                fields;

	            if (ast && ast['fields_and_properties']) {
	                fields = ast['fields_and_properties'];
	            }

	            return fields;
	        },

	        getReferencedFields: function() {
	            var fields = this.getFields(),
	                referencedFields;

	            if (fields) {
	                referencedFields = _.where(fields, { referenced:  true });
	            }

	            return referencedFields;
	        },

	        getReferencedFieldsNameList: function() {
	            return _.pluck(this.getReferencedFields(), 'name');
	        },

	        getRemovedFields: function() {
	            var fields = this.getFields(),
	                removedFields;

	            if (fields) {
	                removedFields = _.where(fields, { removed:  true });
	            }

	            return removedFields;
	        },
	        
	        getRemovedFieldsNameList: function() {
	            return _.pluck(this.getRemovedFields(), 'name');
	        },

	        getModifiedFields: function() {
	            var fields = this.getFields(),
	                modifiedFields;

	            if (fields) {
	                modifiedFields = _.where(fields, { modified:  true });
	            }

	            return modifiedFields;
	        },
	        
	        getModifiedFieldsNameList: function() {
	            return _.pluck(this.getModifiedFields(), 'name');
	        },
	        
	        isTableable: function() {
	            var ast = this.get('ast');
	            
	            if (ast) {
	                return this.isFixed() || !this.isTransforming();
	            }
	            
	            return false;
	        },
	        
	        isFixed: function() {
	            var interestingFields = this.getInterestingFields(),
	                notFixed;
	                
	            if (!interestingFields || _.isEmpty(interestingFields)) {
	                return false;
	            }
	            
	            notFixed = _.find(interestingFields, function(field) {
	                return field.name === TableAST.UNFIXED_NAME;
	            });
	            
	            return !notFixed;
	        },
	        
	        setActionsDefaults: function(options) {
	            return this.actions.reset([
	                {
	                    name: 'get_interesting_fields'
	                },
	                {
	                    name: 'annotate_datasets'
	                }
	            ], options);
	        },
	        
	        hasError: function() {
	            var messages = this.error.get('messages');
	            return !!messages && !!messages.length;
	        },
	        
	        getFromCommandObjectPayloads: function() {
	            var ast = this.get('ast'),
	                foundFromNodeList,
	                payloads = [];
	            
	            if (!ast) {
	                return payloads;
	            }
	            
	            foundFromNodeList = this.findCommandNodes('from');
	            
	            while (foundFromNodeList && foundFromNodeList.length) {
	                // set the AST to the expanded AST of the extended dataset
	                ast = foundFromNodeList[0].object.search.ast;
	                
	                if (ast) {
	                    if (ast.command !== 'inputlookup') {
	                        ast = ast.object;
	                    }
	                    
	                    // Note that you can only call | from once in a search at the beginning
	                    // so the node list is only going to be length one
	                    payloads.unshift(ast);
	                    
	                    // search the extended dataset for another from command
	                    if (ast && ast.search && ast.search.ast) {
	                        foundFromNodeList = this.findCommandNodes('from', ast.search.ast);
	                    } else {
	                        foundFromNodeList = undefined;
	                    }
	                } else {
	                    foundFromNodeList = undefined;
	                }
	            }
	            
	            return payloads;
	        },

	        getFieldPickerItems: function() {
	            return _.map(this.getInterestingFields({ withoutUnfixed: true }), function(field) {
	                return { value: field.name };
	            }, this);
	        }
	    }, {
	        UNFIXED_NAME: '*'
	    });
	    
	    return TableAST;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/search/AST":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("collections/Base"),
	        __webpack_require__("util/splunkd_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseModel,
	        BaseCollection,
	        splunkDUtils
	    ) {
	    var AST = BaseModel.extend({
	        url: 'search/ast',
	        
	        initialize: function() {
	            BaseModel.prototype.initialize.apply(this, arguments);
	            
	            this.initializeAssociated();
	            this.setActionsDefaults();
	        },
	        
	        initializeAssociated: function() {
	            // do a dynamic lookup of the current constructor so that this method is inheritance-friendly
	            var RootClass = this.constructor;
	            this.associated = this.associated || {};
	            
	            //associated
	            this.actions = this.actions || new RootClass.ActionsCollection();
	            this.associated.actions = this.actions;
	        },
	        
	        sync: function(method, model, options) {
	            var syncOptions, attrs;
	            
	            // You must always use the AST model with fetch
	            if (method !== 'read') {
	                throw new Error('Sync operation not supported: ' + method);
	            }
	            
	            options = $.extend(true, {}, options, {
	                // these URLs can be quite long, so we make this request by POST
	                type: 'POST',
	                contentType: 'application/json; charset=utf-8',
	                dataType: 'json'
	            });
	            
	            // Will remove the data.app, data.owner, and data.sharing
	            syncOptions = splunkDUtils.prepareSyncOptions(options, model.url);
	            
	            // get the json attrs from the model
	            attrs = syncOptions.attrs || model.toJSON(syncOptions);
	            
	            // make sure to prepare the options for the POST so they don't 
	            // get from encoded
	            syncOptions.data = JSON.stringify(attrs);
	            
	            return BaseModel.prototype.sync.call(this, 'read', model, syncOptions);
	        },
	        
	        toJSON: function(options) {
	            var baseJSON = BaseModel.prototype.toJSON.apply(this, arguments),
	                actionsJSON = this.actions.toJSON(options);
	            
	            if (!_.isEmpty(actionsJSON)) {
	                baseJSON.actions = actionsJSON;
	            }
	            
	            return baseJSON;
	        },
	        
	        setActionsDefaults: function(options) {
	            // Override to set your default actions
	        },
	        
	        clear: function(options) {
	            options = options || {};
	            
	            // Default the reset of the actions to get the default visitors for the AST
	            _.defaults(options, { setDefaults: true });
	            
	            BaseModel.prototype.clear.apply(this, arguments);
	            
	            if (options.setDefaults) {
	                this.setActionsDefaults(options);
	            }
	            
	            return this;
	        },
	        
	        // recursive search for a nodes that match a command
	        findCommandNodes: function(command, ast) {
	            var list = [];
	            
	            ast = ast || this.get('ast');
	            
	            if (!ast || !command) {
	                return list;
	            }
	            
	            this.recursiveFindCommandNodes(ast, command, list);
	            
	            return list;
	        },
	        
	        recursiveFindCommandNodes: function(ast, command, list) {
	            if (!ast) {
	                return;
	            }
	            
	            if (ast.command === command) {
	                list.push(ast);
	            }
	            
	            _.each(ast.sources, function(subAst) {
	                return this.recursiveFindCommandNodes(subAst, command, list);
	            }.bind(this));
	        },

	        isTransforming: function() {
	            var ast = this.get('ast');

	            if (ast) {
	                return (ast.pipeline === 'report') || (ast.pipeline === 'streamreport');
	            }

	            return false;
	        }
	        
	    }, {
	        ActionsCollection: BaseCollection
	    });
	    
	    return AST;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "collections/datasets/Columns":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("collections/Base"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function (
	        _,
	        $,
	        BaseCollection,
	        ColumnModel,
	        splunkUtils
	    ) {
	        var EXTERNAL_FIELD_REGEX = /^[^_]/,
	            INITIAL_COLUMNS = [
	                {
	                    type: ColumnModel.TYPES._TIME,
	                    name: '_time'
	                }, {
	                    type: ColumnModel.TYPES._RAW,
	                    name: '_raw'
	                }
	            ];

	        return BaseCollection.extend({
	            model: ColumnModel,
	            
	            initialize: function() {
	                BaseCollection.prototype.initialize.apply(this, arguments);
	            },
	            
	            sync: function(method, model, options) {
	                throw new Error('sync not allowed for the Column collection');
	            },
	            
	            columnsListToString: function() {
	                return splunkUtils.fieldListToString(this.map(function(column) {
	                    return column.get('name');
	                }));
	            },

	            // Filters out internal (_-prefixed) fields
	            getExternalFields: function() {
	                return this.map(function(column) {
	                    return column.get('name');
	                }).filter(this.isExternalField, this);
	            },

	            isExternalField: function(fieldName) {
	                return EXTERNAL_FIELD_REGEX.test(fieldName);
	            },

	            // If _raw and/or _time are not added, this function will add them as columns.
	            // Can pass a pristine columns collection so the guids are preserved, if you'd like.
	            setInitialColumns: function(options) {
	                options = options || {};

	                var rawColumn = this.findWhere({ name: '_raw' }),
	                    timeColumn = this.findWhere({ name: '_time' });

	                if (!rawColumn) {
	                    this.addColumn({
	                        columnName: '_raw',
	                        pristineColumns: options.pristineColumns
	                    });
	                }

	                if (!timeColumn) {
	                    this.addColumn({
	                        columnName: '_time',
	                        pristineColumns: options.pristineColumns
	                    });
	                }
	            },

	            setExtraColumns: function(options) {
	                options = options || {};

	                var indexColumn, sourcetypeColumn;

	                if (options.includeIndex) {
	                    indexColumn = this.findWhere({ name: 'index' });
	                    if (!indexColumn) {
	                        this.addColumn({
	                            columnName: 'index',
	                            pristineColumns: options.pristineColumns
	                        });
	                    }
	                }

	                if (options.includeSourcetype) {
	                    sourcetypeColumn = this.findWhere({ name: 'sourcetype' });
	                    if (!sourcetypeColumn) {
	                        this.addColumn({
	                            columnName: 'sourcetype',
	                            pristineColumns: options.pristineColumns
	                        });
	                    }
	                }
	            },

	            // Adds a column to the collection. Main benefits over using Backbone's add include:
	            //   - Preservation of guids/type if you pass in a pristineColumns collection
	            //   - Use of the comparator to insert in the correct position
	            //   - Can determine what type to use based on a fields summary model
	            addColumn: function(options) {
	                options = options || {};
	                _.defaults(options, {
	                    useComparator: true,
	                    deleteComparator: true
	                });

	                var pristineColumns = options.pristineColumns,
	                    columnName = options.columnName,
	                    fieldsSummaryModel = options.fieldsSummaryModel,
	                    pristineColumn,
	                    pristineColumnId,
	                    pristineColumnType,
	                    addedColumn;

	                if (pristineColumns) {
	                    pristineColumn = this.findPristineColumn(pristineColumns, columnName);
	                    pristineColumnId = pristineColumn && pristineColumn.id;
	                    pristineColumnType = pristineColumn && pristineColumn.get('type');
	                }

	                if (options.useComparator) {
	                    this.useComparator({
	                        comparator: options.comparator
	                    });
	                }

	                if (pristineColumnId) {
	                    addedColumn = this.add({
	                        name: columnName,
	                        type: pristineColumnType,
	                        id: pristineColumnId
	                    });
	                } else {
	                    addedColumn = this.add({
	                        name: columnName,
	                        type: this.determineTypeForColumn({
	                            columnName: columnName,
	                            fieldsSummaryModel: fieldsSummaryModel
	                        })
	                    });
	                }

	                if (options.deleteComparator) {
	                    this.deleteComparator();
	                }

	                return addedColumn;
	            },

	            // Adds columns to the collection. Main benefits over using Backbone's add include:
	            //   - Preservation of guids/type if you pass in a pristineColumns collection
	            //   - Use of the comparator to insert in the correct position
	            //   - Can determine what type to use based on a fields summary model
	            addColumns: function(columns, options) {
	                // Create a fresh copy, in order to avoid altering the initially passed in columns
	                var addResults,
	                    columnsCopy = (columns || []).slice();
	                options = options || {};
	                _.defaults(options, {
	                    useComparator: true,
	                    deleteComparator: true
	                });

	                if (columnsCopy.length === 0) {
	                    return;
	                // Only call add column if its not a model
	                } else if (columnsCopy.length === 1 && !(columnsCopy[0] instanceof ColumnModel)) {
	                    // Just adding a singular column, so merge everything in together
	                    return this.addColumn($.extend(true, {}, columnsCopy[0], options));
	                }

	                if (options.useComparator) {
	                    this.useComparator({
	                        comparator: options.comparator
	                    });
	                }

	                _.each(columnsCopy, function(column, idx) {
	                    var pristineColumn;
	                    // If this is a column model, check if there is a matching pristine model
	                    if (column instanceof ColumnModel) {
	                        pristineColumn = this.findPristineColumn(options.pristineColumns, column.get('name'));
	                        if (pristineColumn) {
	                            columnsCopy[idx] = new ColumnModel($.extend(true, column.toJSON(), {
	                                type: pristineColumn.get('type'),
	                                id: pristineColumn.id
	                            }));
	                        }
	                    } else {
	                        pristineColumn = this.findPristineColumn(options.pristineColumns, column.columnName);
	                        if (pristineColumn) {
	                            column.id = pristineColumn.id;
	                            column.type = pristineColumn.get('type');
	                        } else {
	                            column.type = this.determineTypeForColumn({
	                                columnName: column.columnName,
	                                fieldsSummaryModel: column.fieldsSummaryModel
	                            });
	                        }
	                        column.name = column.columnName;
	                        // Clear out these values to avoid having them set on the models themselves
	                        delete column.columnName;
	                        delete column.fieldsSummaryModel;
	                    }
	                }.bind(this));
	                
	                addResults = this.add(columnsCopy);

	                if (options.deleteComparator) {
	                    this.deleteComparator();
	                }
	                return addResults;
	            },

	            findPristineColumn: function(pristineColumns, columnName) {
	                return pristineColumns ?  pristineColumns.findWhere({ name: columnName }) : undefined;
	            },

	            // Can pass in a fieldsSummaryModel to help in determining the type. Defaults to string.
	            determineTypeForColumn: function(options) {
	                options = options || {};

	                var columnName = options.columnName,
	                    fieldsSummaryModel = options.fieldsSummaryModel,
	                    columnType;

	                if (columnName === '_raw') {
	                    columnType = ColumnModel.TYPES._RAW;
	                } else if (columnName === '_time') {
	                    columnType = ColumnModel.TYPES._TIME;
	                } else {
	                    if (fieldsSummaryModel && fieldsSummaryModel.isNumeric()) {
	                        columnType = ColumnModel.TYPES.NUMBER;
	                    } else {
	                        columnType = ColumnModel.TYPES.STRING;
	                    }
	                }

	                return columnType;
	            },

	            // Enables the comparator for addition or sorting. Can pass your own comparator if you don't want the default.
	            useComparator: function(options) {
	                options = options || {};

	                if (options.comparator) {
	                    this.comparator = options.comparator;
	                } else {
	                    this.comparator = this.defaultComparator;
	                }
	            },

	            deleteComparator: function() {
	                delete this.comparator;
	            },

	            // Columns are sorted as follows:
	            //   - _time, if present, is always in the beginning
	            //   - _raw, if present, is always at the end
	            //   - all other columns are sorted between _time and _raw by lowercase name
	            defaultComparator: function(columnOne, columnTwo) {
	                var columnOneName = columnOne.get('name').toLowerCase(),
	                    columnTwoName = columnTwo.get('name').toLowerCase();

	                if (columnOneName === '_time' || columnTwoName === '_raw') {
	                    return -1;
	                }

	                if (columnOneName === '_raw' || columnTwoName === '_time') {
	                    return 1;
	                }

	                if (columnOneName < columnTwoName) {
	                    return -1;
	                } else {
	                    return 1;
	                }
	            }
	        }, {
	            INITIAL_COLUMNS: INITIAL_COLUMNS
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "collections/datasets/RequiredColumns":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("collections/Base"),
	        __webpack_require__("models/datasets/RequiredColumn")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function (
	        BaseCollection,
	        RequiredColumnModel
	    ) {
	        return BaseCollection.extend({
	            model: RequiredColumnModel,

	            initialize: function() {
	                BaseCollection.prototype.initialize.apply(this, arguments);
	            },

	            sync: function(method, model, options) {
	                throw new Error('sync not allowed for the Required Columns collection');
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/datasets/RequiredColumn":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/Base")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseModel
	    ) {
	        // Please do not add values to required columns.  But if necessary, whitelist them here :)
	        var _whiteList = [
	            "id",
	            "order",
	            "columnToJoinWith"
	        ];
	        return BaseModel.extend({
	            initialize: function(attributes, options) {
	                BaseModel.prototype.initialize.apply(this, arguments);

	                this.on('add', function(model, collection, options) {
	                    if (!this.hasValidAttributes(model)) {
	                        throw new Error('not allowed to add with any values on required columns other than ID');
	                    }
	                }.bind(this));

	                this.on('change', function(model, options) {
	                    if (!this.hasValidAttributes(model)) {
	                        throw new Error('not allowed to set any values on required columns other than ID');
	                    }
	                }.bind(this));
	            },

	            sync: function(method, model, options) {
	                throw new Error('sync not allowed for the Required Column model');
	            },

	            hasValidAttributes: function(model) {
	                var attrs = _.reject(_.keys(model.attributes), function(key) {
	                    return _.contains(_whiteList, key);
	                });
	                return !attrs.length;
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "util/dataset_utils":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("util/math_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        mathUtils
	    ) {
	        return {
	            isIPV4: function(string) {
	                return /^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/.test(string);
	            },

	            // The only boolean types that are compatible with Pivot are true | false.
	            isBoolean: function(string) {
	                return /^true$|^false$/.test(string);
	            },

	            isNumber: function(string) {
	                return !_.isNaN(mathUtils.strictParseFloat(string));
	            },

	            isInteger: function(string) {
	                return mathUtils.strictParseFloat(string) % 1 === 0;
	            },

	            isEpochTime: function(string) {
	                // While epoch time can technically be negative, Splunk doesn't handle that well
	                return /^\d+\.?\d{0,3}$|^\d*\.\d{0,3}$/.test(string);
	            },

	            // Enforcing three rules:
	            //  - no fields that start with underscores. they're reserved for Splunk internal fields, and any fields that
	            //    start with underscores don't get returned by the summary endpoint.
	            //  - no whitespace. a user might assume that spaces are valid everywhere in Splunk if they're valid in
	            //    table UI, and many commands don't work with whitespace in fields. (we make sure to quote wrap)
	            //  - no quotes. since we're quote wrapping, the user shouldn't add any of their own quotes.
	            //  - no backslashes. these require quote wrapping and escaping, and so are bad practice in SPL.
	            isValidFieldName: function(string) {
	                return !((_.isEmpty(string)) || (string.charAt(0) === '_') || (/[\s\'\"\\]/.test(string)));
	            },

	            // Currently, the rex command can't handle extracting into a field name that consists of any non-alphanumeric
	            // characters. So, we have to be stricter for Rex and AdvancedRex here. See SPL-104386 / SPL-127748.
	            isValidRexFieldName: function(string) {
	                return !_.isEmpty(string) && /^[A-Za-z0-9][\w]*$/.test(string);
	            },

	            // Inserts a backslash in front of backslashes and double quotes to follow escaping rules for SPL syntax
	            splEscape: function(string) {
	                return string
	                    .replace(/\\/g, '\\\\')
	                    .replace(/"/g, '\\"');
	            }
	        };
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/datamodel/DataModel":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * A model representing an individual data model.
	 *
	 * For a description of the backing endpoint, see: http://eswiki.splunk.com/Data_Model_JSON_Specification
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	            __webpack_require__("shim/jquery"),
	            __webpack_require__("require/underscore"),
	            __webpack_require__("require/backbone"),
	            __webpack_require__("models/Base"),
	            __webpack_require__("models/datamodel/DataModelWhiteList"),
	            __webpack_require__("models/SplunkDBase"),
	            __webpack_require__("models/services/datamodel/private/Acceleration"),
	            __webpack_require__("models/services/datamodel/private/Object"),
	            __webpack_require__("collections/services/datamodel/private/ObjectHierarchy"),
	            __webpack_require__("util/console"),
	            __webpack_require__("util/splunkd_utils"),
	            __webpack_require__("util/general_utils"),
	            __webpack_require__("shim/splunk.util")
	        ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	            $,
	            _,
	            Backbone,
	            BaseModel,
	            DataModelWhiteList,
	            SplunkDBase,
	            Acceleration,
	            DataModelObject,
	            ObjectHierarchy,
	            console,
	            splunkDUtils,
	            generalUtils,
	            splunkUtil
	        ) {

	    var CONSTS = {
	        BASE_EVENT : "BaseEvent",
	        BASE_TRANSACTION : "BaseTransaction",
	        BASE_SEARCH : "BaseSearch",
	        DOCUMENT_TYPES: {
	            DATAMODEL: 'datamodel',
	            TABLE: 'table'
	        },
	        DATASET_DISPLAY_TYPES: {
	            TABLE: _('table').t(),
	            DATA_MODEL: _('data model').t()
	        }
	    };

	    var DataModel = SplunkDBase.extend({

	        initialize: function(attributes, options) {
	            options = options || {};
	            options.splunkDWhiteList = options.splunkDWhiteList ?
	                options.splunkDWhiteList : new DataModelWhiteList();

	            SplunkDBase.prototype.initialize.call(this, attributes, options);
	        },

	        /**
	         *  Returns the data model's object hierarchy as a flattened list of object literals with basic attributes.
	         *
	         *  For a full description of the structure returned, see the depthFirstMap method in the
	         *  "collections/services/datamodel/private/ObjectHierarchy" module
	         *
	         *  @return {Array}
	         */

	        getFlattenedHierarchy: function() {
	            return (this.entry.content.objects.depthFirstMap(function(obj) {
	                return obj.getBasicAttributes();
	            }));
	        },

	        /**
	         * Returns a processed version fo the result of getFlattenedHierarchy.
	         * Add an "isPivotable" boolean attribute to each object.
	         */

	        getPivotableHierarchy: function() {
	            return _(this.getFlattenedHierarchy()).map(function(obj) {
	                obj.isPivotable = this.objectByName(obj.objectName).isPivotable();
	                return obj;
	            }, this);
	        },

	        /**
	         * Returns the flattened object hierarchy (see getFlattenedHierarchy above) and divides it into sub-hieararchies,
	         * one for each of the abstract base object types.
	         *
	         * The data structure returned is a dictionary of base object names mapping to sub-hierarchies.
	         *
	         * @return {Object}
	         */

	        getGroupedFlattenedHierarchy: function() {
	            var groupedObjects = _(this.getFlattenedHierarchy()).groupBy(function(obj) {
	                return obj.rootParent;
	            });

	            var returnObject = {};
	            returnObject[CONSTS.BASE_EVENT] = groupedObjects[CONSTS.BASE_EVENT] || [];
	            returnObject[CONSTS.BASE_TRANSACTION] = groupedObjects[CONSTS.BASE_TRANSACTION] || [];
	            returnObject[CONSTS.BASE_SEARCH] = groupedObjects[CONSTS.BASE_SEARCH] || [];

	            return returnObject;
	        },

	        getObjectCount: function() {
	            return this.entry.content.objects.length;
	        },

	        // since the model can be fetched in "concise" mode without the collection of objects,
	        // this method provides a way to get the count of objects from the "objectSummary"
	        // NOTE: dynamically added/removed objects will not be reflected in this count
	        getSummarizedObjectCount: function() {
	            // the groups are mutually exclusive, so we can just add up all of the counts
	            return _(this.entry.content.objectSummary.toJSON()).reduce(function(runningTotal, groupCount) {
	                return runningTotal + groupCount;
	            }, 0);
	        },

	        isEmpty: function() {
	            return this.getSummarizedObjectCount() === 0;
	        },

	        /**
	         * Returns true if the data model is privately shared
	         * @return {Boolean}
	         */
	        isPrivate: function() {
	            return this.entry.acl.get("sharing") == splunkDUtils.USER;
	        },
	        /**
	         * Returns true if the data model was generated from an sid and has not been saved to the back end.
	         * @returns {boolean}
	         */
	        isTemporary: function() {
	            return this.has('sid');
	        },
	        /**
	         * Returns true if the REST API tells us the model can be accelerated.
	         * @return {Boolean}
	         */
	        canAccelerate: function() {
	            return splunkUtil.normalizeBoolean(this.entry.content.get("acceleration.allowed"));
	        },

	        /**
	         * Returns true if the user can change the model's permissions
	         * @return {Boolean}
	         */
	        canChangePermissions: function() {
	            return this.entry.acl.get('can_change_perms');
	        },

	        /**
	         * Returns true if the model can be deleted.
	         *
	         * @return {Boolean}
	         */
	        canDelete: function() {
	            return this.entry.links.get("remove") ? true : false;
	        },

	        /**
	         * Returns true if the model can be edited.
	         * @return {Boolean}
	         */
	        canWrite: function() {
	            return this.entry.acl.get('can_write') ? true : false;
	        },

	        getType: function() {
	            return this.entry.content.get("dataset.type") === CONSTS.DOCUMENT_TYPES.TABLE ?
	                CONSTS.DOCUMENT_TYPES.TABLE : CONSTS.DOCUMENT_TYPES.DATAMODEL;
	        },

	        getDatasetDisplayType: function() {
	            if (this.getType() === CONSTS.DOCUMENT_TYPES.TABLE) {
	                return CONSTS.DATASET_DISPLAY_TYPES.TABLE;
	            } else {
	                return CONSTS.DATASET_DISPLAY_TYPES.DATA_MODEL;
	            }
	        },

	        isAccelerated: function() {
	            return this.entry.content.acceleration ? (this.entry.content.acceleration.get("enabled") ? true : false) : false;
	        },

	        getAncestorsForObject: function(objectName) {
	            return this.entry.content.objects.getAncestorsForObject(objectName);
	        },

	        /**
	         * @param objName {String} - the objectName of an object to look up in the hierarchy
	         * @return {Model} - a reference to the object, or undefined if it's not there
	         */

	        objectByName: function(objName) {
	            return this.entry.content.objects.get(objName);
	        },

	        objectByLineage: function(lineage) {
	            var objects = lineage.split(".");

	            if (objects.length > 0) {
	                return this.objectByName(objects[objects.length-1]);
	            }

	            return undefined;
	        },

	        /**
	         * Adds a new object with the given attributes to the data model and returns a reference to it.
	         *
	         * @param attributes {Object} - an object literal with the attributes to construct the new object model
	         * @param options {Object} - options to pass to the collection add method ("at" will be ignored)
	         * @return {Model} - the newly created object model
	         */

	        addObject: function(attributes, options) {
	            // TODO: maybe throw an error if objectName or parentName are not defined
	            // TODO [JCS] Allow adding to a transaction, event or search
	            if(!attributes.parentName) {
	                console.warn('DataModel: addObject called with no parent name specified, using BaseEvent as a default');
	                attributes.parentName = CONSTS.BASE_EVENT;
	            }
	            var objects = this.entry.content.objects,
	                beforeLength = objects.length;

	            // not supporting adding objects at a particular index, so delete the 'at' option
	            options = options || {};
	            delete options.at;
	            objects.add(attributes, options);
	            // the new object is at the end of the collection, so look it up based on the original length and return it
	            return objects.at(beforeLength);
	        },

	        /**
	         * Removes an object and its children from the data model.
	         *
	         * A no-op if the model is currently in the data model.
	         *
	         * @param object {Model} - the object model instance to be removed
	         */

	        removeObjectAndChildren: function(object) {
	            object.withEachDescendant(function(child) {
	                this.entry.content.objects.remove(child, { silent: true });
	            }, this);
	            this.entry.content.objects.remove(object);
	        },

	        // ------ sync behavior ---- //

	        url: 'datamodel/model',
	        generateUrl: 'datamodel/generate',

	        sync: function(method, model, options) {
	            options = options || {};
	            options.data = options.data || {};
	            // If an sid is included in the params for a fetch, populate the data model using the generate-from-sid endpoint.
	            if (method === 'read' && options.data.sid) {
	                options = $.extend(true, { output_mode: 'json' }, options);
	                options = splunkDUtils.prepareSyncOptions(options, model.generateUrl);
	                // The fields and field_coverage options are mutually exclusive, let fields trump field_coverage.
	                if(options.data.fields) {
	                    delete options.data.field_coverage;
	                }
	                return Backbone.Model.prototype.sync.call(this, method, model, options);
	            }
	            
	            if (method === 'read' && options.data.dataset) {
	                if (!options.data.type) {
	                    throw new Error('type is required when generating a data model from a dataset');
	                }
	                options = $.extend(true, { output_mode: 'json' }, options);
	                options = splunkDUtils.prepareSyncOptions(options, model.generateUrl);
	                options.data.dataset = options.data.type + ':' + options.data.dataset;
	                delete options.data.type;
	            }
	            
	            return SplunkDBase.prototype.sync.apply(this, arguments);
	        },

	        initializeAssociated: function() {
	            SplunkDBase.prototype.initializeAssociated.call(this);
	            var content = this.entry.content;

	            if (!content.objects) {
	                content.objects = content.associated.objects = new ObjectHierarchy();
	                content.objects.on("change associatedChange add remove update reset",
	                                function(model, options) {this.trigger("associatedChange", model, options);}, this);
	            }

	            content.objectSummary = content.associated.objectSummary = content.objectSummary || new BaseModel();
	            content.acceleration = content.associated.acceleration = content.acceleration || new Acceleration();
	        },

	        clone: function() {
	            // TODO [sff] this is horrible...
	            // have to set a temporary flag or if the model is accelerated it will not clone itself correctly
	            this.entry.content.isCloning = true;
	            var clone = new this.constructor();
	            clone.setFromSplunkD(this.toSplunkD());
	            // TODO [sff] do we have to call this?
	            clone.entry.content.objects.buildHierarchy();
	            this.entry.content.isCloning = false;
	            return clone;
	        },

	        parse: function(response, options) {
	            response = $.extend(true, {}, response);
	            this.initializeAssociated();
	            response = this.parseSplunkDPayload(response);
	            // If the data model was generated from an sid, add that sid to the root attributes.
	            if(options && options.data && options.data.sid) {
	                response.sid = options.data.sid;
	            }
	            return SplunkDBase.prototype.parse.call(this, response);
	        },
	        
	        parseFile: function(response) {
	            response = $.extend(true, {}, response);
	            this.initializeAssociated();
	            response = this.parseSplunkDPayload(response);
	            var response_entry = response.entry[0];
	            this.entry.content.set(response_entry.content);
	            delete response_entry.content;
	            delete response.entry;
	            return response;
	        },
	        
	        setFromSplunkD: function(payload, options) {
	            payload = $.extend(true, {}, payload);
	            //console.log("DataModel.setFromSplunkD before parse",this.toString());
	            payload = this.parseSplunkDPayload(payload, options);
	            //console.log("DataModel.setFromSplunkD after parse",this.toString());
	            return SplunkDBase.prototype.setFromSplunkD.call(this, payload, options);
	        },

	        parseSplunkDPayload: function(payload, options) {
	            var entry = payload.entry;
	            var acceleration;

	            if(entry && entry.length > 0 && entry[0].content) {
	                //console.log("DM.parseSplunkDPayload",this.cid,"objects[0].calculations");

	                // Save the acceleration info and apply later since content gets clobbered
	                if (entry[0].content.acceleration)
	                    acceleration = JSON.parse(entry[0].content.acceleration); // String representation of the acceleration JSON
	                // what we want to treat as content from now on is actually stringified into the "description" attribute

	                var content;

	                var accelerationAllowed = entry[0].content["acceleration.allowed"];

	                if (_(entry[0].content).has("description")) {
	                    // Merge the JSONified data model description with any dataset.* attributes in the content payload
	                    content = entry[0].content = _.extend(
	                        {}, generalUtils.filterObjectByRegexes(entry[0].content, /^dataset\.*/), 
	                        JSON.parse(entry[0].content.description)
	                    );
	                } else {
	                    content = entry[0].content;
	                }

	                // The "acceleration.allowed" attribute doesn't exist in the "acceleration" JSON blob so
	                // preserve it here. We don't put it into the acceleration associated model because that model
	                // will eventually go away (along w/ the "acceleration" attribute).
	                content["acceleration.allowed"] = accelerationAllowed;

	                // set the display name equal to the model name if no display name is given
	                if(!content.displayName) {
	                    content.displayName = content.modelName;
	                }

	                if(_(content.objects).isArray()) {
	                    this.entry.content.objects.set(content.objects, $.extend({ parse: true }, options));
	                    delete content.objects;
	                }
	                if (_(content.objectSummary).isObject()) {
	                    this.entry.content.objectSummary.set(content.objectSummary, $.extend({ parse: true }, options));
	                    delete content.objectSummary;
	                }
	                if (_(acceleration).isObject()) {
	                    this.entry.content.acceleration.set(acceleration, $.extend({ parse: true }, options));
	                }
	            }
	            return payload;
	        },

	        toString: function() {
	            var children = "";
	            this.entry.content.objects.each(function(object) {
	                if (children != "") {
	                    children += ", ";
	                }
	                children += object.toString();
	            }, this);

	            return "DataModel [" + this.cid + "] objects cid [" + this.entry.content.objects.cid + "] Objects: " + children;
	        }

	    }, CONSTS);

	    // break the shared reference to Entry
	    DataModel.Entry = SplunkDBase.Entry.extend({});
	    // now we can safely extend Entry.Content
	    DataModel.Entry.Content = SplunkDBase.Entry.Content.extend({

	        toJSON: function(options) {
	            var json = SplunkDBase.Entry.Content.prototype.toJSON.apply(this, arguments);
	            var returnValue = {};

	            if (this.objects.length > 0) {
	                json.objects = this.objects.toJSON(options);
	            }

	            if (this.objectSummary) {
	                json.objectSummary = this.objectSummary.toJSON(options);
	            }

	            if (this.acceleration) {
	                returnValue.acceleration = JSON.stringify(this.acceleration.toJSON(options));
	            }

	            //console.log("=========== DataModelV2.toJSON =============");
	            //console.log(JSON.stringify(json));
	            if (json.name) {
	                json.modelName = json.name;
	                returnValue.name = json.name;
	                delete json.name;
	            }

	            // Split the json into two types of attributes, ones that start with "dataset.*" and ones that do not
	            var datasetAttrs = generalUtils.filterObjectByRegexes(json, /^dataset\.*/);

	            // Copy the "dataset.*" attributes into the response
	            _.extend(returnValue, datasetAttrs);

	            // Exclude the "dataset.*" attributes from the description attribute
	            _(datasetAttrs).each(function(value, key) {
	                delete json[key];
	            }, this);

	            returnValue.description = JSON.stringify(json);

	            return returnValue;
	        }

	    });

	    // Expose a reference to the Data Model Object constructor for dependency declarations
	    DataModel.Object = DataModelObject;

	    return DataModel;

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datamodel/DataModelWhiteList":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 *  Subclass SplunkDWhiteList for models/services/datamodel/DataModel to not pass "provisional" when retrieving
	 *  the fields whitelist
	 */
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("models/SplunkDWhiteList")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(SplunkDWhiteList) {
	        return SplunkDWhiteList.extend({
	            sync: function(method, model, options) {
	                // The datamodel endpoint doesn't accept provisional for GET (but it does for POST)
	                if (options && options.data) {
	                    delete options.data.provisional;
	                }
	                return SplunkDWhiteList.prototype.sync.call(this, method, model, options);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/datamodel/private/Acceleration":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @author jszeto
	 * @date 4/25/13
	 *
	 * Represents the acceleration specific settings for a DataModel.
	 *
	 *
	 */
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("models/Base")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(BaseModel) {

	        return BaseModel.extend({

	                defaults: {
	                    enabled: false

	                }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "collections/services/datamodel/private/ObjectHierarchy":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * A collection representing the object hierarchy of a data model
	 *
	 * To be used only as an internal member of the "models/services/datamodel/DataModel" module
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	            __webpack_require__("require/underscore"),
	            __webpack_require__("collections/Base"),
	            __webpack_require__("models/services/datamodel/private/Object")
	        ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	            _,
	            Base,
	            DMObject
	        ) {

	    return Base.extend({

	        /**
	         *  A list of reserved root object names representing the abstract base classes for data model objects.
	         *  Their order in this list will also dictate the order of root objects in each hierarchy instance,
	         *  e.g. all root objects that inherit from BaseEvent will come first.
	         */

	        ROOT_OBJECT_ORDER: ['BaseEvent', 'BaseTransaction', 'BaseSearch', 'BaseInterface', 'BaseImplements'],

	        model: DMObject,

	        initialize: function(models, options) {
	            Base.prototype.initialize.call(this, models, options);

	            // a private instance member containing the hierarchy's root objects
	            // used as an entry point for walking the tree
	            this._rootObjects = [];

	            this.on('reset change:parentName add remove', this.buildHierarchy, this);
	        },

	        /**
	         * Triggered on any reset, add, or remove event.  Re-builds the object hierarchy by reading each object's
	         * "parentName" attribute and using it to make sure that parent object has the correct list of children.
	         *
	         * TODO: should this method throw or trigger an error if the models are not in a valid state?
	         */

	        buildHierarchy: function() {
	            var childrenMap,
	                that = this,
	                hasNoParent = function(model) {
	                    return _(that.ROOT_OBJECT_ORDER).indexOf(model.get('parentName')) > -1;
	                };

	            // build record of root objects and parent->children relationships
	            this._rootObjects = this.filter(hasNoParent);
	            childrenMap = this.chain().reject(hasNoParent).groupBy(function(model) {
	                return model.get('parentName');
	            }).value();

	            // clear out any existing child lists
	            this.each(function(object) {
	                delete(object.children);
	            });
	            // assign each child list as a member of the model, assembling the tree
	            // TODO [JCS] Do we need to do this now that the backend provides a children property?
	            _(childrenMap).each(function(childList, parentName) {
	                childrenMap[parentName] = _(childList).sortBy(function(child) { return child.get('objectName'); });
	                var parentModel = this.find(function(model) { return model.get('objectName') === parentName; });
	                parentModel.children = childList;
	            }, this);

	            // sort the root level objects based on the "root object order" property
	            this._rootObjects = _(this._rootObjects).sortBy(function(obj) {
	                return _(this.ROOT_OBJECT_ORDER).indexOf(obj.get('parentName'));
	            }, this);

	            // populate the the rootParent field for each object
	            _(this._rootObjects).each(function(root) {
	                var rootParentName = root.get('parentName');
	                root.set({
	                    rootParent: rootParentName
	                }, {silent: true});
	                root.withEachDescendant(function(child) {
	                    child.set({
	                        rootParent: rootParentName
	                    }, {silent: true});
	                }, this);
	            }, this);
	        },

	        /**
	         * @param fn - the function to call with each object as its argument, expected to return an object literal
	         * @param context - (optional) the scope in which to call the function
	         * @return {Array}
	         *
	         * A tree-structure-flattening version of map
	         *
	         * Returns a list generated by applying the given callback to each object and then recursively to its children,
	         * and also appends a 'depth' field to each item in the returned list, indicating that object's depth in the tree.
	         *
	         * For example with the following hierarchy structure:
	         *
	         * Parent
	         *   --> ChildOne
	         *         --> GrandChildOne
	         *         --> GrandChildTwo
	         *   --> ChildTwo
	         *         --> GrandChildThree
	         * Sibling
	         *   --> ChildThree
	         *
	         * Calling "depthFirstMap(function(obj) { return { name: obj.get('objectName') }; });" would return:
	         *
	         * [
	         *   {
	         *     name: "Parent",
	         *     depth: 0
	         *   },
	         *   {
	         *     name: "ChildOne",
	         *     depth: 1
	         *   },
	         *   {
	         *     name: "GrandChildOne",
	         *     depth: 2
	         *   },
	         *   {
	         *     name: "GrandChildTwo",
	         *     depth: 2
	         *   },
	         *   {
	         *     name: "ChildTwo",
	         *     depth: 1
	         *   },
	         *   {
	         *     name: "GrandChildThree",
	         *     depth: 2
	         *   },
	         *   {
	         *     name: "Sibling",
	         *     depth: 0
	         *   },
	         *   {
	         *     name: "ChildThree",
	         *     depth: 1
	         *   }
	         * ]
	         */

	        depthFirstMap: function(fn, context) {
	            context = context || null;
	            var list = [],

	                recApplyFn = function(obj, depth) {
	                    var mappedObj = fn.call(context, obj);
	                    mappedObj.depth = depth;
	                    list.push(mappedObj);
	                    depth++;
	                    _(obj.children).each(function(obj) {
	                        recApplyFn(obj, depth);
	                    });
	                };

	            _(this._rootObjects).each(function(obj) {
	                recApplyFn(obj, 0);
	            });
	            return list;
	        },
	        /**
	         * Returns an array of the root objects, sorted by ROOT_OBJECT_ORDER
	         *
	         * @return {Array}
	         */
	        getRootObjects: function() {
	            return this._rootObjects;
	        },

	        getAncestorsForObject: function(objectName) {
	            var object = this.get(objectName);
	            var ancestors = [];
	            var parentName = "";

	            while (object && !_.contains(this.ROOT_OBJECT_ORDER, parentName)) {
	                parentName = object.get("parentName");
	                object = this.get(parentName);
	                if (object) {
	                    ancestors.push(object);
	                }
	            }

	            return ancestors;

	        }

	    });

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/datasets/commands/InitialData":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("collections/Base"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        $,
	        BaseCommand,
	        Column,
	        BaseCollection,
	        splunkUtil
	    ) {
	        var InitialData = BaseCommand.extend({
	            _displayName: _('Initial Data').t(),
	            _placeholderSPL: 'from',
	            isSearchPoint: true,
	            
	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);

	                this.setUseAST();
	                this.on('change:selectedMethod', this.setUseAST, this);
	            },

	            defaults: function() {
	                return InitialData.getDefaults();
	            },
	            
	            validation: {
	                selectedMethod: {
	                    required: true
	                },
	                spl: 'validateSPL'
	            },

	            setUseAST: function() {
	                this._useAST = (this.get('selectedMethod') === InitialData.METHODS.SEARCH);
	            },
	            
	            validateSPL: function(value, attr, options) {
	                var selectedMethod = this.get('selectedMethod'),
	                    spl = this.get('spl'),
	                    selectedDatasetName,
	                    selectedDatasetType;
	                
	                if (selectedMethod === InitialData.METHODS.DATASET) {
	                    selectedDatasetName = this.get('selectedDatasetName');
	                    selectedDatasetType = this.get('selectedDatasetType');

	                    if (!selectedDatasetName || !selectedDatasetType) {
	                        return _('Select a dataset.').t();
	                    }
	                    
	                } else if (selectedMethod === InitialData.METHODS.INDEXES_AND_SOURCETYPES) {
	                    if (this.editorValues.length === 0) {
	                        return _('Select one or more indexes or source types.').t();
	                    }
	                } else if (selectedMethod === InitialData.METHODS.SEARCH) {
	                    if (_.isEmpty(this.get('baseSPL'))) {
	                        return _('Provide a search string.').t();
	                    } else if (this.ast) {
	                        if (this.ast.hasError()) {
	                            return _('Search syntax is incorrect: ').t() + this.ast.error.get('messages')[0].text;
	                        }
	                        if (this.ast.get('ast') && !this.ast.isTableable()) {
	                            return _('This search is not valid for the Table Editor.').t();
	                        }
	                    }
	                } else {
	                    return _('Initial data method is required.').t();
	                }
	            },
	            
	            /**
	            * Because of circular dependencies in the PolymorphicDatasetModel we cannot instantiate
	            * a PolymorphicDatasetModel in this file. You must create it outside of this file and set it
	            * here. This has one huge caveat, any listeners that are setup on the selectedDataset will be broken
	            * at this time, and listeners on the selectedDataset cannot be created after this BaseSearchCommand model has been
	            * instantiated. Circular dependencies may not be an issue when we move to Webpak. See: SPL-112705
	            */
	            resetSelectedDataset: function(selectedDataset, options) {
	                this.clearSelectedDataset();

	                this.associated = this.associated || {};
	                this.selectedDataset = selectedDataset.clone();
	                this.associated.selectedDataset = this.selectedDataset;

	                this.set({
	                    selectedDatasetType: this.selectedDataset.getFromType(),
	                    selectedDatasetName: this.selectedDataset.getFromName(),
	                    selectedDatasetDisplayName: this.selectedDataset.getFormattedName()
	                }, options);

	                if (this.selectedDataset.commands && this.selectedDataset.commands.length) {
	                    // When the selectedDataset has commands then we know that the commands will define columns.
	                    // The last command's columns will be migrated into this command.
	                    // At the moment, only Tables have dataset.commands.
	                    this.columns.reset(this.selectedDataset.commands.at(this.selectedDataset.commands.length - 1).columns.toJSON(), options);
	                } else if (this.selectedDataset.isFixedFields() || (this.selectedDataset.getEAIType() === 'inputlookup-table')) {
	                    // If the selectedDataset has fixed fields then we should simply use that fixed fields list as the
	                    // columns for this command.
	                    // TODO: SPL-118609 We don't get the fields back from inputlookup-table files. getTypedFields()
	                    // will just return an empty array, which isn't great, but all we can do for now.
	                    this.columns.reset(this.selectedDataset.getTypedFields(), options);
	                } else {
	                    // This shouldn't happen. All frommable datasets (as of now) have fixed fields (or are weird
	                    // inputlookup-table files).
	                    throw new Error('The from dataset doesn\'t have fixed fields as it should!');
	                }
	            },

	            clearSelectedDataset: function(options) {
	                this.set({
	                    selectedDatasetName: undefined,
	                    selectedDatasetType: undefined,
	                    selectedDatasetDisplayName: undefined
	                }, options);

	                if (this.selectedDataset) {
	                    this.selectedDataset.stopListening();
	                    delete this.selectedDataset;
	                }
	            },
	            
	            // Override for running the AST when validating the command's SPL
	            getASTSearchSPL: function() {
	                return splunkUtil.addLeadingSearchCommand(this.generateBaseSearchSPL(), true);
	            },

	            generateSPL: function(options) {
	                options = options || {};
	                
	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('InitialData must be in a valid state before you can generate SPL.');
	                }
	                
	                var baseSearchSPL = this.generateBaseSearchSPL(),
	                    baseFieldsSPL = this.generateBaseFieldsSPL();
	                
	                if (baseSearchSPL && baseFieldsSPL) {
	                    return baseSearchSPL + ' | ' + baseFieldsSPL;
	                }
	            },

	            generateBaseSearchSPL: function(options) {
	                var selectedMethod = this.get('selectedMethod'),
	                    spl = this.get('baseSPL'),
	                    selectedDatasetName,
	                    selectedDatasetType,
	                    index,
	                    sourcetypes;

	                if (selectedMethod === InitialData.METHODS.DATASET) {
	                    selectedDatasetName = this.get('selectedDatasetName');
	                    selectedDatasetType = this.get('selectedDatasetType');

	                    if (selectedDatasetName && selectedDatasetType) {
	                        spl =  '| from ' + selectedDatasetType + ':"' + selectedDatasetName + '"';
	                    }
	                } else if (selectedMethod === InitialData.METHODS.INDEXES_AND_SOURCETYPES) {
	                    if (this.editorValues.length) {
	                        spl = '((';

	                        this.editorValues.each(function(indexAndSourcetypesModel, i) {
	                            index = indexAndSourcetypesModel.get('index');

	                            if (i > 0) {
	                                spl += ' OR ((';
	                            }

	                            if (_.isArray(index)) {
	                                _.each(index, function(index, k) {
	                                    if (k > 0) {
	                                        spl += ' OR ';
	                                    }
	                                    spl += 'index="' + index + '"';
	                                }, this);

	                                spl += ') (';
	                            } else {
	                                spl += 'index="' + index + '") (';
	                            }

	                            sourcetypes = indexAndSourcetypesModel.get('sourcetypes');
	                            _.each(sourcetypes, function(sourcetype, j) {
	                                if (j > 0) {
	                                    spl += ' OR ';
	                                }
	                                spl += 'sourcetype="' + sourcetype + '"';
	                            }, this);

	                            spl += '))';

	                        }, this);
	                    } else {
	                        spl = '';
	                    }
	                }
	                
	                return spl && spl.trim().replace(/\s+/g, ' ');
	            },

	            generateBaseFieldsSPL: function(options) {
	                var columnGuids, fieldsStr;
	                
	                if (this.columns.length) {
	                    columnGuids = this.columns.pluck('id');
	                    fieldsStr = this.convertGuidsToFields(columnGuids, { doubleQuoteWrap: true }).join(', ');
	                    
	                    if (fieldsStr) {
	                        return 'fields ' + fieldsStr;
	                    }
	                }
	            },

	            clearUnchosenAttributes: function() {
	                switch (this.get('selectedMethod')) {
	                    case InitialData.METHODS.DATASET:
	                        this.editorValues.reset();
	                        this.unset('baseSPL');
	                        break;
	                    case InitialData.METHODS.INDEXES_AND_SOURCETYPES:
	                        this.clearSelectedDataset();
	                        this.unset('baseSPL');
	                        break;
	                    case InitialData.METHODS.SEARCH:
	                        this.clearSelectedDataset();
	                        this.editorValues.reset();
	                        break;
	                }
	            }
	        }, {
	            METHODS: {
	                DATASET: 'dataset',
	                INDEXES_AND_SOURCETYPES: 'indexes_and_sourcetypes',
	                SEARCH: 'search' 
	            },
	            STATES: {
	                EDITING: 'editing',
	                CANCELED: 'canceled'
	            },
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.INITIAL_DATA
	                }, BaseCommand.getDefaults());
	            }
	        });

	        return InitialData;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "collections/datasets/Commands":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("collections/Base"),
	        __webpack_require__("models/datasets/PolymorphicCommand")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function (
	        $,
	        _,
	        BaseCollection,
	        PolymorphicCommandModel
	    ) {
	        return BaseCollection.extend({
	            model: PolymorphicCommandModel,

	            initialize: function() {
	                BaseCollection.prototype.initialize.apply(this, arguments);

	                this.on('changeColumn', function(changedColumn, originCommand, options) {
	                    this.propagateChangeColumn(changedColumn, originCommand, options);
	                }, this);

	                this.on('addColumn', function(addedColumn, originCommand, options) {
	                    this.propagateAddColumn(addedColumn, originCommand, options);
	                }, this);

	                this.on('removeColumn', function(removedColumn, originCommand, options) {
	                    this.propagateRemoveColumn(removedColumn, originCommand, options);
	                }, this);

	                this.on('resetColumns', function(newColumnsCollection, originCommand, options) {
	                    this.propagateResetColumns(newColumnsCollection, originCommand, options);
	                }, this);

	                this.on('remove', this.handleRemovedCommand, this);
	            },

	            sync: function(method, model, options) {
	                throw new Error('sync not allowed for the Commands collection');
	            },

	            addNewCommand: function(values, options) {
	                values = values || {};
	                // Because options is augmented it is dangerous to change the shared reference
	                options = $.extend(true, {}, options || {});

	                var commandModel,
	                    valuesCopy = $.extend(true, {}, values),
	                    updateDfd,
	                    addDfd = $.Deferred();

	                // Need to set this flag when triggering 'add'
	                options.add = true;

	                delete values.columns;
	                delete values.selectedColumns;
	                delete values.editorValues;

	                // Don't forget to pass type into addNewCommand for PolymorphicCommandModel to read!
	                commandModel = new PolymorphicCommandModel(values, options);
	                if (!valuesCopy.columns) {
	                    if (options.at === 0) {
	                        // No columns to backfill from, so always start with an empty array
	                        valuesCopy.columns = [];
	                    } else if (this.at(options.at - 1)) {
	                        // Use the previous command's columns if they exist
	                        valuesCopy.columns = this.at(options.at - 1).columns.toJSON() || [];
	                    } else if (options.at >= 0 || _.isUndefined(options.at)) {
	                        // If you don't specify an at, or the at is beyond the last command in the collection,
	                        // then add will add to the end, so we'll use the last command columns here.
	                        valuesCopy.columns = this.getLastCommandColumnsJSON() || [];
	                    } else {
	                        throw new Error('Passed an invalid at index to addNewCommand!');
	                    }
	                }

	                // Reset with any editor values passed in to the editor values array
	                if (valuesCopy.editorValues && commandModel.editorValues) {
	                    commandModel.editorValues.reset(valuesCopy.editorValues);
	                }

	                commandModel.columns.reset(valuesCopy.columns, options);
	                // Need to add required columns if they are passed instead of selected columns
	                commandModel.resetRequiredColumns(valuesCopy.selectedColumns || valuesCopy.requiredColumns);

	                // Now that the columns/editorValues/requiredColumns in place, we can set the initial state
	                commandModel.setInitialState(options.initialStateOptions);

	                if (commandModel.isComplete()) {
	                    updateDfd = commandModel.updateSPL(options.updateSPLOptions);
	                }

	                // Because updateSPL may use the AST, we need to use a deferred to make sure we update before we add.
	                $.when(updateDfd).always(function() {
	                    // We want to add the command to the collection here, so that applyChangesToColumns
	                    // can trigger column propagation effects (and column propagation only works once the
	                    // command is in the collection). However, simply adding would fire a new page route and
	                    // thus applyChangesToColumns would never get called. So, silently add here so we can
	                    // applyChangesToColumns, then trigger add to complete the process.
	                    this.add(commandModel, _.extend({}, options, {silent:true}));
	                    // Calling applyChangesToColumns() on an incomplete command is dangerous because that method assumes
	                    // that the command has all of the validated information necessary in order to update its columns.
	                    // As we add more directly-added/already-complete commands that override applyChangesToColumns() in
	                    // a more complex way, having this check here ensures that we don't get into weird column states.
	                    if (commandModel.isComplete()) {
	                        commandModel.applyChangesToColumns(valuesCopy, options);
	                    }
	                    this.trigger('add', commandModel, this, options);

	                    addDfd.resolve();
	                }.bind(this));

	                // Return the deferred when the add has been done and triggered
	                return addDfd;
	            },

	            handleRemovedCommand: function(removedCommand, updatedCollection, options) {
	                options = options || {};
	                var commandIdxBeforeRemoved = options.index - 1,
	                    commandBeforeRemoved = this.at(commandIdxBeforeRemoved),
	                    commandAfterRemoved = this.at(options.index),
	                    newFieldGuids = options.newFieldGuids,
	                    requiredColumns = [],
	                    otherColumns = [];

	                // If the new fields created by this command have not explicitly been passed
	                // in, then we should see if the command makes new fields by performing a diff
	                // of the command being removed and the command before it.
	                if (!newFieldGuids && commandBeforeRemoved && commandAfterRemoved) {
	                    newFieldGuids = removedCommand.getAddedColumnGuids({
	                        comparisonColumnsCollection: commandBeforeRemoved.columns
	                    });
	                }

	                // Handle any fields created by the command being removed
	                if (newFieldGuids) {
	                    _.each(newFieldGuids, function(newFieldGuid) {
	                        var removedColumn = removedCommand.columns.get(newFieldGuid);
	                        if (removedColumn) {
	                            this.propagateRemoveColumn(removedColumn, removedCommand, { originCommandIdx: commandIdxBeforeRemoved });
	                        }
	                    }.bind(this));
	                }

	                // If there are commands before the command being removed then we must ensure
	                // that the state of the columns in the command before the removed command
	                // are propagated to the command after the command being removed.
	                if (commandIdxBeforeRemoved >= 0) {
	                    commandBeforeRemoved.columns.each(function(column) {
	                        var matchedColumn = removedCommand.requiredColumns.get(column.id);

	                        if (matchedColumn) {
	                            requiredColumns.push(column.toJSON());
	                        } else {
	                            otherColumns.push(column.toJSON());
	                        }
	                    }, this);

	                    // We have to ensure that that columns from the command before the command
	                    // being removed are now the canonical columns for the commands after the command
	                    // being removed.
	                    if (commandAfterRemoved) {
	                        commandAfterRemoved.setFromCommandJSON({
	                                columns: requiredColumns
	                            },
	                            {
	                                remove: false,
	                                // We must ensure that if this command renamed a column that subsequent
	                                // commands no longer use that name for the column
	                                forceNameForwardPropagationOnce: true,
	                                commandRemoval: true
	                            }
	                        );

	                        commandAfterRemoved.setFromCommandJSON({
	                                columns: otherColumns
	                            },
	                            {
	                                remove: false,
	                                merge: false,
	                                // We must ensure that if this command renamed a column that subsequent
	                                // commands no longer use that name for the column
	                                forceNameForwardPropagationOnce: true,
	                                commandRemoval: true
	                            }
	                        );
	                    }
	                }
	            },

	            getLastCommandColumnsJSON: function() {
	                var lastCommand = this.last(),
	                    lastCommandCols = lastCommand && lastCommand.columns;
	                return lastCommandCols && lastCommandCols.toJSON();
	            },

	            getPreviousCommandColumns: function(command) {
	                var prev = this.getPreviousCommand(command);
	                return prev ? prev.columns : undefined;
	            },

	            getPreviousCommand: function(command) {
	                var index = this.indexOf(command);

	                if (index > 0) {
	                    return this.at(index - 1);
	                } else {
	                    return undefined;
	                }
	            },

	            propagateChangeColumn: function(changedColumn, originCommand, options) {
	                var optionsCopy = $.extend(true, {}, options || {});

	                var originCommandIdx = this.indexOf(originCommand),
	                    columnNameChanged = changedColumn.hasChanged('name'),
	                    previousColumnName = columnNameChanged && changedColumn.previous('name'),
	                    currentCommand,
	                    currentCommandMatchedColumn,
	                    currentCommandMatchedColumnName;

	                // See if we've been told to propagate a change of a column name
	                if (optionsCopy.forceNameForwardPropagationOnce) {
	                    if (columnNameChanged) {
	                        if (!optionsCopy.forceName) {
	                            // At this point the previous name is the only name in which we
	                            // should continue to propagate on.
	                            optionsCopy.forceName = previousColumnName;
	                        }
	                    }
	                }

	                // backward propagation
	                for (var i = (originCommandIdx - 1); i >= 0; i--) {
	                    currentCommand = this.at(i);
	                    currentCommandMatchedColumn = currentCommand && currentCommand.columns.get(changedColumn.id);

	                    // we will stop propagation if the name has changed
	                    if (currentCommandMatchedColumn &&
	                            (changedColumn.isTouchedByComparison(currentCommandMatchedColumn))) {
	                        break;
	                    }

	                    currentCommand.propagateColumnChange(changedColumn, optionsCopy);
	                }

	                // forward propagation
	                for (var j = (originCommandIdx + 1); j < this.length; j++) {
	                    currentCommand = this.at(j);
	                    currentCommandMatchedColumn = currentCommand && currentCommand.columns.get(changedColumn.id);
	                    currentCommandMatchedColumnName = currentCommandMatchedColumn && currentCommandMatchedColumn.get('name');
	                    optionsCopy.previousColumnName = previousColumnName;

	                    if (currentCommandMatchedColumn && optionsCopy.forceNameForwardPropagationOnce) {
	                        if (currentCommandMatchedColumnName === optionsCopy.forceName) {
	                            // The current command name matched the name that we have to force changes onto
	                            // setting the previousColumnName will ensure that isTouchedByComparison returns false
	                            optionsCopy.previousColumnName = optionsCopy.forceName;
	                        }
	                    }

	                    if (currentCommand.stopForwardChangePropagation ||
	                            (currentCommandMatchedColumn &&
	                                changedColumn.isTouchedByComparison(currentCommandMatchedColumn, { previousColumnName: optionsCopy.previousColumnName }))) {
	                        break;
	                    }

	                    currentCommand.propagateColumnChange(changedColumn, optionsCopy);
	                }
	            },

	            propagateAddColumn: function(addedColumn, originCommand, options) {
	                var originCommandIdx = this.indexOf(originCommand),
	                    currentCommand;

	                for (var i = (originCommandIdx + 1); i < this.length; i++) {
	                    currentCommand = this.at(i);

	                    if (currentCommand && currentCommand.stopForwardAddRemoveResetPropagation) {
	                        break;
	                    }

	                    currentCommand.propagateColumnAdd(addedColumn, options);
	                }
	            },

	            propagateRemoveColumn: function(removedColumn, originCommand, options) {
	                options = options || {};

	                var originCommandIdx = options.originCommandIdx || this.indexOf(originCommand),
	                    currentCommand;

	                for (var i = (originCommandIdx + 1); i < this.length; i++) {
	                    currentCommand = this.at(i);

	                    if (currentCommand && currentCommand.stopForwardAddRemoveResetPropagation) {
	                        break;
	                    }

	                    currentCommand.propagateColumnRemove(removedColumn, options);
	                }
	            },

	            propagateResetColumns: function(newColumnsCollection, originCommand, options) {
	                var originCommandIdx = this.indexOf(originCommand),
	                    currentCommand;

	                for (var i = (originCommandIdx + 1); i < this.length; i++) {
	                    currentCommand = this.at(i);

	                    if (currentCommand && currentCommand.stopForwardAddRemoveResetPropagation) {
	                        break;
	                    }

	                    currentCommand.propagateColumnReset(newColumnsCollection, options);
	                }
	            },

	            validateSubsequentCommands: function(removedFields, startingIndex) {
	                var failingFields = [],
	                    currentCommand,
	                    newFailingGuids,
	                    failingGuids;

	                // Iterate through beginning with the specified index
	                for (var i = startingIndex + 1; i < this.length; i++) {
	                    currentCommand = this.at(i);
	                    // If any of the passed in guids being removed are in the required Columns
	                    // for this command, add it to the array of failing guids
	                    failingGuids = _.pluck(currentCommand.requiredColumns.filter(function(column) {
	                        return _.contains(removedFields, column.id);
	                    }), 'id');

	                    // Get the guids that are not already part of the set of failing fields array
	                    newFailingGuids = _(failingGuids).difference(_(failingFields).pluck('id'));

	                    failingFields = failingFields.concat(_.map(newFailingGuids, function(guid) {
	                        var currentColumn = currentCommand.columns.get(guid);
	                        // If the current commands columns contains the guid, grab it
	                        return  currentColumn ?
	                            currentColumn :
	                            // If the column is not in the current command, it must have been removed,
	                            // so grab the previous set of columns and find the column
	                            this.getPreviousCommandColumns(currentCommand).get(guid);
	                    }.bind(this)));
	                }
	                // If there are failing fields, return them; else, return undefined
	                if (failingFields.length) {
	                    return failingFields;
	                }
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/PolymorphicCommand":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/backbone"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/commands/InitialData"),
	        __webpack_require__("models/datasets/commands/Rename"),
	        __webpack_require__("models/datasets/commands/Sort"),
	        __webpack_require__("models/datasets/commands/Truncate"),
	        __webpack_require__("models/datasets/commands/Join"),
	        __webpack_require__("models/datasets/commands/Replace"),
	        __webpack_require__("models/datasets/commands/Dedup"),
	        __webpack_require__("models/datasets/commands/ExtractDateTime"),
	        __webpack_require__("models/datasets/commands/RemoveFields"),
	        __webpack_require__("models/datasets/commands/Rex"),
	        __webpack_require__("models/datasets/commands/FilterValues"),
	        __webpack_require__("models/datasets/commands/RemoveNonNumericalValues"),
	        __webpack_require__("models/datasets/commands/FillValues"),
	        __webpack_require__("models/datasets/commands/Eval"),
	        __webpack_require__("models/datasets/commands/EvalExistingField"),
	        __webpack_require__("models/datasets/commands/Rangemap"),
	        __webpack_require__("models/datasets/commands/Search"),
	        __webpack_require__("models/datasets/commands/Concatenate"),
	        __webpack_require__("models/datasets/commands/Duplicate"),
	        __webpack_require__("models/datasets/commands/Stats"),
	        __webpack_require__("models/datasets/commands/ChangeCase"),
	        __webpack_require__("models/datasets/commands/FilterRegex"),
	        __webpack_require__("models/datasets/commands/AdvancedRex"),
	        __webpack_require__("models/datasets/commands/Coalesce"),
	        __webpack_require__("models/datasets/commands/Where"),
	        __webpack_require__("models/datasets/commands/Split"),
	        __webpack_require__("models/datasets/commands/CalculateField"),
	        __webpack_require__("models/datasets/commands/Round"),
	        __webpack_require__("models/datasets/commands/Bucket"),
	        __webpack_require__("models/datasets/commands/ReplaceMismatchedTypes"),
	        __webpack_require__("models/datasets/commands/FilterMismatchedTypes")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        Backbone,
	        BaseCommand,
	        InitialData,
	        RenameCommand,
	        SortCommand,
	        TruncateCommand,
	        JoinCommand,
	        ReplaceCommand,
	        DedupCommand,
	        ExtractDateTimeCommand,
	        RemoveCommand,
	        RexCommand,
	        FilterValuesCommand,
	        RemoveNonNumericalValuesCommand,
	        FillValuesCommand,
	        EvalCommand,
	        EvalExistingFieldCommand,
	        RangemapCommand,
	        SearchCommand,
	        ConcatenateCommand,
	        DuplicateCommand,
	        StatsCommand,
	        ChangeCaseCommand,
	        FilterRegexCommand,
	        AdvancedRexCommand,
	        CoalesceCommand,
	        WhereCommand,
	        SplitCommand,
	        CalculateFieldCommand,
	        RoundCommand,
	        BucketCommand,
	        ReplaceMismatchedTypesCommand,
	        FilterMismatchedTypesCommand
	    ) {
	        var getModel = function(attributes) {
	            var Model;
	            if (attributes) {
	                if (attributes.type === BaseCommand.INITIAL_DATA) {
	                    Model = InitialData;
	                } else if (attributes.type === BaseCommand.RENAME) {
	                    Model = RenameCommand;
	                } else if (attributes.type === BaseCommand.SORT) {
	                    Model = SortCommand;
	                } else if (attributes.type === BaseCommand.TRUNCATE) {
	                    Model = TruncateCommand;
	                } else if (attributes.type === BaseCommand.JOIN) {
	                    Model = JoinCommand;
	                } else if (attributes.type === BaseCommand.REPLACE) {
	                    Model = ReplaceCommand;
	                } else if (attributes.type === BaseCommand.DEDUP) {
	                    Model = DedupCommand;
	                } else if (attributes.type === BaseCommand.EXTRACT_DATE_TIME) {
	                    Model = ExtractDateTimeCommand;
	                } else if (attributes.type === BaseCommand.REMOVE) {
	                    Model = RemoveCommand;
	                } else if (attributes.type === BaseCommand.REX) {
	                    Model = RexCommand;
	                } else if (attributes.type === BaseCommand.FILTER_VALUES) {
	                    Model = FilterValuesCommand;
	                } else if (attributes.type === BaseCommand.REMOVE_NON_NUMERICAL_VALUES) {
	                    Model = RemoveNonNumericalValuesCommand;
	                } else if (attributes.type === BaseCommand.FILL_VALUES) {
	                    Model = FillValuesCommand;
	                } else if (attributes.type === BaseCommand.EVAL) {
	                    Model = EvalCommand;
	                } else if (attributes.type === BaseCommand.EVAL_EXISTING_FIELD) {
	                    Model = EvalExistingFieldCommand;
	                } else if (attributes.type === BaseCommand.RANGEMAP) {
	                    Model = RangemapCommand;
	                } else if (attributes.type === BaseCommand.SEARCH) {
	                    Model = SearchCommand;
	                } else if (attributes.type === BaseCommand.CONCATENATE) {
	                    Model = ConcatenateCommand;
	                } else if (attributes.type === BaseCommand.DUPLICATE) {
	                    Model = DuplicateCommand;
	                } else if (attributes.type === BaseCommand.STATS) {
	                    Model = StatsCommand;
	                } else if (attributes.type === BaseCommand.CHANGE_CASE) {
	                    Model = ChangeCaseCommand;
	                } else if (attributes.type === BaseCommand.FILTER_REGEX) {
	                    Model = FilterRegexCommand;
	                } else if (attributes.type === BaseCommand.ADVANCED_REX) {
	                    Model = AdvancedRexCommand;
	                } else if (attributes.type === BaseCommand.COALESCE) {
	                    Model = CoalesceCommand;
	                } else if (attributes.type === BaseCommand.WHERE) {
	                    Model = WhereCommand;
	                } else if (attributes.type === BaseCommand.SPLIT) {
	                    Model = SplitCommand;
	                } else if (attributes.type === BaseCommand.CALCULATE_FIELD) {
	                    Model = CalculateFieldCommand;
	                } else if (attributes.type === BaseCommand.ROUND) {
	                    Model = RoundCommand;
	                } else if (attributes.type === BaseCommand.BUCKET) {
	                    Model = BucketCommand;
	                } else if (attributes.type === BaseCommand.REPLACE_MISMATCHED_TYPES) {
	                    Model = ReplaceMismatchedTypesCommand;
	                } else if (attributes.type === BaseCommand.FILTER_MISMATCHED_TYPES) {
	                    Model = FilterMismatchedTypesCommand;
	                }
	            }
	            return Model;
	        };

	        var PolymorphicCommand = Backbone.Model.extend({
	            
	            constructor: function(attributes, options) {
	                /* 
	                 * 
	                 * Commands are going to be created by their type attribute.
	                 * This means that type must be immutable because you cannot change the
	                 * object type once constructed.
	                 *
	                 */
	                var Model = getModel(attributes);

	                if (!Model) {
	                    throw new Error("You must define a valid attributes.type for command construction!");
	                }
	                
	                return new Model(attributes, options);
	            }
	        }, {
	            getBlacklist: function(attributes) {
	                var Model = getModel(attributes);
	                return Model && Model.blacklist || [];
	            }
	        });

	        return PolymorphicCommand;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Rangemap":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("util/dataset_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel,
	        datasetUtils
	    ) {
	        var Rangemap = BaseCommand.extend({
	            _displayName: _('Map Ranges').t(),
	            _placeholderSPL: 'eval',

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            // Create an editor value to start the user off based on their selection
	            setInitialState: function(initialStateOptions) {
	                initialStateOptions = initialStateOptions || {};

	                var selectionValue = parseInt(initialStateOptions.selectionValue, 10),
	                    lowerLimit = '',
	                    upperLimit = '';

	                if (!this.editorValues.length) {
	                    if (selectionValue && selectionValue > 0) {
	                        lowerLimit = 0;
	                        upperLimit = selectionValue;
	                    } else if (selectionValue && selectionValue < 0) {
	                        lowerLimit = selectionValue;
	                        upperLimit = 0;
	                    }

	                    this.editorValues.add({
	                        value: '',
	                        lowerLimit: lowerLimit,
	                        upperLimit: upperLimit
	                    });
	                }
	            },

	            validation: {
	                spl: 'validateSPL',
	                collisionFields: 'validateCollisionFields'
	            },

	            defaults: function() {
	                return Rangemap.getDefaults();
	            },

	            validateSPL: function() {
	                var currentRangeValue,
	                    lowerLimit,
	                    upperLimit,
	                    value,
	                    newFieldName = this.get('newFieldName'),
	                    errorString = this.validateForTypes(this.getWhitelistedTypes()),
	                    invalidFieldMessage = this.validateFieldName(newFieldName);

	                if (!this.hasValidRequiredColumn()) {
	                    return _('Select one numerical field to map ranges.').t();
	                }
	                
	                if (errorString) {
	                    return errorString;
	                }

	                if (this.editorValues.length === 0) {
	                    return _("Provide at least one range.").t();
	                }

	                if (invalidFieldMessage) {
	                    return invalidFieldMessage;
	                }

	                for (var i = 0; i < this.editorValues.length; i++) {
	                    currentRangeValue = this.editorValues.at(i);
	                    lowerLimit = currentRangeValue.get('lowerLimit');
	                    upperLimit = currentRangeValue.get('upperLimit');
	                    value = currentRangeValue.get('value');

	                    if (!datasetUtils.isNumber(lowerLimit)) {
	                        return _("Provide a numeric lower range limit.").t();
	                    }
	                    if (!datasetUtils.isNumber(upperLimit)) {
	                        return _("Provide a numeric upper range limit.").t();
	                    }
	                    if (parseInt(lowerLimit, 10) >= parseInt(upperLimit, 10)) {
	                        return _("Each upper range limit must be greater than its corresponding lower range limit.").t();
	                    }
	                    if (!value) {
	                        return _("Specify a value for each range.").t();
	                    }
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};
	                
	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Rangemap must be in a valid state before you can generate SPL.');
	                }
	                
	                // Example SPL: eval range=case(bytes>=1 AND bytes <=30, "green", bytes>=31 AND bytes <=39,
	                // "blue", bytes>=40 AND bytes <=41, "red", 1=1, "gray"), where 1=1 denotes the default
	                var requiredField = this.requiredColumns.first(),
	                    requiredFieldGuid = requiredField && requiredField.get('id'),
	                    fieldName = this.getFieldNameFromGuid(requiredFieldGuid, { singleQuoteWrap: true }),
	                    newFieldName = this.get('newFieldName'),
	                    defaultValue = datasetUtils.splEscape(this.get('defaultValue') || ''),
	                    rangesString;

	                rangesString = this.editorValues.map(function(rangeValue) {
	                    var lowerLimit = rangeValue.get('lowerLimit'),
	                        upperLimit = rangeValue.get('upperLimit'),
	                        value = datasetUtils.splEscape(rangeValue.get('value'));

	                    return fieldName + '>=' + lowerLimit + ' AND ' + fieldName + '<=' + upperLimit + ', "' + value + '"';
	                }, this).join(', ');

	                if (!_.isEmpty(defaultValue)) {
	                    rangesString += ', 1=1, "' + defaultValue + '"';
	                }

	                return 'eval "' + newFieldName + '"=case(' + rangesString + ')';
	            }
	        }, {
	            blacklist: [
	                {
	                    selection: BaseCommand.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES._RAW, ColumnModel.TYPES.BOOLEAN, ColumnModel.TYPES.STRING,
	                        ColumnModel.TYPES.IPV4, ColumnModel.TYPES.EPOCH_TIME, ColumnModel.TYPES._TIME ]
	                },
	                { selection: BaseCommand.SELECTION.MULTICOLUMN },
	                { selection: BaseCommand.SELECTION.TABLE },
	                {
	                    selection: BaseCommand.SELECTION.CELL,
	                    types: [ ColumnModel.TYPES._RAW, ColumnModel.TYPES.BOOLEAN, ColumnModel.TYPES.STRING,
	                        ColumnModel.TYPES.IPV4, ColumnModel.TYPES.EPOCH_TIME, ColumnModel.TYPES._TIME ]
	                },
	                { selection: BaseCommand.SELECTION.TEXT }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.RANGEMAP
	                }, BaseCommand.getDefaults());
	            }
	        });

	        return Rangemap;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Rename":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("util/dataset_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel,
	        datasetUtils
	    ) {
	        var Rename = BaseCommand.extend({
	            _displayName: _('Rename Field').t(),
	            _placeholderSPL: "rename",

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            // Set the newFieldName to be the old field name
	            setInitialState: function(initialStateOptions) {
	                initialStateOptions = initialStateOptions || {};

	                if (_.isUndefined(this.get('newFieldName'))) {
	                    if (!initialStateOptions.columnName) {
	                        throw new Error('No column name passed into Rename\'s setInitialState');
	                    }

	                    if (datasetUtils.isValidFieldName(initialStateOptions.columnName)) {
	                        this.set('newFieldName', initialStateOptions.columnName);
	                    }
	                }
	            },

	            defaults: function() {
	                return Rename.getDefaults();
	            },

	            validation: {
	                spl: 'validateSPL',
	                collisionFields: 'validateCollisionFields'
	            },

	            validateSPL: function (value, attr, options) {
	                var newFieldName = this.get('newFieldName'),
	                    invalidFieldMessage = this.validateFieldName(newFieldName),
	                    errorString = this.validateForTypes(this.getWhitelistedTypes());

	                if (!this.hasValidRequiredColumn()) {
	                    return _('Select a field to rename.').t();
	                }

	                if (errorString) {
	                    return errorString;
	                }

	                if (invalidFieldMessage) {
	                    return invalidFieldMessage;
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};

	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Rename must be in a valid state before you can generate SPL.');
	                }

	                var requiredColumn = this.requiredColumns.at(0),
	                    previousCommand = options.previousCommand || this.collection.getPreviousCommand(this);

	                return 'rename ' + previousCommand.getFieldNameFromGuid(requiredColumn.id, { doubleQuoteWrap: true }) + ' AS "' + this.get('newFieldName') + '"';
	            },

	            getOriginalColumnName: function(commandPristine) {
	                var previousCommand = commandPristine.collection.getPreviousCommand(commandPristine),
	                    requiredColumn = this.requiredColumns.at(0) || {};
	                return previousCommand.getFieldNameFromGuid(requiredColumn.id);
	            },

	            isDirty: function(commandPristine) {
	                // We pre-populate newName on the inmem command model with the current name of the column,
	                // which makes the inmem model look different from the pristine. isDirty would then report
	                // "true", which isn't right, so we'll override isDirty here to ignore that case.
	                var hasDefaultName = this.get('newFieldName') === this.getOriginalColumnName(commandPristine);
	                if (commandPristine.get('newFieldName') === undefined && hasDefaultName) {
	                    return false;
	                }
	                return BaseCommand.prototype.isDirty.apply(this, arguments);
	            },

	            setFromCommandJSON: function(jsonPayload, options) {
	                var requiredColumn = this.requiredColumns.at(0) || {};

	                options = options || {};

	                // In the case of a removed command before a rename we need to ensure that
	                // we do not clobber the new name of the column in this command.

	                if (options.commandRemoval && jsonPayload && jsonPayload.columns) {
	                    // clone the jsonPayload because we are going to be altering it
	                    jsonPayload = $.extend(true, {}, jsonPayload);
	                    // clone the options because we are going to be changing them
	                    options = $.extend(true, {}, options);
	                    // no need to clone again
	                    options.skipClone = true;

	                    // Because the rename command is special in that it creates the location
	                    // where a column is considered touched then we should respect the state
	                    // of its required column.
	                    jsonPayload.columns = _.filter(jsonPayload.columns, function(column){
	                        return (column.id !== requiredColumn.id);
	                    }.bind(this));
	                }

	                return BaseCommand.prototype.setFromCommandJSON.call(this, jsonPayload, options);
	            },

	            applyChangesToColumns: function(values, options) {
	                var requiredColumnId = this.requiredColumns.first() && this.requiredColumns.first().id;
	                this.columns.get(requiredColumnId).set('name', this.get('newFieldName'));
	            }

	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.CELL },
	                { selection: BaseCommand.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES._RAW, ColumnModel.TYPES._TIME ]
	                },
	                { selection: BaseCommand.SELECTION.MULTICOLUMN },
	                { selection: BaseCommand.SELECTION.TEXT }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}),  {
	                    type: BaseCommand.RENAME
	                }, BaseCommand.getDefaults());
	            }
	        });

	        return Rename;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Sort":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel
	    ) {
	        var Sort = BaseCommand.extend({
	            _displayName: _('Sort').t(),
	            _placeholderSPL: 'sort',

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);

	                // Must migrate requiredColumns to editorValues for pre-Kimono tables containing Sort
	                this.setInitialState();
	            },

	            // Set the order to the default one passed in on every required column
	            setInitialState: function(initialStateOptions) {
	                initialStateOptions = initialStateOptions || {};

	                // As of Kimono, requiredColumns should only contain guids, and not attrs like 'order'
	                // (which is stored in editorValues) - so we do some migration and cleanup here.
	                if (!this.editorValues.length) {
	                    this.requiredColumns.each(function(requiredColumn) {
	                        this.editorValues.add(
	                            {
	                                columnGuid: requiredColumn.id,
	                                order: requiredColumn.get('order') || initialStateOptions.order
	                            }
	                        );
	                        requiredColumn.unset('order', { silent: true });
	                    }, this);
	                }
	            },

	            defaults: function() {
	                return Sort.getDefaults();
	            },

	            validation: {
	                spl: 'validateSPL'
	            },

	            validateSPL: function(value, attr, option) {
	                var errorString = this.validateForTypes(this.getWhitelistedTypes()),
	                    editorValue, i;
	                if (!this.hasValidRequiredColumn()) {
	                    return _('Add one or more fields.').t();
	                }
	                if (errorString) {
	                    return errorString;
	                }
	                for (i = 0; i < this.editorValues.length; i++) {
	                    editorValue = this.editorValues.at(i);

	                    if (_.isUndefined(this.getFieldNameFromGuid(editorValue.get('columnGuid')))) {
	                        return _('One or more fields to sort have been removed.').t();

	                    }
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};

	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Sort must be in a valid state before you can generate SPL.');
	                }

	                // Add '-' prefix to field names if order is descending
	                // Could add '+' if order is ascending, but leaving it out as it isn't necessary
	                var fieldStringArray = this.editorValues.map(function(editorValue) {
	                    return (editorValue.get('order') === 'descending' ? '-' : '') + this.getFieldNameFromGuid(editorValue.get('columnGuid'), { doubleQuoteWrap: true });
	                }.bind(this));

	                return 'sort ' + fieldStringArray.join(', ');
	            },

	            isDirty: function(commandPristine) {
	                return BaseCommand.prototype.isDirty.call(this, commandPristine, { ignoreSortId: true });
	            }

	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.CELL },
	                {
	                    selection: BaseCommand.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES._RAW ]
	                },
	                { selection: BaseCommand.SELECTION.TEXT },
	                {
	                    selection: BaseCommand.SELECTION.MULTICOLUMN,
	                    types: [ ColumnModel.TYPES._RAW ]
	                }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.SORT,
	                    isComplete: true
	                }, BaseCommand.getDefaults());
	            }
	        });

	        return Sort;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Truncate":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("util/dataset_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        datasetUtils
	    ) {
	        var Truncate = BaseCommand.extend({
	            _displayName: _("Limit Rows").t(),
	            _placeholderSPL: "head",
	            isSearchPoint: true,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            validation: {
	                spl: 'validateSPL'
	            },

	            defaults: function() {
	                return Truncate.getDefaults();
	            },
	            
	            validateSPL: function(value, attr, options) {
	                var limit = this.get('limit');

	                if (limit) {
	                    if (!datasetUtils.isNumber(limit)) {
	                        return _("Max rows must be a number.").t();
	                    } else if (limit < 0) {
	                        return _("Max rows must be greater than or equal to zero.").t();
	                    }
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};
	            
	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Truncate must be in a valid state before you can generate SPL.');
	                }
	            
	                var limit = this.get('limit'),
	                    spl = 'head ';
	                return limit ? spl + limit : spl.trim();
	            },

	            setFromCommandJSON: function(jsonPayload, options) {
	                options = options || {};
	                options.skipClone = true;
	                BaseCommand.prototype.setFromCommandJSON.call(this, jsonPayload, options);
	            }
	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.CELL },
	                { selection: BaseCommand.SELECTION.COLUMN },
	                { selection: BaseCommand.SELECTION.MULTICOLUMN },
	                { selection: BaseCommand.SELECTION.TEXT }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}),  {
	                    type: BaseCommand.TRUNCATE,
	                    isComplete: true
	                }, BaseCommand.getDefaults());
	            }
	        });

	        return Truncate;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Join":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel,
	        splunkUtils
	    ) {
	        var Join = BaseCommand.extend({
	            _displayName: _('Lookup').t(),
	            _placeholderSPL: 'lookup',

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            validation: {
	                spl: 'validateSPL',
	                collisionFields: 'validateCollisionFields'
	            },

	            defaults: function() {
	                return Join.getDefaults();
	            },

	            getFieldsToAddAsArray: function() {
	                return this.get('fieldsToAdd');
	            },

	            // Join's kind of weird in that the user doesn't actually define the field names coming into the table,
	            // unlike all other commands. So, the user has no clue what to do when their fields collide.
	            // Especially true when joining from the same lookup twice. See SPL-124640.
	            validateCollisionFields: function() {
	                var collisionFields = this.get('collisionFields');

	                if (collisionFields && collisionFields.length) {
	                    return splunkUtils.sprintf(_('You cannot add the following fields from your lookup because they already exist in your table: %s. Rename the existing fields and try again.').t(), collisionFields.join(', '));
	                }
	            },

	            validateSPL: function(value, attr, options) {
	                var errorString = this.validateForTypes(this.getWhitelistedTypes()),
	                    hasIncompleteFieldPair;

	                if (!this.get('datasetNameToJoin')) {
	                    return _('Select a lookup.').t();
	                }

	                if (!this.hasValidRequiredColumn()) {
	                    return _('Provide one or more field pairs. They define the common fields in the table and lookup.').t();
	                }

	                hasIncompleteFieldPair = this.requiredColumns.any(function(requiredColumn) {
	                    return !(requiredColumn.get('columnToJoinWith'));
	                }, this);
	                if (hasIncompleteFieldPair) {
	                    return _('One or more of your field pairs is incomplete.').t();
	                }

	                if (_.isEmpty(this.get('fieldsToAdd'))) {
	                    return _('Provide one or more fields to add to the table.').t();
	                }

	                if (errorString) {
	                    return errorString;
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};
	                
	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Join must be in a valid state before you can generate SPL.');
	                }
	                
	                var columnFromTable,
	                    columnFromDataset,
	                    base = 'lookup ',
	                    datasetName = '"' + this.get('datasetNameToJoin') + '" ',
	                    conditions = this.requiredColumns.map(function(column) {
	                            columnFromTable = this.getFieldNameFromGuid(column.get('id'));
	                            columnFromDataset = column.get('columnToJoinWith');

	                            return (columnFromTable === columnFromDataset) ?
	                                '"' + columnFromTable + '"' :
	                                '"' + columnFromDataset + '" as "' + columnFromTable + '"';
	                        }, this).join(', '),
	                    output = ' OUTPUT ',
	                    fieldsToAdd = this.get('fieldsToAdd') && this.get('fieldsToAdd').map(function(field) {
	                            return '"' + field + '"'; 
	                        }).join(', ');

	                return base + datasetName + conditions + output + fieldsToAdd;
	            }

	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.CELL },
	                {
	                    selection: BaseCommand.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES._RAW ]
	                },
	                { selection: BaseCommand.SELECTION.TEXT },
	                {
	                    selection: BaseCommand.SELECTION.MULTICOLUMN,
	                    types: [ ColumnModel.TYPES._RAW ]
	                }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.JOIN
	                }, BaseCommand.getDefaults());
	            }
	        });

	        return Join;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Replace":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("util/dataset_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseModel,
	        BaseCommandModel,
	        ColumnModel,
	        datasetUtils
	    ) {
	        var Replace = BaseCommandModel.extend({
	            _displayName: _('Replace Values').t(),
	            _placeholderSPL: 'replace',

	            initialize: function(attributes, options) {
	                BaseCommandModel.prototype.initialize.apply(this, arguments);
	            },

	            // Create an editor value to start the user off based on their selection
	            setInitialState: function(initialStateOptions) {
	                initialStateOptions = initialStateOptions || {};

	                if (!this.editorValues.length) {
	                    if (initialStateOptions.selectionValue) {
	                        this.editorValues.reset([{
	                            oldValue: initialStateOptions.isText ?
	                                '*' + initialStateOptions.selectionValue + '*' :
	                                initialStateOptions.selectionValue,
	                            newValue: ''
	                        }]);
	                    } else {
	                        this.editorValues.reset([{
	                            oldValue: '',
	                            newValue: ''
	                        }]);
	                    }
	                }
	            },
	            
	            defaults: function() {
	                return Replace.getDefaults();
	            },
	            
	            validation: {
	                spl: 'validateSPL'
	            },
	            
	            validateSPL: function (value, attr, options) {
	                var allOldValues = this.editorValues.pluck('oldValue'),
	                    errorString = this.validateForTypes(this.getWhitelistedTypes()),
	                    currentEditorValue,
	                    oldValue,
	                    newValue;
	                
	                if (!this.hasValidRequiredColumn()) {
	                    return _('Select a field with values you want to replace.').t();
	                }

	                if (this.editorValues.length === 0) {
	                    return _('Add one or more values.').t();
	                }

	                if (errorString) {
	                    return errorString;
	                }

	                for (var i = 0; i < this.editorValues.length; i++) {
	                    currentEditorValue = this.editorValues.at(i);
	                    oldValue = currentEditorValue.get('oldValue');
	                    newValue = currentEditorValue.get('newValue');

	                    if (_.isEmpty(oldValue) && _.isEmpty(newValue)) {
	                        return _('For each replacement, either a current value or a new value must be defined.').t();
	                    }
	                }

	                if (_.uniq(allOldValues).length < allOldValues.length) {
	                    return _('You cannot have two or more duplicated current values.').t();
	                }
	            },
	            
	            generateSPL: function(options) {
	                options = options || {};
	                
	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Replace must be in a valid state before you can generate SPL.');
	                }
	                
	                var spl = 'replace ',
	                    requiredColumn = this.requiredColumns.at(0),
	                    field = this.getFieldNameFromGuid(requiredColumn.id, { doubleQuoteWrap: true }),
	                    valuesArray = this.editorValues.map(function(editorValue) {
	                        var oldValue = datasetUtils.splEscape(editorValue.get('oldValue') || ''),
	                            newValue = datasetUtils.splEscape(editorValue.get('newValue') || '');

	                        return '"' + oldValue + '" with "' + newValue  + '"';
	                    }.bind(this));
	                
	                return spl + valuesArray.join(', ') + ' in ' + field;
	            }

	        }, {
	            blacklist: [
	                {
	                    selection: BaseCommandModel.SELECTION.TEXT,
	                    types: [ ColumnModel.TYPES._RAW, ColumnModel.TYPES._TIME ]
	                },
	                {
	                    selection: BaseCommandModel.SELECTION.CELL,
	                    types: [ ColumnModel.TYPES._RAW, ColumnModel.TYPES._TIME ]
	                },
	                {
	                    selection: BaseCommandModel.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES._RAW, ColumnModel.TYPES._TIME ]
	                },
	                { selection: BaseCommandModel.SELECTION.MULTICOLUMN },
	                { selection: BaseCommandModel.SELECTION.TABLE }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommandModel.REPLACE
	                }, BaseCommandModel.getDefaults());
	            }
	        });

	        return Replace;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Dedup":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel
	    ) {
	        var Dedup = BaseCommand.extend({
	            _displayName: _("Remove Duplicates").t(),
	            _placeholderSPL: "dedup",
	            isSearchPoint: true,
	            
	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            validation: {
	                spl: 'validateSPL'
	            },
	            
	            defaults: function() {
	                return Dedup.getDefaults();
	            },

	            validateSPL: function (value, attr, options) {
	                var errorString = this.validateForTypes(this.getWhitelistedTypes());
	                if (!this.hasValidRequiredColumn()) {
	                    return _("Provide one or more fields.").t();
	                }
	                if (errorString) {
	                    return errorString;
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};
	                
	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Dedup must be in a valid state before you can generate SPL.');
	                }
	                
	                var spl = 'dedup ',
	                    requiredFieldGuids = this.requiredColumns.pluck('id'),
	                    requiredFieldsStr = this.convertGuidsToFields(requiredFieldGuids, { doubleQuoteWrap: true }).join(' ');

	                return spl + requiredFieldsStr;
	            }
	            
	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.CELL },
	                {
	                    selection: BaseCommand.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES._RAW ]
	                },
	                { selection: BaseCommand.SELECTION.TEXT },
	                {
	                    selection: BaseCommand.SELECTION.MULTICOLUMN,
	                    types: [ ColumnModel.TYPES._RAW ]
	                }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.DEDUP,
	                    isComplete: true
	                }, BaseCommand.getDefaults(overrides));
	            }
	        });

	        return Dedup;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/datasets/commands/ExtractDateTime":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("util/dataset_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel,
	        datasetUtils
	    ) {
	        var ExtractDateTime = BaseCommand.extend({
	            _displayName: _("Format Timestamp").t(),
	            _placeholderSPL: "eval",
	            _advancedCommand: BaseCommand.EVAL,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },
	            
	            defaults: function() {
	                return ExtractDateTime.getDefaults();
	            },

	            validation: {
	                newFieldName: {
	                    required: true,
	                    msg: _("Provide a new field name.").t()
	                },
	                formatPattern: {
	                    required: true,
	                    msg: _("Select a format.").t()
	                },
	                spl: 'validateSPL',
	                collisionFields: 'validateCollisionFields'
	            },
	            
	            validateSPL: function(value, attr, option) {
	                var newFieldName = this.get('newFieldName'),
	                    formatPattern = this.get('formatPattern'),
	                    errorString = this.validateForTypes(this.getWhitelistedTypes()),
	                    invalidFieldMessage = this.validateFieldName(newFieldName);

	                if (invalidFieldMessage) {
	                    return invalidFieldMessage;
	                }
	                
	                if (!formatPattern) {
	                    return _("Select a predefined format or enter a custom pattern.").t();
	                }

	                if (!this.hasValidRequiredColumn()) {
	                    return _("Provide an epoch time field, such as _time.").t();
	                }
	                if (errorString) {
	                    return errorString;
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};
	                
	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('ExtractDateTime must be in a valid state before you can generate SPL.');
	                }

	                var newFieldName = this.get('newFieldName'),
	                    expression = this.getExpression();

	                return 'eval "' + newFieldName + '"=' + expression;
	            },

	            getAdvancedCommandAttributes: function() {
	                return {
	                    newFieldName: this.get('newFieldName'),
	                    expression: this.getExpression()
	                };
	            },

	            getExpression: function() {
	                var formatPattern = datasetUtils.splEscape(this.get('formatPattern') || ''),
	                    field = this.hasValidRequiredColumn() ?
	                        this.getFieldNameFromGuid(this.requiredColumns.first().id, { singleQuoteWrap: true }) :
	                        '\'\'';

	                return 'strftime(' + field + ', "' + formatPattern + '")';
	            }
	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.CELL },
	                {
	                    selection: BaseCommand.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES._RAW, ColumnModel.TYPES.STRING, ColumnModel.TYPES.NUMBER, ColumnModel.TYPES.BOOLEAN, ColumnModel.TYPES.IPV4 ]
	                },
	                { selection: BaseCommand.SELECTION.MULTICOLUMN },
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.TEXT }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.EXTRACT_DATE_TIME
	                }, BaseCommand.getDefaults());
	            }
	        });

	        return ExtractDateTime;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/RemoveFields":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel
	    ) {
	        var RemoveFields = BaseCommand.extend({
	            _displayName: _('Remove Fields').t(),
	            _placeholderSPL: 'fields -',

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            defaults: function() {
	                return RemoveFields.getDefaults();
	            },

	            validation: {
	                spl: 'validateSPL'
	            },

	            validateSPL: function(value, attr, options) {
	                var errorString = this.validateForTypes(this.getWhitelistedTypes());
	                if (!this.hasValidRequiredColumn()) {
	                    return _('Select one or more fields.').t();
	                }
	                if (errorString) {
	                    return errorString;
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};
	                
	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('RemoveFields must be in a valid state before you can generate SPL.');
	                }

	                var currentColumnIds = this.requiredColumns.pluck('id'),
	                    // Work off the previous command, if passed in
	                    // If we don't have a previous command, but we are already part of the commands collection,
	                    // we can use the collection to get the previous columns (our field we will or have removed may not be in the
	                    // current working commands column collection)
	                    workingCommand = options.previousCommand || (this.collection && this.collection.getPreviousCommand(this)) || this,
	                    // Get the fields, being sure to strip out any undefineds that come back.
	                    fieldsStr = _(workingCommand.convertGuidsToFields(currentColumnIds, {
	                        doubleQuoteWrap: true})).reject(function(fieldName) {
	                            return _.isUndefined(fieldName);
	                        }.bind(this)).join(', ');
	                return 'fields - ' + fieldsStr;
	            },

	            filterRemovedColumns: function(idsToRemove) {
	                return this.getPreviousColumns().filter(function(column) {
	                    return !_.contains(idsToRemove, column.id);
	                }.bind(this));
	            },

	            applyChangesToColumns: function(values, options) {
	                this.columns.remove(values.selectedColumns);
	            }
	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.CELL },
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.TEXT },
	                {
	                    selection: BaseCommand.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES._TIME ]
	                },
	                {
	                    selection: BaseCommand.SELECTION.MULTICOLUMN,
	                    types: [ ColumnModel.TYPES._TIME ]
	                }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.REMOVE,
	                    isComplete: true
	                }, BaseCommand.getDefaults());
	            }
	        });

	        return RemoveFields;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Rex":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel
	    ) {
	        var Rex = BaseCommand.extend({
	            _displayName: _('Extract').t(),
	            _placeholderSPL: 'rex',
	            _advancedCommand: BaseCommand.ADVANCED_REX,
	            isModalized: true,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            setInitialState: function(initialStateOptions) {
	                initialStateOptions = initialStateOptions || {};

	                this.editorValues.add({
	                    startPosition: initialStateOptions.startPosition,
	                    endPosition: initialStateOptions.endPosition,
	                    fullText: initialStateOptions.fullText,
	                    selectedText: initialStateOptions.selectedText
	                });
	            },

	            defaults: function() {
	                return Rex.getDefaults();
	            },

	            validation: {
	                spl: 'validateSPL'
	            },

	            // While there are other attributes on this command that are required to generate the SPL, since they're
	            // forced to be added through the modal, we don't need to check their existence here.
	            validateSPL: function(value, attr, option) {
	                var errorString = this.validateForTypes(this.getWhitelistedTypes( { selectionType: BaseCommand.SELECTION.TEXT })),
	                    invalidFieldNameMessage = this.validateRexFieldName(this.get('newFieldName'));

	                if (!this.hasValidRequiredColumn()) {
	                    // This will happen when someone removes the field that this rex previously operated on.
	                    // In the future, we need to have a way to re-select the field to get us out of error state.
	                    return _('Remove this command. The field the command operated on has been changed or removed.').t();
	                }

	                if (invalidFieldNameMessage) {
	                    return invalidFieldNameMessage;
	                }

	                if (errorString) {
	                    return errorString;
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};
	            
	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Rex must be in a valid state before you can generate SPL.');
	                }
	                
	                var regExpStarting = this.get('regExpStarting'),
	                    requiredColumn = this.requiredColumns.at(0),
	                    regex = this.generateRegex();

	                return 'rex field=' + this.getFieldNameFromGuid(requiredColumn.id, { doubleQuoteWrap: true }) + ' "' + regex + '"';
	            },

	            getAdvancedCommandAttributes: function() {
	                return {
	                    regex: this.generateRegex()
	                };
	            },

	            generateRegex: function() {
	                var regExpStarting = this.get('regExpStarting'),
	                    newFieldName = this.get('newFieldName'),
	                    regExpExtraction = this.get('regExpExtraction'),
	                    regExpStopping = this.get('regExpStopping');

	                return regExpStarting + '(?<' + newFieldName + '>' + regExpExtraction + ')' + regExpStopping;
	            },

	            hasRegexRules: function() {
	                return !_.isUndefined(this.get('regExpStarting')) &&
	                    !_.isUndefined(this.get('regExpExtraction')) &&
	                    !_.isUndefined(this.get('regExpStopping'));
	            }
	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.CELL },
	                { selection: BaseCommand.SELECTION.COLUMN },
	                { selection: BaseCommand.SELECTION.MULTICOLUMN },
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.TEXT,
	                    types: [ ColumnModel.TYPES.EPOCH_TIME, ColumnModel.TYPES._TIME, ColumnModel.TYPES.BOOLEAN, ColumnModel.TYPES.NUMBER ]
	                }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.REX
	                }, BaseCommand.getDefaults());
	            }
	        });
	        
	        return Rex;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/FilterValues":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("models/Base"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("util/dataset_utils"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        $,
	        BaseModel,
	        BaseCommandModel,
	        ColumnModel,
	        datasetUtils,
	        splunkUtil
	    ) {
	        // Various filter comparator types
	        var FILTER_TYPES = {
	                CONTAINS: "contains",
	                DOESNOTCONTAIN: "doesNotContain",
	                STARTSWITH: "startsWith",
	                DOESNOTSTARTWITH: "doesNotStartWith",
	                ENDSWITH: "endsWith",
	                DOESNOTENDWITH: "doesNotEndWith",
	                EQUALS: "equals",
	                DOESNOTEQUAL: "doesNotEqual",
	                MATCHES: "matches",
	                LESSTHAN: "lessThan",
	                LESSTHANOREQUALTO: "lessThanOrEqualTo",
	                GREATERTHAN: "greaterThan",
	                GREATERTHANOREQUALTO: "greaterThanOrEqualTo",
	                ISNULL: "isNull",
	                ISNOTNULL: "isNotNull",
	                ISEMPTY: "isEmpty",
	                ISNOTEMPTY: "isNotEmpty",
	                ISTRUE: "isTrue",
	                ISFALSE: "isFalse"
	            },
	            FILTER_ITEMS = {},
	            FILTER_CONFIGS = {},
	            EQUALS_COMMANDS = {},

	            normalizeFilterType = function(type) {
	                if ((type === ColumnModel.TYPES["NUMBER"]) || (type === ColumnModel.TYPES["EPOCH_TIME"])) {
	                    return ColumnModel.TYPES["NUMBER"];
	                }

	                return ColumnModel.TYPES["STRING"];
	            },

	            getFilterItems = function(type) {
	                var allFilterItems = _.extend({}, FILTER_ITEMS, EQUALS_COMMANDS[normalizeFilterType(type)]),
	                    filterConfigs = FILTER_CONFIGS[type] || {},
	                    whitelistedItems = {};

	                _.each(filterConfigs.whitelist, function(filter) {
	                    whitelistedItems[filter] = allFilterItems[filter];
	                }.bind(this));

	                return {
	                    defaultComparator: filterConfigs.defaultComparator,
	                    items: whitelistedItems
	                };
	            };


	        EQUALS_COMMANDS[ColumnModel.TYPES["NUMBER"]] = {};
	        EQUALS_COMMANDS[ColumnModel.TYPES["NUMBER"]][FILTER_TYPES["EQUALS"]] = {
	            label: "=",
	            spl: {
	                search: '%(field)s = %(value)s',
	                where: 'mvcount(mvfilter(tonumber(%(field)s) == %(value)s)) >= 1'
	            }
	        };
	        EQUALS_COMMANDS[ColumnModel.TYPES["NUMBER"]][FILTER_TYPES["DOESNOTEQUAL"]] = {
	            label: "!=",
	            spl: {
	                search: '%(field)s != %(value)s',
	                where: 'mvcount(mvfilter(tonumber(%(field)s) != %(value)s)) >= 1 OR isnull(%(field)s)'
	            }
	        };

	        EQUALS_COMMANDS[ColumnModel.TYPES["STRING"]] = {};
	        EQUALS_COMMANDS[ColumnModel.TYPES["STRING"]][FILTER_TYPES["EQUALS"]] = {
	            label: _("equals").t(),
	            spl: {
	                search: '%(field)s = "%(value)s"',
	                where: 'mvcount(mvfilter(lower(%(field)s) == lower("%(value)s"))) >= 1'
	            },
	            canUseEmptyString: true
	        };
	        EQUALS_COMMANDS[ColumnModel.TYPES["STRING"]][FILTER_TYPES["DOESNOTEQUAL"]] = {
	            label: _("does not equal").t(),
	            spl: {
	                search:'%(field)s != "%(value)s"',
	                where: 'mvcount(mvfilter(lower(%(field)s) != lower("%(value)s"))) >= 1 OR isnull(%(field)s)'
	            },
	            canUseEmptyString: true
	        };

	        // Mapping for the label and SPL for each type of filter comparator
	        FILTER_ITEMS[FILTER_TYPES["CONTAINS"]] = {
	            label: _("contains").t(),
	            spl: {
	                search: '%(field)s = "*%(value)s*"',
	                where: 'mvcount(mvfilter(like(lower(%(field)s), lower("%%%(value)s%%")))) >= 1'
	            }
	        };
	        FILTER_ITEMS[FILTER_TYPES["DOESNOTCONTAIN"]] = {
	            label: _("does not contain").t(),
	            spl: {
	                search: '%(field)s != "*%(value)s*"',
	                where: 'mvcount(mvfilter(NOT like(lower(%(field)s), lower("%%%(value)s%%")))) >= 1 OR isnull(%(field)s)'
	            }
	        };
	        FILTER_ITEMS[FILTER_TYPES["STARTSWITH"]] = {
	            label: _("starts with").t(),
	            spl: {
	                search: '%(field)s = "%(value)s*"',
	                where: 'mvcount(mvfilter(like(lower(%(field)s), lower("%(value)s%%")))) >= 1'
	            }
	        };
	        FILTER_ITEMS[FILTER_TYPES["DOESNOTSTARTWITH"]] = {
	            label: _("does not start with").t(),
	            spl: {
	                search: '%(field)s != "%(value)s*"',
	                where: 'mvcount(mvfilter(like(lower(%(field)s), lower("%(value)s%%")))) == 0'
	            }
	        };
	        FILTER_ITEMS[FILTER_TYPES["ENDSWITH"]] = {
	            label: _("ends with").t(),
	            spl: {
	                search: '%(field)s = "*%(value)s"',
	                where: 'mvcount(mvfilter(like(lower(%(field)s), lower("%%%(value)s")))) >= 1'
	            }
	        };
	        FILTER_ITEMS[FILTER_TYPES["DOESNOTENDWITH"]] = {
	            label: _("does not end with").t(),
	            spl: {
	                search: '%(field)s != "*%(value)s"',
	                where: 'mvcount(mvfilter(like(lower(%(field)s), lower("%%%(value)s")))) == 0'
	            }
	        };
	        FILTER_ITEMS[FILTER_TYPES["MATCHES"]] = {
	            label: _("matches pattern").t(),
	            spl: {
	                search: '%(field)s = "%(value)s"',
	                where: 'mvcount(mvfilter(like(lower(%(field)s), lower("%(value)s")))) >= 1'
	            }
	        };
	        FILTER_ITEMS[FILTER_TYPES["LESSTHAN"]] = {
	            label: "<",
	            spl: {
	                // search: '%(field)s < %(value)s',
	                where: 'mvcount(mvfilter(tonumber(%(field)s) < %(value)s)) >= 1'
	            }
	        };
	        FILTER_ITEMS[FILTER_TYPES["LESSTHANOREQUALTO"]] = {
	            label: "<=",
	            spl: {
	                // search: '%(field)s <= %(value)s',
	                where: 'mvcount(mvfilter(tonumber(%(field)s) <= %(value)s)) >= 1'
	            }
	        };
	        FILTER_ITEMS[FILTER_TYPES["GREATERTHAN"]] = {
	            label: ">",
	            spl: {
	                // search: '%(field)s > %(value)s',
	                where: 'mvcount(mvfilter(tonumber(%(field)s) > %(value)s)) >= 1'
	            }
	        };
	        FILTER_ITEMS[FILTER_TYPES["GREATERTHANOREQUALTO"]] = {
	            label: ">=",
	            spl: {
	                // search: '%(field)s >= %(value)s',
	                where: 'mvcount(mvfilter(tonumber(%(field)s) >= %(value)s)) >= 1'
	            }
	        };
	        FILTER_ITEMS[FILTER_TYPES["ISNULL"]] = {
	            label: _("is null").t(),
	            spl: {
	                search: 'NOT %(field)s = "*"',
	                where: 'isnull(%(field)s)'
	            },
	            rightSideDisabled: true
	        };
	        FILTER_ITEMS[FILTER_TYPES["ISNOTNULL"]] = {
	            label: _("is not null").t(),
	            spl: {
	                search: '%(field)s = "*"',
	                where: 'isnotnull(%(field)s)'
	            },
	            rightSideDisabled: true
	        };
	        FILTER_ITEMS[FILTER_TYPES["ISEMPTY"]] = {
	            label: _("is empty").t(),
	            spl: {
	                search: '%(field)s = ""',
	                where: 'mvcount(mvfilter(%(field)s != "")) == 0'
	            },
	            rightSideDisabled: true
	        };
	        FILTER_ITEMS[FILTER_TYPES["ISNOTEMPTY"]] = {
	            label: _("is not empty").t(),
	            spl: {
	                search: 'NOT %(field)s = ""',
	                where: 'mvcount(mvfilter(%(field)s != "")) >= 1'
	            },
	            rightSideDisabled: true
	        };
	        FILTER_ITEMS[FILTER_TYPES["ISTRUE"]] = {
	            label: _("is true").t(),
	            spl: {
	                search: '%(field)s = true',
	                where: 'mvcount(mvfilter(lower(%(field)s) == true)) >= 1'
	            },
	            rightSideDisabled: true
	        };
	        FILTER_ITEMS[FILTER_TYPES["ISFALSE"]] = {
	            label: _("is false").t(),
	            spl: {
	                search: '%(field)s = false',
	                where: 'mvcount(mvfilter(lower(%(field)s) == false)) >= 1'
	            },
	            rightSideDisabled: true
	        };

	        // Mapping for each column type to the filter items and types for each one
	        FILTER_CONFIGS[ColumnModel.TYPES["_RAW"]] = {
	            defaultComparator: FILTER_TYPES["CONTAINS"],
	            whitelist: [
	                FILTER_TYPES["EQUALS"],
	                FILTER_TYPES["DOESNOTEQUAL"],
	                FILTER_TYPES["CONTAINS"],
	                FILTER_TYPES["DOESNOTCONTAIN"],
	                FILTER_TYPES["STARTSWITH"],
	                FILTER_TYPES["DOESNOTSTARTWITH"],
	                FILTER_TYPES["ENDSWITH"],
	                FILTER_TYPES["DOESNOTENDWITH"],
	                FILTER_TYPES["MATCHES"]
	            ]
	        };
	        FILTER_CONFIGS[ColumnModel.TYPES["NUMBER"]] = {
	            defaultComparator: FILTER_TYPES["EQUALS"],
	            whitelist: [
	                FILTER_TYPES["EQUALS"],
	                FILTER_TYPES["DOESNOTEQUAL"],
	                FILTER_TYPES["LESSTHAN"],
	                FILTER_TYPES["LESSTHANOREQUALTO"],
	                FILTER_TYPES["GREATERTHAN"],
	                FILTER_TYPES["GREATERTHANOREQUALTO"],
	                FILTER_TYPES["ISNULL"],
	                FILTER_TYPES["ISNOTNULL"],
	                FILTER_TYPES["ISEMPTY"],
	                FILTER_TYPES["ISNOTEMPTY"]
	            ]
	        };
	        FILTER_CONFIGS[ColumnModel.TYPES["BOOLEAN"]] = {
	            defaultComparator: FILTER_TYPES["EQUALS"],
	            whitelist: [
	                FILTER_TYPES["ISTRUE"],
	                FILTER_TYPES["ISFALSE"],
	                FILTER_TYPES["ISNULL"],
	                FILTER_TYPES["ISNOTNULL"],
	                FILTER_TYPES["ISEMPTY"],
	                FILTER_TYPES["ISNOTEMPTY"]
	            ]
	        };
	        FILTER_CONFIGS[ColumnModel.TYPES["STRING"]] = {
	            defaultComparator: FILTER_TYPES["CONTAINS"],
	            whitelist: [
	                FILTER_TYPES["EQUALS"],
	                FILTER_TYPES["DOESNOTEQUAL"],
	                FILTER_TYPES["CONTAINS"],
	                FILTER_TYPES["DOESNOTCONTAIN"],
	                FILTER_TYPES["STARTSWITH"],
	                FILTER_TYPES["DOESNOTSTARTWITH"],
	                FILTER_TYPES["ENDSWITH"],
	                FILTER_TYPES["DOESNOTENDWITH"],
	                FILTER_TYPES["MATCHES"],
	                FILTER_TYPES["ISNULL"],
	                FILTER_TYPES["ISNOTNULL"],
	                FILTER_TYPES["ISEMPTY"],
	                FILTER_TYPES["ISNOTEMPTY"]
	            ]
	        };
	        FILTER_CONFIGS[ColumnModel.TYPES["IPV4"]] = {
	            defaultComparator: FILTER_TYPES["CONTAINS"],
	            whitelist: [
	                FILTER_TYPES["ISNULL"],
	                FILTER_TYPES["ISNOTNULL"],
	                FILTER_TYPES["ISEMPTY"],
	                FILTER_TYPES["ISNOTEMPTY"],
	                FILTER_TYPES["EQUALS"],
	                FILTER_TYPES["DOESNOTEQUAL"],
	                FILTER_TYPES["CONTAINS"],
	                FILTER_TYPES["DOESNOTCONTAIN"],
	                FILTER_TYPES["STARTSWITH"],
	                FILTER_TYPES["DOESNOTSTARTWITH"],
	                FILTER_TYPES["ENDSWITH"],
	                FILTER_TYPES["DOESNOTENDWITH"],
	                FILTER_TYPES["MATCHES"]
	            ]
	        };
	        FILTER_CONFIGS[ColumnModel.TYPES["_TIME"]] = {
	            defaultComparator: FILTER_TYPES["CONTAINS"],
	            whitelist: []
	        };
	        FILTER_CONFIGS[ColumnModel.TYPES["EPOCH_TIME"]] = {
	            defaultComparator: FILTER_TYPES["EQUALS"],
	            whitelist: [
	                FILTER_TYPES["EQUALS"],
	                FILTER_TYPES["DOESNOTEQUAL"],
	                FILTER_TYPES["LESSTHAN"],
	                FILTER_TYPES["LESSTHANOREQUALTO"],
	                FILTER_TYPES["GREATERTHAN"],
	                FILTER_TYPES["GREATERTHANOREQUALTO"],
	                FILTER_TYPES["ISNULL"],
	                FILTER_TYPES["ISNOTNULL"],
	                FILTER_TYPES["ISEMPTY"],
	                FILTER_TYPES["ISNOTEMPTY"]
	            ]
	        };

	        var FilterValues = BaseCommandModel.extend({
	            _displayName: _('Filter by Value').t(),
	            _placeholderSPL: BaseCommandModel.SEARCH,
	            _advancedCommand: BaseCommandModel.SEARCH,
	            isSearchPoint: true,

	            initialize: function(attributes, options) {
	                BaseCommandModel.prototype.initialize.apply(this, arguments);

	                this.setWhereDependentAttributes();
	                this.on('editorValuesChange', this.setWhereDependentAttributes);
	            },

	            setWhereDependentAttributes: function() {
	                if (this.shouldUseWhere()) {
	                    this._placeholderSPL = BaseCommandModel.WHERE;
	                    this._advancedCommand = BaseCommandModel.WHERE;
	                } else {
	                    this._placeholderSPL = BaseCommandModel.SEARCH;
	                    this._advancedCommand = BaseCommandModel.SEARCH;
	                }
	            },

	            // Create an editor value for each required column
	            setInitialState: function(initialStateOptions) {
	                initialStateOptions = initialStateOptions || {};

	                var editorValues = [];

	                if (!this.editorValues.length) {
	                    this.requiredColumns.each(function(requiredColumn) {
	                        var currentColumn = this.columns.get(requiredColumn.id),
	                            currentColumnType = currentColumn.get('type'),
	                            editorValue = {
	                                columnGuid: requiredColumn.id,
	                                comparator: initialStateOptions.initialComparator ||
	                                    getFilterItems(currentColumnType).defaultComparator
	                            };

	                        if (initialStateOptions.textVal) {
	                            editorValue.filterString = initialStateOptions.textVal;
	                        } else if (initialStateOptions.cellVal) {
	                            editorValue.filterString = initialStateOptions.cellVal;
	                        }
	                        editorValues.push(editorValue);
	                    }.bind(this));

	                    this.editorValues.reset(editorValues);
	                }
	            },

	            defaults: function() {
	                return FilterValues.getDefaults();
	            },

	            validation: {
	                spl: 'validateSPL'
	            },

	            validateSPL: function(value, attr, options) {
	                var typeErrorString = this.validateForTypes(this.getWhitelistedTypes()),
	                    errorString;

	                if (!this.editorValues.length) {
	                    return _('You must have at least one defined filter.');
	                }

	                if (typeErrorString) {
	                    return typeErrorString;
	                }

	                this.editorValues.each(function(editorValue) {
	                    var filterString = editorValue.get('filterString'),
	                        comparator = editorValue.get('comparator'),
	                        columnGuid = editorValue.get('columnGuid'),
	                        column = this.columns.get(columnGuid),
	                        type = column && column.get('type');

	                    if (!column) {
	                        if (!errorString) {
	                            errorString = _('One or more conditions require fields that have been removed.').t();
	                        }
	                    } else if (errorString) {
	                        return;
	                    } else if (!_.contains(FILTER_CONFIGS[type].whitelist, comparator)) {
	                        errorString = splunkUtil.sprintf(_('A condition defined for %s is not compatible with the field\'s type \"%s\".').t(),
	                            column.get('name'),
	                            type
	                        );
	                    // We only care about the filter string if it's not being disabled
	                    } else if (!getFilterItems(type).items[comparator].rightSideDisabled) {
	                        // Return error message for empty string and null values,
	                        // unless a value is not required (Right side is disabled)
	                        if (!filterString && !getFilterItems(type).items[comparator].canUseEmptyString) {
	                            if (this.editorValues.length > 1) {
	                                errorString = _('One or more conditions are missing values.').t();
	                            } else {
	                                errorString = _('No value was entered for the condition.').t();
	                            }

	                        // Make sure that if the type is numeric, so is the value
	                        } else if (type === ColumnModel.TYPES['NUMBER'] && !datasetUtils.isNumber(filterString)) {
	                            errorString = _('You are filtering on a numerically-typed field. Its filter can only contain numerical values.').t();

	                        // Throw if the user tries to use wildcards (* or %), except for * when matching patterns
	                        } else if (_.contains(filterString, "\*") &&
	                            comparator !== FILTER_TYPES['MATCHES']) {
	                            errorString = _('Asterisks are only permitted when matching a pattern.').t();
	                        } else if (_.contains(filterString, "%") && this.shouldUseWhere()) {
	                            errorString = _('Percent signs are not permitted.').t();
	                        }
	                    }

	                    if (errorString) {
	                        editorValue.set('hasError', true);
	                    } else {
	                        editorValue.set('hasError', false);
	                    }

	                }.bind(this));

	                // Intentionally return null, indicating no error, if there is not one set
	                return errorString;
	            },

	            generateSPL: function(options) {
	                options = options || {};

	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('FilterValues must be in a valid state before you can generate SPL.');
	                }

	                var command = this.shouldUseWhere() ? 'where' : 'search',
	                    expression = this.getExpression();

	                return command + ' ' + expression;
	            },

	            getAdvancedCommandAttributes: function() {
	                return {
	                    expression: this.getExpression()
	                };
	            },

	            getExpression: function() {
	                var shouldUseWhere = this.shouldUseWhere(),
	                    command = shouldUseWhere ? 'where' : 'search',
	                    // A radio sets this value, determining how to handle multiple values
	                    operator = this.get('filterAllValues') ? ' AND ' : ' OR ';

	                return this.editorValues.map(function(editorValue) {
	                    var comparator = editorValue.get('comparator'),
	                        columnGuid = editorValue.get('columnGuid'),
	                        fieldName = shouldUseWhere ?
	                            this.getFieldNameFromGuid(columnGuid, { singleQuoteWrap: true }) :
	                            this.getFieldNameFromGuid(columnGuid, { doubleQuoteWrap: true }),
	                        column = this.columns.get(columnGuid),
	                        type,
	                        filterItems,
	                        replacementString,
	                        filterString;

	                    if (!column) {
	                        return;
	                    }

	                    type = column.get('type');
	                    filterItems = getFilterItems(type).items[comparator];
	                    replacementString = filterItems.spl[command];
	                    filterString = datasetUtils.splEscape(editorValue.get('filterString') || '');

	                    if (shouldUseWhere) {
	                        filterString = filterString.replace(/\*/g, '%');
	                    }

	                    return splunkUtil.sprintf(replacementString, {
	                        field: fieldName,
	                        value: filterString
	                    });
	                }, this).join(operator);
	            },

	            shouldUseWhere: function() {
	                return this.requiredColumns.any(function(col) {
	                    var column = this.columns.get(col.id);
	                    return column && (normalizeFilterType(column.get('type')) === ColumnModel.TYPES['NUMBER']);
	                }.bind(this));
	            }
	        }, {
	            blacklist: [
	                {
	                    selection: BaseCommandModel.SELECTION.MULTICOLUMN,
	                    types: [ ColumnModel.TYPES._TIME ]
	                },
	                {
	                    selection: BaseCommandModel.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES._TIME ]
	                },
	                {
	                    selection: BaseCommandModel.SELECTION.CELL,
	                    types: [ ColumnModel.TYPES._TIME ]
	                },
	                {
	                    selection: BaseCommandModel.SELECTION.TABLE
	                }
	            ],
	            filterTypes: FILTER_TYPES,
	            normalizeFilterType: normalizeFilterType,
	            getFilterItems: getFilterItems,
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommandModel.FILTER_VALUES,
	                    filterAllValues: false
	                }, BaseCommandModel.getDefaults());
	            }
	        });

	        return FilterValues;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/RemoveNonNumericalValues":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
	    As of SPL-129754 this command has been deprecated in favor of ReplaceMismatchedTypes.
	    This command model should not be deleted because Tables that have made use of it can exist
	    in the wild.
	*/

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel
	    ) {
	        var RemoveNonNumericalValues = BaseCommand.extend({
	            _displayName: _("Remove Non-Numerical Values").t(),
	            _placeholderSPL: "eval",
	            _advancedCommand: BaseCommand.EVAL_EXISTING_FIELD,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            validation: {
	                spl: 'validateSPL'
	            },

	            defaults: function() {
	                return RemoveNonNumericalValues.getDefaults();
	            },

	            validateSPL: function (value, attr, options) {
	                var errorString = this.validateForTypes(this.getWhitelistedTypes());
	                if (!this.hasValidRequiredColumn()) {
	                    return _('Select a field.').t();
	                }
	                if (errorString) {
	                    return errorString;
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};
	                
	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('RemoveNonNumericalValues must be in a valid state before you can generate SPL.');
	                }

	                var requiredColumnGuid = this.requiredColumns.first().id,
	                    fieldNameDoubleQuoted = this.getFieldNameFromGuid(requiredColumnGuid, { doubleQuoteWrap: true }),
	                    expression = this.getExpression();

	                return 'eval ' + fieldNameDoubleQuoted + ' = ' + expression;
	            },

	            getAdvancedCommandAttributes: function() {
	                return {
	                    expression: this.getExpression()
	                };
	            },

	            getExpression: function() {
	                var fieldNameSingleQuoted = this.hasValidRequiredColumn() ?
	                        this.getFieldNameFromGuid(this.requiredColumns.first().id, { singleQuoteWrap: true }) :
	                        '\'\'';

	                return 'mvfilter(isnum(' + fieldNameSingleQuoted + '))';
	            }
	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.MULTICOLUMN },
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.CELL },
	                { selection: BaseCommand.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES._RAW, ColumnModel.TYPES._TIME ]
	                },
	                { selection: BaseCommand.SELECTION.TEXT }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.REMOVE_NON_NUMERICAL_VALUES,
	                    isComplete: true
	                }, BaseCommand.getDefaults());
	            }
	        });
	        
	        return RemoveNonNumericalValues;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/datasets/commands/FillValues":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("util/dataset_utils"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel,
	        datasetUtils,
	        splunkUtil
	    ) {
	        var TYPES = {
	            NULL: 'null',
	            EMPTY: 'empty',
	            BOTH: 'both'
	        };

	        var FillValues = BaseCommand.extend({
	            _displayName: _('Fill Null or Empty Values').t(),
	            _placeholderSPL: 'eval',
	            _advancedCommand: BaseCommand.EVAL_EXISTING_FIELD,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            validation: {
	                spl: 'validateSPL'
	            },
	            
	            defaults: function() {
	                return FillValues.getDefaults();
	            },

	            validateSPL: function (value, attr, options) {
	                var errorString = this.validateForTypes(this.getWhitelistedTypes());

	                if (!this.hasValidRequiredColumn()) {
	                    return _('Select a field with null or empty values.').t();
	                }
	                if (errorString) {
	                    return errorString;
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};
	                
	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('FillValues must be in a valid state before you can generate SPL.');
	                }
	                
	                var requiredColumnGuid = this.requiredColumns.first().id,
	                    fieldNameDoubleQuoted = this.getFieldNameFromGuid(requiredColumnGuid, { doubleQuoteWrap: true }),
	                    expression = this.getExpression();

	                return 'eval ' + fieldNameDoubleQuoted + '=' + expression;
	            },

	            getAdvancedCommandAttributes: function() {
	                return {
	                    expression: this.getExpression()
	                };
	            },

	            getExpression: function() {
	                var fieldNameSingleQuoted = this.hasValidRequiredColumn() ?
	                        this.getFieldNameFromGuid(this.requiredColumns.first().id, { singleQuoteWrap: true }) :
	                        '\'\'',
	                    fillValue = datasetUtils.splEscape(this.get('fillValue') || '0'),
	                    condition,
	                    nullCondition = splunkUtil.sprintf('isnull(%s)', fieldNameSingleQuoted),
	                    emptyCondition = splunkUtil.sprintf('%s=""', fieldNameSingleQuoted),
	                    bothCondition = nullCondition + ' OR ' + emptyCondition;

	                switch (this.get('fillType')) {
	                    case FillValues.TYPES.NULL:
	                        condition = nullCondition;
	                        break;
	                    case FillValues.TYPES.EMPTY:
	                        condition = emptyCondition;
	                        break;
	                    case FillValues.TYPES.BOTH:
	                        condition = bothCondition;
	                        break;
	                }

	                return splunkUtil.sprintf('if(%s, "%s", %s)', condition, fillValue, fieldNameSingleQuoted);
	            },

	            isDirty: function() {
	                return BaseCommand.prototype.isDirty.apply(this, arguments) ||
	                    // Evaluate as dirty if SPL hasn't been set yet and there is no value set for fill null value
	                    // (Indicates the user just entered the editor form)
	                    !this.get('spl') &&
	                    !this.get('fillValue');
	            }
	        }, {
	            blacklist: [
	                {
	                    selection: BaseCommand.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES.EPOCH_TIME, ColumnModel.TYPES._RAW, ColumnModel.TYPES._TIME ]
	                },
	                {
	                    selection: BaseCommand.SELECTION.CELL,
	                    types: [ ColumnModel.TYPES.EPOCH_TIME, ColumnModel.TYPES._RAW, ColumnModel.TYPES._TIME ]
	                },
	                { selection: BaseCommand.SELECTION.MULTICOLUMN },
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.TEXT }
	            ],
	            TYPES: TYPES,
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.FILL_VALUES,
	                    fillType: TYPES.NULL
	                }, BaseCommand.getDefaults());
	            }
	        });

	        return FillValues;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/datasets/commands/Eval":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("util/dataset_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        datasetUtils
	    ) {
	        var Eval = BaseCommand.extend({
	            _displayName: _('Eval').t(),
	            _placeholderSPL: 'eval',
	            _useAST: true,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            validation: {
	                spl: 'validateSPL',
	                collisionFields: 'validateCollisionFields'
	            },

	            defaults: function() {
	                return Eval.getDefaults();
	            },

	            validateSPL: function(value, attr, option) {
	                var fieldName = this.get('newFieldName'),
	                    expression = this.get('expression'),
	                    invalidFieldMessage = this.validateFieldName(fieldName);

	                if (invalidFieldMessage && !this.columns.findWhere({ name: fieldName })) {
	                    return invalidFieldMessage;
	                }

	                if (_.isUndefined(expression) || /^\s*$/.test(expression)) {
	                    return _('Provide an eval expression.').t();
	                }

	                return this.validateASTErrors() || this.validatePipes() || this.validateReferencedFieldsExistence();
	            },

	            generateSPL: function(options) {
	                options = options || {};

	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Eval must be in a valid state before you can generate SPL.');
	                }

	                return 'eval "' + this.get('newFieldName') + '"=' + this.get('expression').trim();
	            },

	            updateRequiredColumns: function() {
	                this.updateRequiredColumnsFromReferencedASTFields();
	            },
	            
	            propagateColumnRemove: function(removedColumn, options) {
	                if (removedColumn.get('name') === this.get('newFieldName')) {
	                    // we do not want to propagate the removal of this column because the user has hand-written
	                    // the column name into a text box
	                    return;
	                }
	                
	                return BaseCommand.prototype.propagateColumnRemove.apply(this, arguments);
	            }
	        }, {
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.EVAL,
	                    newFieldName: ''
	                }, BaseCommand.getDefaults());
	            }
	        });

	        return Eval;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/EvalExistingField":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("util/dataset_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        datasetUtils
	    ) {
	        var EvalExistingField = BaseCommand.extend({
	            _displayName: _('Eval').t(),
	            _placeholderSPL: 'eval',
	            _useAST: true,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	                
	                // In this command the user has to select an existing field to operate on, but
	                // then has the ability to refer to many more fields in the expression they write.
	                // The fields in the expression will be added to the requiredColumns, but the first
	                // requiredColumn should always be the field they have chosen to operate on. If that
	                // field is removed, it should be replaced with an empty field to fail validation.
	                this.requiredColumns.on('remove', function(removedColumn, updatedCollection, options) {
	                   if (options.index === 0) {
	                       this.requiredColumns.add({}, { at: 0 });
	                   } 
	                }, this);
	            },

	            // If we're coming from the clean menu and there's a column name, then set the newFieldName to be
	            // that column name, and the eval expression to that column name wrapped in single quotes
	            setInitialState: function(initialStateOptions) {
	                initialStateOptions = initialStateOptions || {};

	                if (initialStateOptions.columnName) {
	                    if (!this.get('expression')) {
	                        this.set('expression', '\'' + initialStateOptions.columnName + '\'');
	                    }
	                }

	                this.updateRequiredColumns();
	            },

	            validation: {
	                spl: 'validateSPL',
	                collisionFields: 'validateCollisionFields'
	            },

	            defaults: function() {
	                return EvalExistingField.getDefaults();
	            },

	            validateSPL: function(value, attr, option) {
	                var fieldName = this.getFieldName(),
	                    expression = this.get('expression'),
	                    invalidFieldMessage = this.validateFieldName(fieldName);
	                
	                if (!this.hasValidRequiredColumn()) {
	                    return _('Select a field to eval.').t();
	                }

	                if (invalidFieldMessage && !this.columns.findWhere({ name: fieldName })) {
	                    return invalidFieldMessage;
	                }

	                if (_.isUndefined(expression) || /^\s*$/.test(expression)) {
	                    return _('Provide an eval expression.').t();
	                }

	                return this.validateASTErrors() || this.validatePipes() || this.validateReferencedFieldsExistence();
	            },
	            
	            getFieldName: function() {
	                var requiredColumn = this.requiredColumns.first();
	                return requiredColumn && this.getFieldNameFromGuid(requiredColumn.id);
	            },

	            generateSPL: function(options) {
	                options = options || {};

	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Eval must be in a valid state before you can generate SPL.');
	                }

	                return 'eval "' + this.getFieldName() + '"=' + this.get('expression').trim();
	            },

	            updateRequiredColumns: function() {
	                var columnsToRetain = [(this.requiredColumns.first() || {})];
	                this.updateRequiredColumnsFromReferencedASTFields(columnsToRetain);
	            }
	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.MULTICOLUMN },
	                { selection: BaseCommand.SELECTION.TABLE }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.EVAL_EXISTING_FIELD
	                }, BaseCommand.getDefaults());
	            }
	        });

	        return EvalExistingField;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Search":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand
	    ) {
	        var Search = BaseCommand.extend({
	            _displayName: _('Search').t(),
	            _placeholderSPL: 'search',
	            isSearchPoint: true,
	            _useAST: true,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            // Set the initial search for the user based on their selection
	            setInitialState: function(initialStateOptions) {
	                initialStateOptions = initialStateOptions || {};

	                var initialSearch = '';

	                if (!this.get('expression')) {
	                    if (initialStateOptions.columnName) {
	                        initialSearch += '"' + initialStateOptions.columnName + '"=';
	                    }

	                    if (initialStateOptions.selectionValue) {
	                        if (initialStateOptions.isText) {
	                            initialSearch += '*' + initialStateOptions.selectionValue + '*';
	                        } else {
	                            initialSearch += initialStateOptions.selectionValue;
	                        }
	                    }

	                    this.set('expression', initialSearch);
	                }

	                this.updateRequiredColumns();
	            },

	            defaults: function() {
	                return Search.getDefaults();
	            },

	            validation: {
	                spl: 'validateSPL'
	            },

	            validateSPL: function(value, attr, option) {
	                var expression = this.get('expression');

	                if (_.isUndefined(expression) || /^\s*$/.test(expression)) {
	                    return _('Provide a search string.').t();
	                }

	                return this.validateASTErrors() || this.validatePipes() || this.validateReferencedFieldsExistence();
	            },

	            generateSPL: function(options) {
	                options = options || {};

	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Search must be in a valid state before you can generate SPL.');
	                }

	                return 'search ' + this.get('expression').trim();
	            },

	            updateRequiredColumns: function() {
	                this.updateRequiredColumnsFromReferencedASTFields();
	            }
	        }, {
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.SEARCH
	                }, BaseCommand.getDefaults());
	            }
	        });
	        
	        return Search;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Concatenate":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("util/dataset_utils"),
	        __webpack_require__("util/general_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        datasetUtils,
	        generalUtils
	    ) {
	        var Concatenate = BaseCommand.extend({
	            _displayName: _('Concatenate').t(),
	            _placeholderSPL: 'eval',
	            _advancedCommand: BaseCommand.EVAL,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            // Create an editor value for each requiredColumn
	            setInitialState: function(initialStateOptions) {
	                initialStateOptions = initialStateOptions || {};

	                if (!this.editorValues.length) {
	                    this.requiredColumns.each(function(requiredColumn) {
	                        this.editorValues.add({ columnGuid: requiredColumn.id });
	                    }, this);
	                }
	            },

	            defaults: function() {
	                return Concatenate.getDefaults();
	            },

	            validation: {
	                spl: 'validateSPL',
	                collisionFields: 'validateCollisionFields'
	            },
	    
	            editorValueIsText: function(editorValue) {
	                return _.isUndefined(editorValue.get('columnGuid'));
	            },

	            validateSPL: function(value, attr, option) {
	                var newFieldName = this.get('newFieldName'),
	                    invalidFieldMessage = this.validateFieldName(newFieldName),
	                    i = 0,
	                    editorValue;


	                if (invalidFieldMessage) {
	                    return invalidFieldMessage;
	                }

	                if (this.editorValues.length < 2) {
	                    return _('Select at least two fields or text strings to concatenate.').t();
	                }

	                for (; i < this.editorValues.length; i++) {
	                    editorValue = this.editorValues.at(i);

	                    if (this.editorValueIsText(editorValue) && !editorValue.get('text').length) {
	                        return _('One or more of your strings is empty.').t();
	                    }

	                    if (!this.editorValueIsText(editorValue) &&
	                            _.isUndefined(this.getFieldNameFromGuid(editorValue.get('columnGuid')))) {
	                        return _('One or more fields to concatenate have been removed.').t();
	                    }
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};

	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Concatenate must be in a valid state before you can generate SPL.');
	                }

	                var newFieldName = this.get('newFieldName'),
	                    expression = this.getExpression();

	                return 'eval "' + newFieldName + '"=' + expression;
	            },

	            getAdvancedCommandAttributes: function() {
	                return {
	                    newFieldName: this.get('newFieldName'),
	                    expression: this.getExpression()
	                };
	            },

	            getExpression: function() {
	                var text,
	                    fieldName;

	                return this.editorValues.map(function(editorValue) {
	                    if (this.editorValueIsText(editorValue)) {
	                        return '"' + datasetUtils.splEscape(editorValue.get('text') || '') + '"';
	                    } else {
	                        fieldName = this.getFieldNameFromGuid(editorValue.get('columnGuid'), { singleQuoteWrap: true }) || '\'\'';
	                        // If you concatenate two fields, and one of the values in either field is null, the result
	                        // is null. We don't want that, we just want the null to be treated as an empty string.
	                        return 'if(isnull(' + fieldName + '), "", ' + fieldName + ')';
	                    }
	                }, this).join('.');
	            },

	            isDirty: function(commandPristine) {
	                return BaseCommand.prototype.isDirty.call(this, commandPristine, { ignoreSortId: true });
	            }
	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.CELL },
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.TEXT }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.CONCATENATE
	                }, BaseCommand.getDefaults(overrides));
	            }
	        });

	        return Concatenate;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Duplicate":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("util/dataset_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        datasetUtils
	    ) {
	        var Duplicate = BaseCommand.extend({
	            _displayName: _('Duplicate').t(),
	            _placeholderSPL: 'eval',
	            _advancedCommand: BaseCommand.EVAL,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            defaults: function() {
	                return Duplicate.getDefaults();
	            },

	            validation: {
	                spl: 'validateSPL',
	                collisionFields: 'validateCollisionFields'
	            },

	            validateSPL: function(value, attr, option) {
	                var newFieldName = this.get('newFieldName'),
	                    invalidFieldMessage = this.validateFieldName(newFieldName);

	                if (!this.hasValidRequiredColumn()) {
	                    return _('Select a field to duplicate.').t();
	                }
	                
	                if (invalidFieldMessage) {
	                    return invalidFieldMessage;
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};
	                
	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Duplicate must be in a valid state before you can generate SPL.');
	                }
	                
	                var newFieldName = this.get('newFieldName'),
	                    duplicatedFieldName = this.getExpression();

	                return 'eval "' + newFieldName + '"=' + duplicatedFieldName;
	            },

	            getAdvancedCommandAttributes: function() {
	                return {
	                    newFieldName: this.get('newFieldName'),
	                    expression: this.getExpression()
	                };
	            },

	            getExpression: function() {
	                if (this.hasValidRequiredColumn()) {
	                    return this.getFieldNameFromGuid(this.requiredColumns.first().get('id'), { singleQuoteWrap: true });
	                } else {
	                    return '\'\'';
	                }
	            }
	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.CELL },
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.TEXT },
	                { selection: BaseCommand.SELECTION.MULTICOLUMN }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.DUPLICATE,
	                    newFieldName: ''
	                }, BaseCommand.getDefaults());
	            }
	        });
	        
	        return Duplicate;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Stats":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("collections/datasets/Aggregates"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        $,
	        AggregatesCollection,
	        BaseCommand,
	        ColumnModel,
	        splunkUtils
	    ) {
	        var FUNCTIONS = {
	            COUNT_VALUES: {
	                label: _('count values').t(),
	                value: 'count',
	                whitelist: [
	                    ColumnModel.TYPES.NUMBER,
	                    ColumnModel.TYPES.STRING,
	                    ColumnModel.TYPES.IPV4,
	                    ColumnModel.TYPES.BOOLEAN,
	                    ColumnModel.TYPES.EPOCH_TIME,
	                    ColumnModel.TYPES._TIME
	                ]
	            },
	            DISTINCT_COUNT_VALUES: {
	                label: _('distinct count values').t(),
	                value: 'dc',
	                whitelist: [
	                    ColumnModel.TYPES.NUMBER,
	                    ColumnModel.TYPES.STRING,
	                    ColumnModel.TYPES.IPV4,
	                    ColumnModel.TYPES.BOOLEAN,
	                    ColumnModel.TYPES.EPOCH_TIME,
	                    ColumnModel.TYPES._TIME
	                ]
	            },
	            MAX: {
	                label: _('max').t(),
	                value: 'max',
	                whitelist: [ ColumnModel.TYPES.NUMBER ]
	            },
	            MIN: {
	                label: _('min').t(),
	                value: 'min',
	                whitelist: [ ColumnModel.TYPES.NUMBER ]
	            },
	            MEAN: {
	                label: _('mean').t(),
	                value: 'mean',
	                whitelist: [ ColumnModel.TYPES.NUMBER ]
	            },
	            MEDIAN: {
	                label: _('median').t(),
	                value: 'median',
	                whitelist: [ ColumnModel.TYPES.NUMBER ]
	            },
	            MODE: {
	                label: _('mode').t(),
	                value: 'mode',
	                whitelist: [ ColumnModel.TYPES.NUMBER ]
	            },
	            POPULATION_STANDARD_DEVIATION: {
	                label: _('population standard deviation').t(),
	                value: 'stdevp',
	                whitelist: [ ColumnModel.TYPES.NUMBER ]
	            },
	            RANGE: {
	                label: _('range').t(),
	                value: 'range',
	                whitelist: [ ColumnModel.TYPES.NUMBER ]
	            },
	            STANDARD_DEVIATION: {
	                label: _('standard deviation').t(),
	                value: 'stdev',
	                whitelist: [ ColumnModel.TYPES.NUMBER ]
	            },
	            SUM: {
	                label: _('sum').t(),
	                value: 'sum',
	                whitelist: [ ColumnModel.TYPES.NUMBER ]
	            },
	            VARIANCE: {
	                label: _('variance').t(),
	                value: 'var',
	                whitelist: [ ColumnModel.TYPES.NUMBER ]
	            }
	        };

	        var StatsCommand = BaseCommand.extend({
	            _displayName: _('Stats').t(),
	            _placeholderSPL: 'stats',
	            isSearchPoint: true,
	            _useAST: true,
	            // Stats doesn't care about adds/removes/resets, but when a column's name or type gets changed and stats
	            // uses that column, we should propagate that change. See the overridden propagateColumnChange below.
	            stopForwardAddRemoveResetPropagation: true,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);

	                this.initializeAssociated();

	                this.aggregates.on('add remove reset change', function() {
	                    this.trigger('aggregatesChange');
	                }, this);
	            },

	            initializeAssociated: function() {
	                BaseCommand.prototype.initializeAssociated.apply(this, arguments);

	                var RootClass = this.constructor;
	                this.associated = this.associated || {};

	                this.aggregates = this.aggregates || new RootClass.Aggregates();
	                this.associated.aggregates = this.aggregates;
	            },

	            parse: function(response, options) {
	                response = BaseCommand.prototype.parse.apply(this, arguments);

	                if (response.aggregates) {
	                    this.aggregates.reset(response.aggregates, options);
	                    delete response.aggregates;
	                }

	                return response;
	            },

	            setFromCommandJSON: function(jsonPayload, options) {
	                options = options || {};

	                if (!options.skipClone) {
	                    jsonPayload = $.extend(true, {}, jsonPayload);
	                }

	                if (jsonPayload) {
	                    if (jsonPayload.aggregates) {
	                        this.aggregates.set(jsonPayload.aggregates, options);
	                        this.aggregates.setFunctions(jsonPayload.aggregates, options);
	                        delete jsonPayload.aggregates;
	                    }

	                    if (jsonPayload.columns && options.commandRemoval) {
	                        // When a previous command is deleted, in most cases we do not care about this stats command
	                        // gettings its columns "fixed" (since it blew away the original ones in the first place).
	                        // However, we DID propagate column name changes, so if a previous command was deleted (like
	                        // rename), we need to undo the propagation change here.
	                        this.columns.each(function(statsColumn) {
	                            // ***NEW** key in Minty, won't be present in pre-Minty tables
	                            var func = statsColumn.get('func');

	                            _.each(jsonPayload.columns, function(previousCommandColumn) {
	                                var previousCommandColumnId = previousCommandColumn.id;

	                                // ***NEW** key in Minty, won't be present in pre-Minty tables
	                                if (statsColumn.get('originatingColumnGuid') === previousCommandColumnId) {
	                                    // If there's a func attribute on the column, it was part of an aggregate, which
	                                    // needs the function before the new name as well.
	                                    if (func) {
	                                        statsColumn.set('name', this.getFunctionDisplayName({
	                                            func: func,
	                                            columnGuid: previousCommandColumnId
	                                        }));
	                                    // Otherwise, it's a split by.
	                                    } else {
	                                        statsColumn.set('name', this.getPreviousCommandFieldNameFromGuid(previousCommandColumnId));
	                                    }
	                                }
	                            }, this);
	                        }, this);

	                        delete jsonPayload.columns;
	                    }
	                }

	                return BaseCommand.prototype.setFromCommandJSON.call(this, jsonPayload, options);
	            },

	            toJSON: function(options) {
	                var baseJSON = BaseCommand.prototype.toJSON.apply(this, arguments),
	                    aggregatesJSON = this.aggregates.toJSON(options);

	                if (!_.isEmpty(baseJSON) || !_.isEmpty(aggregatesJSON)) {
	                    baseJSON.aggregates = aggregatesJSON;
	                }

	                return baseJSON;
	            },

	            setInitialState: function(initialStateOptions) {
	                initialStateOptions = initialStateOptions || {};
	                _.defaults(initialStateOptions, {
	                    aggregateGuids: [],
	                    splitByGuids: [],
	                    addRowCount: false
	                });

	                if (!this.aggregates.length && initialStateOptions.aggregateGuids.length) {
	                    _.each(initialStateOptions.aggregateGuids, function(aggregateGuid) {
	                        this.aggregates.add({ columnGuid: aggregateGuid });
	                    }, this);
	                }
	                // We're using editorValues for the split by columns
	                if (!this.editorValues.length && initialStateOptions.splitByGuids.length) {
	                    _.each(initialStateOptions.splitByGuids, function(splitByGuid) {
	                        this.editorValues.add({ columnGuid: splitByGuid });
	                    }, this);
	                }
	                if (initialStateOptions.addRowCount) {
	                    this.set('rowCount', true);
	                }

	                this.updateRequiredColumns();
	            },

	            validation: {
	                spl: 'validateSPL'
	            },

	            validateSPL: function() {
	                var i = 0,
	                    j = 0,
	                    errorString = this.validateForTypes(this.getWhitelistedTypes()),
	                    currentAggregate,
	                    currentFunctions,
	                    currentSplitBy;

	                if (errorString) {
	                    return errorString;
	                }

	                for (; i < this.aggregates.length; i++) {
	                    currentAggregate = this.aggregates.at(i);
	                    currentFunctions = currentAggregate.functions;

	                    if (_.isUndefined(this.getPreviousCommandFieldNameFromGuid(currentAggregate.get('columnGuid')))) {
	                        return _('Each aggregate must define a field name.').t();
	                    }

	                    if (!currentFunctions.length) {
	                        return _('Each aggregate must add at least one function.').t();
	                    }
	                }

	                for (; j < this.editorValues.length; j++) {
	                    currentSplitBy = this.editorValues.at(j);

	                    if (_.isUndefined(this.getPreviousCommandFieldNameFromGuid(currentSplitBy.get('columnGuid')))) {
	                        return _('Each split by must define a field name.').t();
	                    }
	                }

	                if (!this.aggregates.length && !splunkUtils.normalizeBoolean(this.get('rowCount'))) {
	                    return _('Add at least one aggregate field or the row count.').t();
	                }

	                if (_.intersection(this.aggregates.pluck('columnGuid'), this.editorValues.pluck('columnGuid')).length) {
	                    return _('You cannot use the same field as an aggregate and a split by.').t();
	                }

	                if (this.ast && this.ast.hasError()) {
	                    return this.ast.error.get('messages')[0].text;
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};

	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Stats must be in a valid state before you can generate SPL.');
	                }

	                var aggregatesStr,
	                    countStr = '',
	                    splitBysStr = this.editorValues.length ? ' by ' : '';

	                aggregatesStr = this.aggregates.map(function(aggregate) {
	                    var columnGuidForAggregate = aggregate.get('columnGuid');

	                    return aggregate.functions.map(function(func) {
	                        return this.getFunctionDisplayName({
	                            func: func.get('value'),
	                            columnGuid: columnGuidForAggregate
	                        });
	                    }, this).join(', ');
	                }, this).join(', ');

	                if (splunkUtils.normalizeBoolean(this.get('rowCount'))) {
	                    if (this.aggregates.length) {
	                        countStr = ', count';
	                    } else {
	                        countStr = 'count';
	                    }
	                }

	                splitBysStr += this.editorValues.map(function(splitBy) {
	                    return this.getPreviousCommandFieldNameFromGuid(splitBy.get('columnGuid'), options);
	                }, this).join(', ');

	                return 'stats ' + aggregatesStr + countStr + splitBysStr;
	            },

	            getFunctionListPickerItems: function(options) {
	                options = options || {};

	                var previousCommandColumns = this.getPreviousColumns(),
	                    column = previousCommandColumns && previousCommandColumns.get(options.columnGuid),
	                    columnType = column && column.get('type'),
	                    functionListPickerItems = [];

	                _.each(FUNCTIONS, function(func) {
	                    if (func.whitelist.indexOf(columnType) > -1) {
	                        functionListPickerItems.push(func);
	                    }
	                }, this);

	                return functionListPickerItems;
	            },

	            getPreviousCommandFieldNameFromGuid: function(guid, options) {
	                var previousCommand;

	                if (this.collection) {
	                    previousCommand = this.collection.getPreviousCommand(this);
	                // In the case we're operating on an inmem model, this.previousCommand will help us
	                } else if (this.previousCommand) {
	                    previousCommand = this.previousCommand;
	                }

	                if (previousCommand) {
	                    return previousCommand.getFieldNameFromGuid(guid, options);
	                }
	            },

	            getFunctionDisplayName: function(options) {
	                options = options || {};
	                var columnName;

	                if (options.func && options.columnGuid) {
	                    columnName = this.getPreviousCommandFieldNameFromGuid(options.columnGuid, options);

	                    if (columnName) {
	                        return options.func + '(' + columnName + ')';
	                    }
	                }
	            },

	            updateRequiredColumns: function() {
	                var newRequiredColumns = [];

	                this.aggregates.each(function(aggregate) {
	                    newRequiredColumns.push({ id: aggregate.get('columnGuid') });
	                }, this);

	                this.editorValues.each(function(splitBy) {
	                    newRequiredColumns.push({ id: splitBy.get('columnGuid') });
	                }, this);

	                this.requiredColumns.reset(newRequiredColumns);
	            },

	            propagateColumnChange: function(changedColumn, options) {
	                BaseCommand.prototype.propagateColumnChange.apply(this, arguments);

	                var columnId = changedColumn.id,
	                    type = changedColumn.get('type');

	                this.columns.each(function(column) {
	                    var func = column.get('func'),
	                        newAttributes = {};

	                    if (column.get('originatingColumnGuid') === columnId) {
	                        // If there's a func attribute on the column, it was part of an aggregate, which needs the
	                        // function before the new name as well.
	                        // Note we're not propagating type here - any aggregate function is always numeric.
	                        if (func) {
	                            newAttributes.name = this.getFunctionDisplayName({
	                                func: column.get('func'),
	                                columnGuid: columnId
	                            });
	                        // Otherwise, it's a split by. Here, we do propagate type.
	                        } else {
	                            newAttributes.name = this.getPreviousCommandFieldNameFromGuid(columnId);
	                            newAttributes.type = type;
	                        }

	                        column.set(newAttributes);
	                    }
	                }, this);
	            }
	        }, {
	            Aggregates: AggregatesCollection,
	            blacklist: [
	                { selection: BaseCommand.SELECTION.COLUMN, types: [ ColumnModel.TYPES._RAW ] },
	                { selection: BaseCommand.SELECTION.MULTICOLUMN, types: [ ColumnModel.TYPES._RAW ] },
	                { selection: BaseCommand.SELECTION.CELL },
	                { selection: BaseCommand.SELECTION.TEXT }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.STATS,
	                    rowCount: false
	                }, BaseCommand.getDefaults());
	            },
	            FUNCTIONS: FUNCTIONS
	        });

	        return StatsCommand;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "collections/datasets/Aggregates":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("collections/Base"),
	        __webpack_require__("models/datasets/Aggregate")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function (
	        $,
	        BaseCollection,
	        AggregateModel
	    ) {
	        return BaseCollection.extend({
	            model: AggregateModel,

	            initialize: function() {
	                BaseCollection.prototype.initialize.apply(this, arguments);
	            },

	            setFunctions: function(jsonPayload, options) {
	                options = options || {};

	                if (!options.skipClone) {
	                    jsonPayload = $.extend(true, {}, jsonPayload);
	                }

	                if (jsonPayload) {
	                    this.each(function(aggregate, index) {
	                        aggregate.setFromAggregateJSON(jsonPayload[index], options);
	                    }, this);
	                }
	            },

	            sync: function(method, model, options) {
	                throw new Error('sync not allowed for the Aggregates collection');
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/datasets/Aggregate":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("collections/Base"),
	        __webpack_require__("models/Base")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCollection,
	        BaseModel
	    ) {
	        return BaseModel.extend({
	            initialize: function(attributes, options) {
	                BaseModel.prototype.initialize.apply(this, arguments);

	                this.initializeAssociated();
	            },

	            initializeAssociated: function() {
	                var RootClass = this.constructor;
	                this.associated = this.associated || {};

	                this.functions = this.functions || new RootClass.Functions();
	                this.associated.functions = this.functions;
	            },

	            parse: function(response, options) {
	                response = BaseModel.prototype.parse.apply(this, arguments);

	                // When Backbone collections are set, all the models are parsed and THEN initialized. In those cases,
	                // we need to initializeAssociated here so that this model has a functions collection to reset.
	                this.initializeAssociated();

	                if (response.functions) {
	                    this.functions.reset(response.functions, options);
	                    delete response.functions;
	                }

	                return response;
	            },

	            setFromAggregateJSON: function(jsonPayload, options) {
	                options = options || {};

	                if (!options.skipClone) {
	                    jsonPayload = $.extend(true, {}, jsonPayload);
	                }

	                if (jsonPayload) {
	                    if (jsonPayload.functions) {
	                        this.functions.set(jsonPayload.functions, options);
	                        delete jsonPayload.functions;
	                    }
	                }

	                return this.set(jsonPayload, options);
	            },

	            toJSON: function(options) {
	                var baseJSON = BaseModel.prototype.toJSON.apply(this, arguments),
	                    functionsJSON = this.functions.toJSON(options);

	                if (!_.isEmpty(baseJSON) || !_.isEmpty(functionsJSON)) {
	                    baseJSON.functions = functionsJSON;
	                }

	                return baseJSON;
	            },

	            sync: function(method, model, options) {
	                throw new Error('sync not allowed for the Aggregate model');
	            }
	        }, {
	            Functions: BaseCollection
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/ChangeCase":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel
	    ) {
	        var ChangeCase = BaseCommand.extend({
	            _displayName: _("Change Case").t(),
	            _placeholderSPL: "eval",
	            _advancedCommand: BaseCommand.EVAL_EXISTING_FIELD,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            validation: {
	                spl: 'validateSPL'
	            },

	            defaults: function() {
	                return ChangeCase.getDefaults();
	            },

	            validateSPL: function(value, attr, options) {
	                var errorString = this.validateForTypes(this.getWhitelistedTypes());

	                if (!this.hasValidRequiredColumn()) {
	                    return _('Select a field.').t();
	                }

	                if (errorString) {
	                    return errorString;
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};
	                
	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('ChangeCase must be in a valid state before you can generate SPL.');
	                }
	                
	                var requiredColumnGuid = this.requiredColumns.first().id,
	                    fieldNameDoubleQuoted = this.getFieldNameFromGuid(requiredColumnGuid, { doubleQuoteWrap: true }),
	                    expression = this.getExpression();

	                return 'eval ' + fieldNameDoubleQuoted + ' = ' + expression;
	            },

	            getAdvancedCommandAttributes: function() {
	                return {
	                    expression: this.getExpression()
	                };
	            },

	            getExpression: function() {
	                var caseString = this.get('toUpper') ? 'upper' : 'lower',
	                    fieldNameSingleQuoted = this.hasValidRequiredColumn() ?
	                        this.getFieldNameFromGuid(this.requiredColumns.first().id, { singleQuoteWrap: true }) :
	                        '\'\'';

	                return caseString + '(' + fieldNameSingleQuoted + ')';
	            }
	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.CELL },
	                {
	                    selection: BaseCommand.SELECTION.COLUMN,
	                    types: [
	                        ColumnModel.TYPES._RAW,
	                        ColumnModel.TYPES._TIME,
	                        ColumnModel.TYPES.EPOCH_TIME,
	                        ColumnModel.TYPES.NUMBER,
	                        ColumnModel.TYPES.BOOLEAN,
	                        ColumnModel.TYPES.IPV4
	                    ]
	                },
	                { selection: BaseCommand.SELECTION.MULTICOLUMN },
	                { selection: BaseCommand.SELECTION.TEXT }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.CHANGE_CASE,
	                    toUpper: false
	                }, BaseCommand.getDefaults());
	            }
	        });

	        return ChangeCase;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/FilterRegex":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel
	    ) {
	        var FilterRegex = BaseCommand.extend({
	            _displayName: _('Filter with Regex').t(),
	            _placeholderSPL: 'regex',
	            isSearchPoint: true,
	            _useAST: true,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            validation: {
	                spl: 'validateSPL'
	            },

	            defaults: function() {
	                return FilterRegex.getDefaults();
	            },

	            validateSPL: function(value, attr, option) {
	                var astError = this.ast && this.ast.error.get('messages'),
	                    astSources = this.ast && this.ast.get('ast') && this.ast.get('ast').sources,
	                    errorString = this.validateForTypes(this.getWhitelistedTypes());

	                if (!this.hasValidRequiredColumn()) {
	                    return _('Select a field to filter on.').t();
	                }

	                if (_.isEmpty(this.get('regex'))) {
	                    return _('A regex must be provided.').t();
	                }

	                if (astError && astError.length) {
	                    return astError[0].message;
	                }

	                // If sources has stuff in it, then that means the user piped to another command.
	                // Easier to go through the AST here instead of trying to do any parsing ourselves.
	                if (astSources && astSources.length > 0) {
	                    return _('Pipes to other Splunk commands are not allowed.').t();
	                }

	                if (errorString) {
	                    return errorString;
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};

	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('FilterRegex must be in a valid state before you can generate SPL.');
	                }

	                var requiredColumnId = this.requiredColumns.first().id,
	                    fieldName = this.getFieldNameFromGuid(requiredColumnId, { doubleQuoteWrap: true }),
	                    regex = this.get('regex');

	                return 'regex ' + fieldName + '="' + regex + '"';
	            }
	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES._TIME, ColumnModel.TYPES.EPOCH_TIME ]
	                },
	                { selection: BaseCommand.SELECTION.MULTICOLUMN },
	                { selection: BaseCommand.SELECTION.CELL,
	                    types: [ ColumnModel.TYPES._TIME, ColumnModel.TYPES.EPOCH_TIME ]
	                }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.FILTER_REGEX
	                }, BaseCommand.getDefaults());
	            }
	        });
	        
	        return FilterRegex;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/datasets/commands/AdvancedRex":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("util/dataset_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        ColumnModel,
	        BaseCommandModel,
	        datasetUtils
	    ) {
	        var AdvancedRex = BaseCommandModel.extend({
	            _displayName: _('Extract with Regex').t(),
	            _placeholderSPL: 'rex',
	            _useAST: true,

	            initialize: function(attributes, options) {
	                BaseCommandModel.prototype.initialize.apply(this, arguments);
	            },

	            defaults: function() {
	                return AdvancedRex.getDefaults();
	            },

	            validation: {
	                spl: 'validateSPL',
	                collisionFields: 'validateCollisionFields'
	            },

	            getFieldsToAddAsArray: function() {
	                return this.ast && this.ast.getModifiedFieldsNameList();
	            },

	            validateSPL: function(value, attr, option) {
	                var maxMatch = this.get('maxMatch'),
	                    i = 0,
	                    fieldsToAdd = this.getFieldsToAddAsArray() || [],
	                    invalidFieldNameMessage;

	                if (!this.hasValidRequiredColumn()) {
	                    return _('Provide a field to extract from.').t();
	                }

	                if (_.isEmpty(this.get('regex'))) {
	                    return _('Provide a regular expression.').t();
	                }

	                for (; i < fieldsToAdd.length; i++) {
	                    invalidFieldNameMessage = this.validateRexFieldName(fieldsToAdd[i]);

	                    if (invalidFieldNameMessage) {
	                        return invalidFieldNameMessage;
	                    }
	                }

	                if (maxMatch && (!datasetUtils.isInteger(maxMatch) || maxMatch < 0)) {
	                    return _('Max match must be an integer greater than or equal to 0.').t();
	                }

	                // Make sure no ill formed commands are slipped in here
	                // (no need to check for pipes because user input is quote wrapped)
	                return this.validateASTErrors();
	            },

	            generateSPL: function(options) {
	                options = options || {};

	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('AdvancedRex must be in a valid state before you can generate SPL.');
	                }

	                var fieldName = this.getFieldNameFromGuid(this.requiredColumns.first().get('id'), { doubleQuoteWrap: true }),
	                    regex = this.get('regex'),
	                    maxMatch = this.get('maxMatch');

	                if (_.isUndefined(maxMatch) || maxMatch === 1) {
	                    return 'rex field=' + fieldName + ' "' + regex + '"';
	                } else {
	                    return 'rex field=' + fieldName + ' "' + regex + '" max_match=' + maxMatch;
	                }
	            }
	        }, {
	            blacklist: [
	                { selection: BaseCommandModel.SELECTION.TABLE },
	                { selection: BaseCommandModel.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES._TIME, ColumnModel.TYPES.EPOCH_TIME ]
	                },
	                { selection: BaseCommandModel.SELECTION.MULTICOLUMN },
	                { selection: BaseCommandModel.SELECTION.CELL,
	                    types: [ ColumnModel.TYPES._TIME, ColumnModel.TYPES.EPOCH_TIME ]
	                }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommandModel.ADVANCED_REX
	                }, BaseCommandModel.getDefaults());
	            }
	        });
	        
	        return AdvancedRex;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Coalesce":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel
	        ) {
	        var Coalesce = BaseCommand.extend({
	            _displayName: _('Coalesce').t(),
	            _placeholderSPL: 'eval',
	            fieldPickerBlacklistSelection: BaseCommand.SELECTION.MULTICOLUMN,
	            _advancedCommand: BaseCommand.EVAL,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);

	                // Must migrate requiredColumns to editorValues for pre-Kimono tables containing Coalesce
	                this.setInitialState();
	            },

	            // Create an editor value for each requiredColumn
	            setInitialState: function(initialStateOptions) {
	                initialStateOptions = initialStateOptions || {};

	                if (!this.editorValues.length) {
	                    this.requiredColumns.each(function(requiredColumn) {
	                        this.editorValues.add({ columnGuid: requiredColumn.id });
	                    }, this);
	                }
	            },

	            defaults: function() {
	                return Coalesce.getDefaults();
	            },

	            validation: {
	                spl: 'validateSPL',
	                collisionFields: 'validateCollisionFields'
	            },

	            validateSPL: function(value, attr, option) {
	                var newFieldName = this.get('newFieldName'),
	                    invalidFieldMessage = this.validateFieldName(newFieldName),
	                    errorString = this.validateForTypes(this.getWhitelistedTypes({ selectionType: BaseCommand.SELECTION.MULTICOLUMN })),
	                    i, editorValue;

	                if (!this.hasValidRequiredColumns()) {
	                    return _('Select two or more fields to coalesce.').t();
	                }

	                if (invalidFieldMessage) {
	                    return invalidFieldMessage;
	                }

	                if (errorString) {
	                    return errorString;
	                }

	                for (i = 0; i < this.editorValues.length; i++) {
	                    editorValue = this.editorValues.at(i);

	                    if (_.isUndefined(this.getFieldNameFromGuid(editorValue.get('columnGuid')))) {
	                        return _('One or more fields to coalesce have been removed.').t();

	                    }
	                }

	            },

	            hasValidRequiredColumns: function() {
	                var colsWithoutIds = this.requiredColumns.filter(function(col) {
	                    return col.isNew();
	                }, this);
	                return this.requiredColumns.length >= 2 && !colsWithoutIds.length;
	            },

	            generateSPL: function(options) {
	                options = options || {};

	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Coalesce must be in a valid state before you can generate SPL.');
	                }

	                var newFieldName = this.get('newFieldName'),
	                    expression = this.getExpression();

	                return 'eval "' + newFieldName + '"=' + expression;
	            },

	            getAdvancedCommandAttributes: function() {
	                return {
	                    newFieldName: this.get('newFieldName'),
	                    expression: this.getExpression()
	                };
	            },

	            getExpression: function() {
	                var currentColumnIds = this.editorValues.pluck('columnGuid'),
	                    coalescedFieldNames = this.convertGuidsToFields(currentColumnIds, { singleQuoteWrap: true }).join(', ');

	                return 'coalesce(' + coalescedFieldNames + ')';
	            },

	            isDirty: function(commandPristine) {
	                return BaseCommand.prototype.isDirty.call(this, commandPristine, { ignoreSortId: true });
	            }
	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.CELL },
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.TEXT },
	                { selection: BaseCommand.SELECTION.COLUMN },
	                { selection: BaseCommand.SELECTION.MULTICOLUMN, types: [ColumnModel.TYPES._RAW] }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.COALESCE,
	                    newFieldName: ''
	                }, BaseCommand.getDefaults());
	            }
	        });

	        return Coalesce;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Where":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        BaseCommandModel
	    ) {
	        var Where = BaseCommandModel.extend({
	            _displayName: _('Filter (Advanced)').t(),
	            _placeholderSPL: 'where',
	            _useAST: true,
	            isSearchPoint: true,

	            initialize: function(attributes, options) {
	                BaseCommandModel.prototype.initialize.apply(this, arguments);
	            },

	            validation: {
	                spl: 'validateSPL'
	            },

	            defaults: function() {
	                return Where.getDefaults();
	            },

	            validateSPL: function(value, attr, option) {
	                var expression = (this.get('expression') || "").trim();

	                // Make sure we have a valid string
	                if (!_.isString(expression) || !expression.length) {
	                    return _('Provide a where expression.').t();
	                }

	                return this.validateASTErrors() || this.validatePipes();
	            },

	            generateSPL: function(options) {
	                options = options || {};
	                
	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Where must be in a valid state before you can generate SPL.');
	                }
	                
	                var expression = this.get('expression');
	                return 'where ' + expression.trim();
	            }
	        }, {
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommandModel.WHERE
	                }, BaseCommandModel.getDefaults());
	            }
	        });

	        return Where;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Split":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("util/dataset_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel,
	        datasetUtils
	    ) {
	        var DELIMITERS = {
	            SPACE: '\\s',
	            COMMA: ',',
	            TAB: '\\t',
	            PIPE: '|'
	        };

	        var Split = BaseCommand.extend({
	            _displayName: _('Split Fields').t(),
	            _placeholderSPL: 'eval',

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            setInitialState: function(initialStateOptions) {
	                initialStateOptions = initialStateOptions || {};

	                // Enforce a minimum of 2 output fields
	                while (this.editorValues.length < 2) {
	                    this.editorValues.add({ name: '' });
	                }
	            },

	            defaults: function() {
	                return Split.getDefaults();
	            },

	            validation: {
	                spl: 'validateSPL',
	                collisionFields: 'validateCollisionFields'
	            },

	            getFieldsToAddAsArray: function() {
	                return this.editorValues.pluck('name');
	            },

	            validateSPL: function(value, attr, option) {
	                var invalidFieldMessage,
	                    fieldNames = this.editorValues.pluck('name'),
	                    errorString = this.validateForTypes(this.getWhitelistedTypes());

	                if (!this.hasValidRequiredColumn()) {
	                    return _('Select a field to split.').t();
	                }

	                if (this.editorValues.length < 2) {
	                    return _('You must have at least two new fields.').t();
	                }

	                if (errorString) {
	                    return errorString;
	                }

	                this.editorValues.find(function(editorValue) {
	                    var fieldName = editorValue.get('name');
	                    invalidFieldMessage = this.validateFieldName(fieldName);
	                    return invalidFieldMessage !== undefined;
	                }, this);

	                if (invalidFieldMessage) {
	                    return invalidFieldMessage;
	                }

	                // Prevent duplicate new field names
	                if (_.uniq(fieldNames).length < fieldNames.length) {
	                    return _('Field names must be unique.').t();
	                }

	                if (this.get('delimiter') === undefined || this.get('delimiter') === "") {
	                    return _('Define a delimiter.').t();
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};

	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Split must be in a valid state before you can generate SPL.');
	                }

	                var rexOriginalField = this.getFieldNameFromGuid(this.requiredColumns.first().id, {doubleQuoteWrap: true}),
	                    splitOriginalField = this.getFieldNameFromGuid(this.requiredColumns.first().id, {singleQuoteWrap: true}),
	                    useDefaultDelimiters = (this.get('delimiterFromPicker') !== ''),
	                    delimiter = this.get('delimiter') || '',
	                    useRex = useDefaultDelimiters && (delimiter === DELIMITERS.TAB || delimiter === DELIMITERS.SPACE),
	                    fieldsSPL;

	                if (useRex) {
	                    fieldsSPL = this.editorValues.map(function(newField, i) {
	                        // Because \t and \s are escaped special characters, they need to be interpreted as regexes.
	                        return '(?<"' + newField.get('name') + '">[^' + delimiter + ']*)?';
	                    }, this).join(delimiter + '?');

	                    return 'rex field=' + rexOriginalField + ' "' + fieldsSPL + '"';
	                } else {
	                    delimiter = datasetUtils.splEscape(delimiter);
	                    fieldsSPL = this.editorValues.map(function(newField, i) {
	                        // We must call split() on each individual output field, rather than call them once and store
	                        // the output in a temporary field before calling mvindex(), because a temp field may have field
	                        // collision implications and clutter the field space.
	                        return newField.get('name') + '=mvindex(split(' + splitOriginalField + ', "' + delimiter + '"),' + i + ')';
	                    }, this).join(', ');

	                    return 'eval ' + fieldsSPL;
	                }
	            }
	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.CELL },
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.TEXT },
	                {
	                    selection: BaseCommand.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES._TIME ]
	                },
	                { selection: BaseCommand.SELECTION.MULTICOLUMN }
	            ],
	            DELIMITERS: DELIMITERS,
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.SPLIT,
	                    delimiter: DELIMITERS.SPACE
	                }, BaseCommand.getDefaults());
	            }
	        });

	        return Split;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/CalculateField":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel,
	        splunkUtil
	        ) {
	        var CalculateField =  BaseCommand.extend({
	            _displayName: _('Calculate Field').t(),
	            _placeholderSPL: 'eval',
	            _advancedCommand: BaseCommand.EVAL,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            defaults: function() {
	                return CalculateField.getDefaults();
	            },

	            validation: {
	                spl: 'validateSPL',
	                collisionFields: 'validateCollisionFields'
	            },

	            setInitialState: function() {
	                this.updateRequiredColumns();
	            },

	            validateSPL: function(value, attr, option) {
	                var newFieldName = this.get('newFieldName'),
	                    operator = this.get('operator'),
	                    invalidFieldMessage = this.validateFieldName(newFieldName),
	                    errorString = this.validateForTypes(this.getWhitelistedTypes()),
	                    invalidEditorMessage;

	                // Verify there is a valid new field name
	                if (invalidFieldMessage) {
	                    return invalidFieldMessage;
	                }

	                if (errorString) {
	                    return errorString;
	                }

	                // Verify that each editor value in turn has the correct values
	                this.editorValues.find(function(editorValue) {
	                    var columnGuid = editorValue.get('columnGuid'),
	                        valueInput = editorValue.get('valueInput');

	                    if (!_.isUndefined(columnGuid) && !_(this.columns.pluck('id')).contains(columnGuid)) {
	                        invalidEditorMessage = _("Select a numeric field.").t();
	                    } else if (_.isUndefined(columnGuid) && !_.isNumber(valueInput)) {
	                        invalidEditorMessage = _("Enter a numeric value.").t();
	                    }

	                    if (invalidEditorMessage) {
	                        return true;
	                    }
	                }.bind(this));

	                // Return the message from searching through the editor values
	                if (invalidEditorMessage) {
	                    return invalidEditorMessage;
	                }

	                // Verify there are either a single numeric value or 2 values to operate on if the first value is a field
	                if (this.editorValues.length === 0) {
	                    return _('Add a numeric value.').t();
	                } else if (this.editorValues.length === 1 && this.editorValues.at(0).get('columnGuid')) {
	                    return _('You are operating on a numeric field.  Add a second numeric field or value.').t();
	                }

	                // Verify there is an operator selected
	                if (!operator && this.editorValues.length > 1) {
	                    return _('Select an arithmetic operator.').t();
	                }
	            },

	            getEditorValueAtIndex: function(index) {
	                var editorValueModel = this.editorValues.at(index),
	                    editorValue,
	                    modelGuid;

	                if (!editorValueModel) {
	                    return '';
	                }

	                modelGuid = editorValueModel.get('columnGuid');
	                
	                if (modelGuid) {
	                    editorValue = this.getFieldNameFromGuid(modelGuid, { singleQuoteWrap: true });
	                } else {
	                    editorValue = editorValueModel.get('valueInput');
	                    if (!_.isUndefined(editorValue)) {
	                        editorValue += '';
	                    }
	                }
	                    
	                return editorValue || '';
	            },

	            isFieldRow: function(editorValue) {
	                return !!_.isString(editorValue.get('columnGuid'));
	            },

	            // Need to refresh the required columns on editor value changes
	            updateRequiredColumns: function() {
	                // Call set with the array of values,
	                this.requiredColumns.set(
	                    _.map(this.editorValues.pluck('columnGuid'), function(id) {
	                        return {
	                            id: id
	                        };
	                    })
	                );
	            },

	            generateSPL: function(options) {
	                options = options || {};

	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Calculate Field must be in a valid state before you can generate SPL.');
	                }

	                var newFieldName = this.get('newFieldName'),
	                    expression = this.getExpression();

	                return 'eval "' + newFieldName + '" = ' + expression;
	            },

	            getAdvancedCommandAttributes: function() {
	                return {
	                    newFieldName: this.get('newFieldName'),
	                    expression: this.getExpression()
	                };
	            },

	            getExpression: function() {
	                var expression = this.getEditorValueAtIndex(0) || '\'\'',
	                    secondValue,
	                    operator;

	                if (this.editorValues.length > 1) {
	                    secondValue = this.getEditorValueAtIndex(1) || '\'\'';
	                    operator = this.get('operator');
	                    expression += ' ' + operator + ' ' + secondValue;
	                }

	                return expression;
	            }
	        }, {
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.CALCULATE_FIELD,
	                    newFieldName: ''
	                }, BaseCommand.getDefaults());
	            },
	            // Blacklist is purposely empty; you can add a calculated field regardless of selection
	            blacklist: []
	        });

	        return CalculateField;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Round":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("util/math_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel,
	        mathUtils
	    ) {
	        var Round = BaseCommand.extend({
	            _displayName: _("Round Values").t(),
	            _placeholderSPL: "round",

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            validation: {
	                spl: 'validateSPL'
	            },

	            defaults: function() {
	                return Round.getDefaults();
	            },

	            validateSPL: function() {
	                var errorString = this.validateForTypes(this.getWhitelistedTypes()),
	                    decimalPlaces = this.get('decimalPlaces');

	                if (!this.hasValidRequiredColumn()) {
	                    return _('Select a numeric field.').t();
	                }

	                if (!mathUtils.isInteger(decimalPlaces)) {
	                    return _('Decimal places must be an integer.').t();
	                }

	                if (errorString) {
	                    return errorString;
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};

	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Round Values must be in a valid state before you can generate SPL.');
	                }

	                var requiredField = this.requiredColumns.first(),
	                    fieldName = this.getFieldNameFromGuid(requiredField.get('id')),
	                    decimalPlaces = this.get('decimalPlaces');

	                return 'eval "' + fieldName + '"=round(\'' + fieldName + '\',' + decimalPlaces + ')';
	            }
	        }, {
	            blacklist: [
	                {
	                    selection: BaseCommand.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES._RAW, ColumnModel.TYPES.BOOLEAN, ColumnModel.TYPES.STRING,
	                        ColumnModel.TYPES.IPV4, ColumnModel.TYPES.EPOCH_TIME, ColumnModel.TYPES._TIME ]
	                },
	                { selection: BaseCommand.SELECTION.MULTICOLUMN },
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.CELL },
	                { selection: BaseCommand.SELECTION.TEXT }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.ROUND,
	                    isComplete: true,
	                    decimalPlaces: 0
	                }, BaseCommand.getDefaults());
	            }
	        });

	        return Round;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/Bucket":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column"),
	        __webpack_require__("util/math_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel,
	        mathUtils
	    ) {
	        var TIME_SCALE_UNITS = [
	            {value: 's', label: _('Seconds').t()},
	            {value: 'm', label: _('Minutes').t()},
	            {value: 'h', label: _('Hours').t()},
	            {value: 'mon', label: _('Months ').t()}
	            //TODO: microseconds (us), milliseconds (ms), centiseconds (cs), or deciseconds (ds)?
	        ];

	        var Bucket = BaseCommand.extend({
	            _displayName: _("Bucket").t(),
	            _placeholderSPL: "bin",

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            validation: {
	                spl: 'validateSPL'
	            },

	            defaults: function() {
	                return Bucket.getDefaults();
	            },

	            validateSPL: function() {
	                var errorString = this.validateForTypes(this.getWhitelistedTypes()),
	                    timeCount = this.get('timeCount'),
	                    timeScaleUnit = this.get('timeScaleUnit');

	                if (!this.hasValidRequiredColumn()) {
	                    return _('You must select at least one field to bucket.').t();
	                }

	                if (errorString) {
	                    return errorString;
	                }

	                if (!mathUtils.isInteger(timeCount) || timeCount < 1) {
	                    return _('Provide a positive number of time units.').t();
	                }

	                if (!_.where(TIME_SCALE_UNITS, {value: timeScaleUnit}).length) {
	                    return _('Provide a valid time scale unit.').t();
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};

	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('Bucket must be in a valid state before you can generate SPL.');
	                }

	                var requiredField = this.requiredColumns.first(),
	                    requiredFieldGuid = requiredField && requiredField.get('id'),
	                    fieldName = this.getFieldNameFromGuid(requiredFieldGuid, { doubleQuoteWrap: true }),
	                    timeCount = this.get('timeCount'),
	                    timeScaleUnit = this.get('timeScaleUnit');

	                return 'bin ' + fieldName + ' span=' + timeCount + timeScaleUnit;
	            }
	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.CELL },
	                { selection: BaseCommand.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES.STRING, ColumnModel.TYPES._RAW,
	                        ColumnModel.TYPES.BOOLEAN, ColumnModel.TYPES.IPV4,
	                        ColumnModel.TYPES.NUMBER ] },
	                { selection: BaseCommand.SELECTION.MULTICOLUMN },
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.TEXT }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.BUCKET,
	                    timeScaleUnit: 's'
	                }, BaseCommand.getDefaults());
	            },
	            TIME_SCALE_UNITS: TIME_SCALE_UNITS
	        });

	        return Bucket;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/datasets/commands/ReplaceMismatchedTypes":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel
	    ) {
	        var ReplaceMismatchedTypes = BaseCommand.extend({
	            _displayName: _("Replace Type Mismatches With Null").t(),
	            _placeholderSPL: "eval",
	            _advancedCommand: BaseCommand.EVAL_EXISTING_FIELD,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            validation: {
	                spl: 'validateSPL'
	            },

	            defaults: function() {
	                return ReplaceMismatchedTypes.getDefaults();
	            },

	            validateSPL: function (value, attr, options) {
	                var errorString = this.validateForTypes(this.getWhitelistedTypes());
	                
	                if (!this.hasValidRequiredColumn()) {
	                    return _('Select a field.').t();
	                }
	                
	                if (errorString) {
	                    return errorString;
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};
	                
	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('ReplaceMismatchedTypes must be in a valid state before you can generate SPL.');
	                }

	                var requiredColumnGuid = this.requiredColumns.first().id,
	                    fieldNameDoubleQuoted = this.getFieldNameFromGuid(requiredColumnGuid, { doubleQuoteWrap: true }),
	                    expression = this.getExpression();

	                return 'eval ' + fieldNameDoubleQuoted + ' = ' + expression;
	            },

	            getAdvancedCommandAttributes: function() {
	                return {
	                    expression: this.getExpression()
	                };
	            },

	            getExpression: function() {
	                var requiredColumnId = this.hasValidRequiredColumn() ? this.requiredColumns.first().id : undefined,
	                    basicExpression = 'mvfilter()',
	                    fieldNameSingleQuoted,
	                    column,
	                    columnType;
	                    
	                if (!requiredColumnId) {
	                    return basicExpression;
	                }
	                
	                fieldNameSingleQuoted = this.getFieldNameFromGuid(this.requiredColumns.first().id, { singleQuoteWrap: true });
	                column = this.columns.get(requiredColumnId);
	                columnType = column.get('type');
	                
	                if (columnType === ColumnModel.TYPES.NUMBER) {
	                    return 'mvfilter(isnum(' + fieldNameSingleQuoted + '))';
	                }
	                
	                if (columnType === ColumnModel.TYPES.BOOLEAN) {
	                    return 'mvfilter(match(' + fieldNameSingleQuoted + ', "^true$|^false$"))';
	                }
	                
	                if (columnType === ColumnModel.TYPES.IPV4) {
	                    return 'mvfilter(match(' + fieldNameSingleQuoted + ', "^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$"))';
	                }
	                
	                if (columnType === ColumnModel.TYPES.EPOCH_TIME) {
	                    return 'mvfilter(match(' + fieldNameSingleQuoted + ', "^\\d+\\.?\\d{0,3}$|^\\d*\\.\\d{0,3}$"))';
	                }
	                
	                return basicExpression;
	            }
	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.MULTICOLUMN },
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.CELL },
	                { selection: BaseCommand.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES._RAW, ColumnModel.TYPES._TIME, ColumnModel.TYPES.STRING ]
	                },
	                { selection: BaseCommand.SELECTION.TEXT }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.REPLACE_MISMATCHED_TYPES,
	                    isComplete: true
	                }, BaseCommand.getDefaults());
	            }
	        });
	        
	        return ReplaceMismatchedTypes;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/datasets/commands/FilterMismatchedTypes":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/datasets/commands/Base"),
	        __webpack_require__("models/datasets/Column")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        BaseCommand,
	        ColumnModel
	    ) {
	        var FilterMismatchedTypes = BaseCommand.extend({
	            _displayName: _("Remove Type Mismatches").t(),
	            _placeholderSPL: BaseCommand.WHERE,
	            _advancedCommand: BaseCommand.WHERE,
	            isSearchPoint: true,

	            initialize: function(attributes, options) {
	                BaseCommand.prototype.initialize.apply(this, arguments);
	            },

	            validation: {
	                spl: 'validateSPL'
	            },

	            defaults: function() {
	                return FilterMismatchedTypes.getDefaults();
	            },

	            validateSPL: function (value, attr, options) {
	                var errorString = this.validateForTypes(this.getWhitelistedTypes());
	                
	                if (!this.hasValidRequiredColumn()) {
	                    return _('Select a field.').t();
	                }
	                
	                if (errorString) {
	                    return errorString;
	                }
	            },

	            generateSPL: function(options) {
	                options = options || {};
	                
	                if (!options.skipValidation && !this.isValid(true)) {
	                    throw new Error('FilterMismatchedTypes must be in a valid state before you can generate SPL.');
	                }

	                return 'where ' + this.getExpression();
	            },

	            getAdvancedCommandAttributes: function() {
	                return {
	                    expression: this.getExpression()
	                };
	            },
	            
	            getExpression: function() {
	                var requiredColumnId = this.hasValidRequiredColumn() ? this.requiredColumns.first().id : undefined,
	                    basicExpression = 'mvcount(mvfilter()) >= 1',
	                    fieldNameSingleQuoted,
	                    column,
	                    columnType;
	                    
	                if (!requiredColumnId) {
	                    return basicExpression;
	                }
	                
	                fieldNameSingleQuoted = this.getFieldNameFromGuid(this.requiredColumns.first().id, { singleQuoteWrap: true });
	                column = this.columns.get(requiredColumnId);
	                columnType = column.get('type');
	                
	                if (columnType === ColumnModel.TYPES.NUMBER) {
	                    return 'mvcount(mvfilter(isnum(' + fieldNameSingleQuoted + '))) >= 1';
	                }
	                
	                if (columnType === ColumnModel.TYPES.BOOLEAN) {
	                    return 'mvcount(mvfilter(match(' + fieldNameSingleQuoted + ', "^true$|^false$"))) >= 1';
	                }
	                
	                if (columnType === ColumnModel.TYPES.IPV4) {
	                    return 'mvcount(mvfilter(match(' + fieldNameSingleQuoted + ', "^(?:[0-9]{1,3}\\.){3}[0-9]{1,3}$"))) >= 1';
	                }
	                
	                if (columnType === ColumnModel.TYPES.EPOCH_TIME) {
	                    return 'mvcount(mvfilter(match(' + fieldNameSingleQuoted + ', "^\\d+\\.?\\d{0,3}$|^\\d*\\.\\d{0,3}$"))) >= 1';
	                }
	                
	                return basicExpression;
	            }
	        }, {
	            blacklist: [
	                { selection: BaseCommand.SELECTION.MULTICOLUMN },
	                { selection: BaseCommand.SELECTION.TABLE },
	                { selection: BaseCommand.SELECTION.CELL },
	                { selection: BaseCommand.SELECTION.COLUMN,
	                    types: [ ColumnModel.TYPES._RAW, ColumnModel.TYPES._TIME, ColumnModel.TYPES.STRING ]
	                },
	                { selection: BaseCommand.SELECTION.TEXT }
	            ],
	            getDefaults: function(overrides) {
	                return _.defaults((overrides || {}), {
	                    type: BaseCommand.FILTER_MISMATCHED_TYPES,
	                    isComplete: true
	                }, BaseCommand.getDefaults());
	            }
	        });
	        
	        return FilterMismatchedTypes;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "collections/services/datamodel/DataModels":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * A collection of data models
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	            __webpack_require__("shim/jquery"),
	            __webpack_require__("require/underscore"),
	            __webpack_require__("collections/SplunkDsBase"),
	            __webpack_require__("models/services/datamodel/DataModel")
	        ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	            $,
	            _,
	            SplunkDsBase,
	            DataModel
	        ) {

	    return SplunkDsBase.extend({

	        model: DataModel,
	        url: 'datamodel/model'

	    });

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/splunkbar/find/Master.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(337);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/MenuDialog.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(268);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuDialog.pcssm", function() {
				var newContent = require("!!../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuDialog.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/splunkbar/noconnection/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("views/shared/ModalLocalClassNames"),
	    __webpack_require__("views/shared/splunkbar/noconnection/Contents"),
	    __webpack_require__("views/shared/splunkbar/noconnection/Master.pcssm")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        module,
	        ModalView,
	        ContentsView,
	        css
	        ){

	        return ModalView.extend({
	            moduleId: module.id,
	            css: _.extend({}, ModalView.css, css),
	            initialize: function(){
	                this.options.showCloseButton = false;
	                this.options.closeOnEscape = false;
	                this.options.bodyView = new ContentsView();
	                ModalView.prototype.initialize.apply(this, arguments);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/noconnection/Contents":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/waitspinner/Master"),
	    __webpack_require__(338),
	    __webpack_require__("views/shared/splunkbar/noconnection/Contents.pcssm"),
	    __webpack_require__("shim/splunk.util")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        module,
	        BaseView,
	        WaitSpinnerView,
	        Template,
	        css,
	        splunkUtil
	        ){

	        var image = new Image();
	        image.src = splunkUtil.make_url("/static/img/skins/default/loading_medium_green.png");
	        var image2x = new Image();
	        image2x.src = splunkUtil.make_url("/static/img/skins/default/loading_medium_green_2x.png");


	        return BaseView.extend({
	            moduleId: module.id,
	            template: Template,
	            css: css,
	            initialize: function() {
	                BaseView.prototype.initialize.apply(this, arguments);

	                var spinnerOptions = {
	                    color: 'green',
	                    size: 'medium',
	                    frameWidth: 19,
	                    useLocalClassNames: true
	                };

	                this.children.spinner = new WaitSpinnerView(spinnerOptions);
	                this.visible = false;
	            },
	            show: function() {
	                this.children.spinner.start();
	            },
	            hide: function() {
	                this.children.spinner.stop();
	            },
	            render: function() {
	                var html = this.compiledTemplate({
	                    css: this.css
	                });
	                this.$el.html(html);
	                this.children.spinner.render().appendTo(this.$('[data-role=spinner-wrapper]'));
	                return this;
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "stubs/i18n":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("contrib/strftime"), __webpack_require__("shim/splunk.util")], __WEBPACK_AMD_DEFINE_RESULT__ = function() {

	    /*
	     * monkey patches to the i18n library
	     * see SPL-75565
	     */

	    // NOTE: this code block is duplicated in the util/test_i18n_patches.html unit test.
	    //       any changes made here must also be reflected there.
	    if(window.locale_name() in { ko_KR: true, zh_CN: true, zh_TW: true }) {
	        window._i18n_locale.date_formats['short'] = { "pattern": "yy/MM/dd", "format": "%(yy)s/%(MM)s/%(dd)s" };
	        window._i18n_locale.date_formats['medium'] = {"pattern": "yyyy/MM/dd", "format": "%(yyyy)s/%(MM)s/%(dd)s"};
	        window._i18n_locale.time_formats['short'] = { "pattern": "H:mm", "format": "%(H)s:%(mm)s" };
	        window._i18n_locale.time_formats['medium'] = { "pattern": "H:mm:ss", "format": "%(H)s:%(mm)s:%(ss)s" };
	    }

	    var asianLanguageDateReplacements = [
	        [/^ccc MMM d$/, 'M/d (ccc)'],
	        [/^YYYY-MM/, 'YYYY/MM'],
	        [/MM-dd/, 'MM/dd']
	    ];

	    // maintain a hash of locales where custom string replacements are needed to get correct translation
	    var FORMAT_DATE_REPLACEMENTS = {
	        'ja_JP': asianLanguageDateReplacements,
	        'ko_KR': asianLanguageDateReplacements,
	        'zh_CN': asianLanguageDateReplacements,
	        'zh_TW': asianLanguageDateReplacements
	    };

	    // maintain a list of replacements needed when a locale specifies that day comes before month
	    var DAY_FIRST_FORMATS = [
	        ['MMM d', 'd MMM']
	    ];

	    var oldFormatDate = window.format_date;
	    window.format_date = function(date, format) {
	        format = format || 'medium';
	        var i, replacements,
	            locale = window.locale_name();

	        if(format && (typeof format === 'string') && window.locale_uses_day_before_month()) {
	            replacements = DAY_FIRST_FORMATS;
	            for(i = 0; i < replacements.length; i++) {
	                format = format.replace(replacements[i][0], replacements[i][1]);
	            }
	        }
	        if(format && (typeof format === 'string') && locale in FORMAT_DATE_REPLACEMENTS) {
	            replacements = FORMAT_DATE_REPLACEMENTS[locale];

	            for(i = 0; i < replacements.length; i++) {
	                var replacement = replacements[i];
	                format = format.replace(replacement[0], replacement[1]);
	            }
	        }
	        return oldFormatDate(date, format);
	    };
	    
	    return ({
	        _: window.gettext,
	        ungettext: window.ungettext,
	        format_decimal: window.format_decimal,
	        format_number: window.format_number,
	        format_percent: window.format_percent,
	        format_scientific: window.format_scientific,
	        format_date: window.format_date,
	        format_datetime: window.format_datetime,
	        format_time: window.format_time,
	        format_datetime_microseconds: window.format_datetime_microseconds,
	        format_time_microseconds: window.format_time_microseconds,
	        locale_uses_day_before_month: window.locale_uses_day_before_month,
	        format_datetime_range: window.format_datetime_range,
	        locale_name: window.locale_name,
	        DateTime: window.DateTime,
	        moment_install: window.moment_install,
	        numeral_install: window.numeral_install,
	        jQuery_ui_datepicker_install: window.jQuery_ui_datepicker_install
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/noconnection/Contents.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(339);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Contents.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Contents.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "contrib/strftime":
/***/ (function(module, exports) {

	/* version 0.1: http://dren.ch/ */

	Number.prototype.pad =
		function (n,p) {
			var s = '' + this;
			p = p || '0';
			while (s.length < n) s = p + s;
			return s;
		};

	Date.prototype.months = [
			'January', 'February', 'March', 'April', 'May', 'June', 'July',
			'August', 'September', 'October', 'November', 'December'
		];
	Date.prototype.weekdays = [
			'Sunday', 'Monday', 'Tuesday', 'Wednesday',
			'Thursday', 'Friday', 'Saturday'
		];
	Date.prototype.dpm = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];

	Date.prototype.strftime_f = {
			A: function (d) { return d.weekdays[d.getDay()] },
			a: function (d) { return d.weekdays[d.getDay()].substring(0,3) },
			B: function (d) { return d.months[d.getMonth()] },
			b: function (d) { return d.months[d.getMonth()].substring(0,3) },
			C: function (d) { return Math.floor(d.getFullYear()/100); },
			c: function (d) { return d.toString() },
			D: function (d) {
					return d.strftime_f.m(d) + '/' +
						d.strftime_f.d(d) + '/' + d.strftime_f.y(d);
				},
			d: function (d) { return d.getDate().pad(2,'0') },
			e: function (d) { return d.getDate()},
			F: function (d) {
					return d.strftime_f.Y(d) + '-' + d.strftime_f.m(d) + '-' +
						d.strftime_f.d(d);
				},
			H: function (d) { return d.getHours().pad(2,'0') },
			I: function (d) { return ((d.getHours() % 12 || 12).pad(2)) },
			j: function (d) {
					var t = d.getDate();
					var m = d.getMonth() - 1;
					if (m > 1) {
						var y = d.getYear();
						if (((y % 100) == 0) && ((y % 400) == 0)) ++t;
						else if ((y % 4) == 0) ++t;
					}
					while (m > -1) t += d.dpm[m--];
					return t.pad(3,'0');
				},
			k: function (d) { return d.getHours().pad(2,' ') },
			l: function (d) { return ((d.getHours() % 12 || 12)) },
			M: function (d) { return d.getMinutes().pad(2,'0') },
			m: function (d) { return (d.getMonth()+1).pad(2,'0') },
			n: function (d) { return "\n" },
			p: function (d) { return (d.getHours() > 11) ? 'PM' : 'AM' },
			
			Q: function (d) { return (d.getMilliseconds()==0) ? "000" : d.getMilliseconds().pad(3,'0')},
			
			R: function (d) { return d.strftime_f.H(d) + ':' + d.strftime_f.M(d) },
			r: function (d) {
					return d.strftime_f.I(d) + ':' + d.strftime_f.M(d) + ':' +
						d.strftime_f.S(d) + ' ' + d.strftime_f.p(d);
				},
			S: function (d) { return d.getSeconds().pad(2,'0') },
			s: function (d) { return Math.floor(d.getTime()/1000) },
			T: function (d) {
					return d.strftime_f.H(d) + ':' + d.strftime_f.M(d) + ':' +
						d.strftime_f.S(d);
				},
			t: function (d) { return "\t" },
	/*		U: function (d) { return false }, */
			u: function (d) { return(d.getDay() || 7) },
	/*		V: function (d) { return false }, */
			v: function (d) {
					return d.strftime_f.e(d) + '-' + d.strftime_f.b(d) + '-' +
						d.strftime_f.Y(d);
				},
	/*		W: function (d) { return false }, */
			w: function (d) { return d.getDay() },
			X: function (d) { return d.toTimeString() }, // wrong?
			x: function (d) { return d.toDateString() }, // wrong?
			Y: function (d) { return d.getFullYear() },
			y: function (d) { return (d.getYear() % 100).pad(2) },
			z: function (d) { return '' }, // don't support time offset rendering
			Z: function (d) { return '' }, // don't support time offset rendering
			'%': function (d) { return '%' }
		};

	Date.prototype.strftime_f['+'] = Date.prototype.strftime_f.c;
	Date.prototype.strftime_f.h = Date.prototype.strftime_f.b;


	Date.prototype.strftime = // revised 1/23/08 jthane for performance
		function (fmt) {
	    var rv;
	    if (rv = this[fmt]) return rv;  // caching reduces avg. time from .32ms to .06ms for typical actions
	    
			var r = []; // '';
			var n = 0;
			while(n < fmt.length) {
				var c = fmt.charAt(n);
				if (c == '%') {
					c = fmt.charAt(++n);
					r.push((this.strftime_f[c]) ? this.strftime_f[c](this) : c);
				} else r.push(c);
				++n;
			}
	    return this[fmt] = r.join('');
		};

/***/ }),

/***/ "views/shared/splunkbar/noconnection/Master.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(340);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "shim/splunk.util":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("shim/jquery"), __webpack_require__("shim/splunk"), __webpack_require__("util/sprintf"), __webpack_require__("stubs/splunk.config"), __webpack_require__(8)], __WEBPACK_AMD_DEFINE_RESULT__ = function($, Splunk, sprintf) {
	    Splunk.util.sprintf = sprintf;
	    return Splunk.util;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/product/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    __webpack_require__("shim/jquery"),
	    module,
	    __webpack_require__("views/shared/Menu"),
	    __webpack_require__("views/shared/splunkbar/MenuButton"),
	    __webpack_require__("views/shared/splunkbar/product/MenuContents")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    _,
	    $,
	    module,
	    MenuView,
	    MenuButtonView,
	    MenuContentsView
	){
	    return MenuView.extend({
	        moduleId: module.id,
	        initialize: function(){
	            this.options.mode = 'dialog';
	            this.options.contentView = new MenuContentsView({
	                model: this.model,
	                collection: this.collection
	            });
	            this.options.toggleView = new MenuButtonView({
	                    label:  this.model.webConf.entry.content.get('productMenuLabel') || _("My Splunk").t(),
	                    hideLabelsAtSmallScreenSizes: true,
	                    icon: 'greater',
	                    iconSize: this.options.iconSize || '1.667',
	                    model: this.model
	                });
	            MenuView.prototype.initialize.apply(this, arguments);
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/product/MenuContents":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/Icon"),
	    __webpack_require__(341),
	    __webpack_require__("views/shared/splunkbar/product/MenuContents.pcssm")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    _,
	    module,
	    BaseView,
	    IconView,
	    template,
	    css
	){
	    return BaseView.extend({
	        moduleId: module.id,
	        template: template,
	        css: css,
	        initialize: function() {
	            BaseView.prototype.initialize.apply(this, arguments);
	            this.debouncedRender();
	        },
	        render: function() {
	            var productMenuUriPrefix = this.model.webConf.entry.content.get('productMenuUriPrefix') || '',
	                isAdmin = this.model.user.isAdmin() || this.model.user.isCloudAdmin(),
	                html = this.compiledTemplate({
	                    productMenuUriPrefix: productMenuUriPrefix,
	                    isAdmin: isAdmin,
	                    css: this.css
	                });
	            this.$el.html(html);

	            var $externalLinks = this.$('[data-link-external]');
	            for (var i = 0; i < $externalLinks.length; i++) {
	                this.children['icon' + i] || (this.children['icon' + i] = new IconView({icon: 'external' }));
	                this.children['icon' + i].render().appendTo($externalLinks.eq(i));
	            }

	            return this;
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/Menu.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(271);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Menu.pcssm", function() {
				var newContent = require("!!../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Menu.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/splunkbar/product/MenuContents.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(342);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuContents.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuContents.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "shim/splunk":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6)], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
	    return window.Splunk;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/services/configs/Web":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("models/SplunkDBase")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(SplunkDBaseModel) {
	        return SplunkDBaseModel.extend({
	            url: "configs/conf-web",
	            urlRoot: "configs/conf-web",
	            initialize: function() {
	                SplunkDBaseModel.prototype.initialize.apply(this, arguments);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/shared/Application":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("models/Base")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(BaseModel) {
	        return BaseModel.extend({
	            initialize: function() {
	                BaseModel.prototype.initialize.apply(this, arguments);
	            },
	            getPermissions: function(permission){
	                return {
	                    app: this.get("app"),
	                    owner: ((permission === 'private') ? this.get("owner") : 'nobody')
	                };
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/services/data/UserPrefGeneral":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("models/StaticIdSplunkDBase"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(SplunkDBaseModel, splunkUtil) {
	        return SplunkDBaseModel.extend({
	            url: 'data/user-prefs',
	            initialize: function() {
	                SplunkDBaseModel.prototype.initialize.apply(this, arguments);
	            },
	            showInstrumentationOptInModal: function(currentOptInVersion) {
	                var dismissedVersion = this.entry.content.get('dismissedInstrumentationOptInVersion');
	                if (dismissedVersion === undefined || dismissedVersion === null || !dismissedVersion.match(/^[0-9]+$/)) {
	                    if (splunkUtil.normalizeBoolean(this.entry.content.get('hideInstrumentationOptInModal'))) {
	                        dismissedVersion = 1;
	                    } else {
	                        dismissedVersion = 0;
	                    }
	                }
	                return parseInt(dismissedVersion, 10) < currentOptInVersion;
	            }
	        },
	        {
	            id: 'data/user-prefs/general'
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "collections/services/authentication/CurrentContexts":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("models/services/authentication/CurrentContext"),
	        __webpack_require__("collections/SplunkDsBase")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(CurrentContextModel, SplunkDsBaseCollection) {
	        return SplunkDsBaseCollection.extend({
	            model: CurrentContextModel,
	            url: "authentication/current-context",
	            initialize: function() {
	                SplunkDsBaseCollection.prototype.initialize.apply(this, arguments);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/services/authentication/CurrentContext":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("models/SplunkDBase")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(SplunkDBaseModel) {
	        return SplunkDBaseModel.extend({
	            url: "authentication/current-context",
	            initialize: function() {
	                SplunkDBaseModel.prototype.initialize.apply(this, arguments);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "collections/services/Messages":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("models/services/Message"),
	        __webpack_require__("collections/SplunkDsBase")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, MessageModel, SplunkDsBaseCollection) {
	        return SplunkDsBaseCollection.extend({
	            model: MessageModel,
	            url: 'messages',
	            initialize: function() {
	                SplunkDsBaseCollection.prototype.initialize.apply(this, arguments);
	            },
	            destroyAll: function() {
	                if (this.destroying === true) {
	                    return this.destroyDFD;
	                }
	                this.destroying = true;
	                var that = this;
	                this.destroyDFD = new $.Deferred(function(dfd){
	                    function destroyNext() {
	                        var dummyDefered = new $.Deferred();
	                        if (that.length > 0) {
	                            var model = that.pop();
	                            var destroyPromise = model.destroy() || dummyDefered.resolve().promise();
	                            destroyPromise.always( destroyNext);
	                            return destroyPromise;
	                        }
	                        else {
	                            dfd.resolve();
	                        }
	                    }
	                    destroyNext();
	                });
	                this.destroyDFD.then(function() {
	                    that.destroying = false;
	                });
	                return this.destroyDFD.promise();
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/Message":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("models/SplunkDBase")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(SplunkDBaseModel) {
	        return SplunkDBaseModel.extend({
	            url: 'messages',
	            initialize: function() {
	                SplunkDBaseModel.prototype.initialize.apply(this, arguments);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "collections/services/data/ui/Managers":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("models/services/data/ui/Manager"),
	        __webpack_require__("collections/SplunkDsBase"),
	        __webpack_require__("util/splunkd_utils")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, Backbone, ManagerModel, SplunkDsBaseCollection, splunkdUtils) {
	        return SplunkDsBaseCollection.extend({
	            url: "data/ui/manager",
	            model: ManagerModel,
	            initialize: function() {
	                SplunkDsBaseCollection.prototype.initialize.apply(this, arguments);
	            },
	            canShowMore: function() {
	                return this.links.get('_show') ? true : false;
	            },
	            showMore: function() {
	                var model = new ManagerModel({
	                    id: 'data/ui/manager/_show'
	                });

	                // Use Backbone.sync() directly instead of Model.save() to
	                // avoid argument whitelist wonkiness -- GET on
	                // /data/ui/manager/_show isn't allowed, and even if it were,
	                // it wouldn't produce meaningful optional/required args.

	                var bbXHR, deferredResponse = $.Deferred(),
	                    defaults = {
	                        trigger: true,
	                        processData: true,
	                        url: splunkdUtils.fullpath(model.id, {}),
	                        type: 'POST',
	                        data: {
	                            output_mode: 'json'
	                        }
	                    };

	                var callback_collection = this;

	                bbXHR = Backbone.sync.call(this, "update", model, defaults);
	                bbXHR.done(function() {
	                    callback_collection.links.unset('_show');
	                    callback_collection.fetch({
	                        data: {
	                            app: '-',
	                            owner: '-',
	                            count: 0,
	                            digest: 1
	                        },
	                        success: function() {
	                            deferredResponse.resolve.apply(deferredResponse, arguments);
	                        }
	                    });
	                });
	                bbXHR.fail(function() {
	                    deferredResponse.reject.apply(deferredResponse, arguments);
	                });

	                return deferredResponse.promise();
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/data/ui/Manager":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("models/SplunkDBase")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(SplunkDBaseModel) {
	        return SplunkDBaseModel.extend({
	            url: "data/ui/manager",
	            urlRoot: "data/ui/manager",
	            initialize: function() {
	                SplunkDBaseModel.prototype.initialize.apply(this, arguments);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "collections/shared/splunkbar/SystemMenuSections":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("models/shared/splunkbar/SystemMenuSection"),
	    __webpack_require__("collections/Base")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    SystemMenuSectionModel,
	    BaseCollection
	){
	    return BaseCollection.extend({
	        model: SystemMenuSectionModel,
	        initialize: function() {
	            BaseCollection.prototype.initialize.apply(this, arguments);
	        },
	        comparator: function(a, b){
	            var x = a.get('order'),
	                y = b.get('order');
	            if(x === y){
	                return 0;
	            }
	            return x > y ? 1 : -1;
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "models/shared/splunkbar/SystemMenuSection":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("models/Base")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    BaseModel
	){
	    return BaseModel.extend({
	        initialize: function(){
	            BaseModel.prototype.initialize.apply(this, arguments);
	            
	            //TODO lame...
	            if( !this.get('items') ){
	                this.set({items: []});
	            }
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/splunkbar/MenuButton":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        module,
	        __webpack_require__("views/shared/Button"),
	        __webpack_require__("views/shared/splunkbar/MenuButton.pcssm"),
	        __webpack_require__("views/shared/splunkbar/MenuButtonLite.pcssm")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        module,
	        Button,
	        css,
	        cssLite
	    ){
	        return Button.extend({
	            moduleId: module.id,
	            constructor: function(options) {
	                var isLite = options.model  && options.model.serverInfo && options.model.serverInfo.isLite();
	                this.css = isLite? cssLite : css;
	                this.className = this.css.view;
	                Button.apply(this, arguments);
	            },
	            initialize: function() {
	                this.options.menu = true;
	                this.options.action = 'toggle';
	                Button.prototype.initialize.apply(this, arguments);
	            },
	            render: function() {
	                Button.prototype.render.apply(this, arguments);
	                this.options.truncateLongLabels && this.$('[data-role=label]').attr('class', this.css.truncateLabel);
	                this.options.hideLabelsAtSmallScreenSizes && this.$('[data-role=label]').attr('class', this.css.optionalLabel);
	                return this;
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/Master.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(280);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "util/csrf_protection":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, splunkUtils) {
	        var HEADER_NAME = 'X-Splunk-Form-Key';
	        var FORM_KEY = splunkUtils.getFormKey();

	        // If the form key is not present, return without 
	        // setting up the prefilter. Return instead of throwing
	        // because there are some scenarios (Independent Mode)
	        // where this is the expected behavior.
	        if (!FORM_KEY) {
	            return;
	        }

	        if ($) {
	            $.ajaxPrefilter(function(options, originalOptions, jqXHR) {
	                if (options['type'] && options['type'].toUpperCase() == 'GET') return;
	                jqXHR.setRequestHeader(HEADER_NAME, FORM_KEY);
	            });

	            $(document).ready(function() {
	                $(document).bind('ajaxError', function(event, xhr, opts, err) {
	                    // because we'll get a 401 when logout is clicked, prevent 
	                    // /en-US/account/login?return_to=/en-US/account/logout from happening
	                    var pathname = window.location.pathname;
	                    if (xhr.status === 401 && pathname.indexOf('/account/logout') === -1) {
	                        document.location = splunkUtils.make_url('account/login?session_expired=1&return_to=' + encodeURIComponent(pathname + document.location.search));
	                        return;
	                    }
	                });
	            });
	        } else {
	            throw "Splunk's jQuery.ajax extension requires jQuery.";   
	        }
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "util/ajax_no_cache":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Insert a jQuery ajax prefilter that sets options.cache=false for all GET requests
	 * This is a preventative measure to avoid an intermittent bug in Chrome 28 (see SPL-71743)
	 */ 

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($) {
	        if ($) {
	            $.ajaxPrefilter(function(options, originalOptions, jqXHR) {
	                if (options.type && options.type.toUpperCase() == 'GET' && options.cache === undefined) {
	                    options.cache = false;
	                }
	            });

	        } else {
	            throw "ajax_no_cache requires jQuery.";   
	        }
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/appbar/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__("require/backbone"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/appbar/AppNav"),
	    __webpack_require__("views/shared/appbar/AppLabel"),
	    __webpack_require__("views/shared/appbar/more/Master"),
	    __webpack_require__("models/shared/Application"),
	    __webpack_require__("models/services/data/ui/Nav"),
	    __webpack_require__("models/services/AppLocal"),
	    __webpack_require__("collections/services/data/ui/Views"),
	    __webpack_require__("collections/services/saved/Searches"),
	    __webpack_require__("views/shared/appbar/Master.pcssm"),
	    __webpack_require__("helpers/AppNav"),
	    __webpack_require__("uri/route"),
	    __webpack_require__("util/color_utils"),
	    __webpack_require__("util/console"),
	    __webpack_require__("util/xml")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    Backbone,
	    module,
	    BaseView,
	    AppNavView,
	    AppLabelView,
	    MoreMenu,
	    ApplicationModel,
	    NavModel,
	    AppModel,
	    ViewsCollection,
	    SavedSearchesCollection,
	    css,
	    appNavParser,
	    route,
	    color_utils,
	    console,
	    XML
	) {
	    var View = BaseView.extend({
	        moduleId: module.id,
	        css: css,
	        initialize: function(options) {
	            BaseView.prototype.initialize.apply(this, arguments);

	            this.children.appNav = new AppNavView({
	                model: {
	                    user: this.model.user,
	                    serverInfo: this.model.serverInfo,
	                    appNav: this.model.appNav,
	                    application: this.model.application
	                },
	                collection: this.collection
	            });

	            this.children.appLabel = new AppLabelView({
	                model: this.model,
	                collection: this.collection
	            });

	            this.setBannerColor();
	            this.model.appNav.on('change:color', this.setBannerColor, this);

	            if(options.autoRender !== false) {
	                this.debouncedRender();
	            }
	        },

	        renderMoreMenu: function() {
	            this.children.moreMenu = new MoreMenu({
	                model: {
	                    serverInfo: this.model.serverInfo
	                },
	                navData: {submenu: this.model.appNav.get('nav')}
	            });
	            this.children.appNav.$el.append(this.children.moreMenu.render().el);
	        },

	        removeMoreMenu: function() {
	            if (this.children.moreMenu) {
	                this.children.moreMenu.remove();
	            }
	        },

	        collapseAppNav: function() {
	            this.removeMoreMenu();
	            this.$('[data-role=right-nav]').removeAttr('data-action');
	            var mainWidth = this.$el.outerWidth(),
	                diff = this._getNavWidthDiff(mainWidth),
	                $appNav = this.children.appNav.$el.find('[data-role=app-nav-container]'),
	                links = $appNav.children().show(),
	                offsetLinks = [];

	            if (diff <= 0) {return false;}

	            $appNav.width(diff);
	            _.each(links, function(link) {
	                if (link.offsetTop > 0) {
	                    offsetLinks.push(link);
	                }
	            });

	            var numOffsetLinks = offsetLinks.length;
	            if (numOffsetLinks > 0) {
	                $(offsetLinks).hide();
	                this.renderMoreMenu();
	                this.children.moreMenu.$('[data-role=slidelist-menu] > li').hide().slice(-numOffsetLinks).show();
	            }
	            $appNav.width('auto');
	        },

	        _getNavWidthDiff: function(mainWidth) {
	            var appLabelWidth = this.children.appLabel.$el.outerWidth();
	            return mainWidth - appLabelWidth || 0;
	        },

	        render: function() {
	            this.$el.html('');
	            this.children.appLabel.render().appendTo(this.$el);
	            this.children.appNav.render().prependTo(this.$el);

	            return this;
	        },

	        setBannerColor: function(){
	            if(!this.model.appNav){return false;}

	            var navColor = color_utils.normalizeHexString(this.model.appNav.get('color')||'');
	            var isHexColor = /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(navColor);
	            if (!isHexColor ){
	                return false;
	            }
	            this.$el.css('background-color', navColor);
	        }
	    },
	    {
	        END_GRADIENT_LUMINOSITY: 0.90,
	        createWithAppNavUrl: function(options){
	            var self = this;
	            var app = self._getApp(options);
	            var owner = options.model.application.get('owner');
	            var applicationDfd = new $.Deferred();

	            if (app && owner) {
	                applicationDfd.resolve(app, owner);
	            } else {
	                options.model.application.once('change', function() {
	                    var app = self._getApp(options),
	                        owner = options.model.application.get('owner');
	                    if (app && owner) {
	                        applicationDfd.resolve(app, owner);
	                    }
	                });
	            }

	            applicationDfd.done(function(){
	                var url = route.appNavUrl(options.model.application.get('root'), options.model.application.get('locale'), self._getApp(options));
	                $.ajax({
	                    url: url,
	                    dataType:'json'
	                }).done(function(data){
	                    self._applyAppNavData(data, options.model.appNav, options, false);
	                }).fail(function() {
	                    self.createWithBackbone(options);
	                });
	            });
	        },
	        _getApp: function(options) {
	            return options.model.application.get('app') || 'search';
	        },
	        createWithAppNavModel: function(options) {
	            var appNav = options.model.appNav;
	            this._applyAppNavData(appNav.entry.content.toJSON(), appNav, options, false);
	        },
	        createWithBackbone: function(options){
	            var self = this;
	            var applicationDfd = $.Deferred();
	            var appNavDfd = $.Deferred();
	            var viewsDfd = $.Deferred();
	            var savedSearchesDfd = $.Deferred();
	            var appDfd = $.Deferred();
	            function updateNavData() {
	                var data = appNavParser.parseNavModel(
	                    options.model.splunkDappNav,
	                    options.collection.views,
	                    options.collection.savedSearches,
	                    options.model.application.get('root')
	                );
	                var appLabel;
	                if (data.appLabel) {
	                    appLabel = data.appLabel;
	                } else if (options.model.app && options.model.app.entry && options.model.app.entry.content && options.model.app.entry.content.get('label')) {
	                    appLabel = options.model.app.entry.content.get('label') || '';
	                }
	                self._applyAppNavData({
	                    nav: data.nav,
	                    color: data.color,
	                    label: appLabel,
	                    defaultView: data.defaultView,
	                    searchView: data.searchView
	                }, options.model.appNav, options, false);
	            }

	            var app = self._getApp(options),
	                owner = options.model.application.get('owner');
	            if (app && owner) {
	                applicationDfd.resolve(app, owner);
	            } else {
	                options.model.application.once('change', function() {
	                    var app = self._getApp(options);
	                    var owner = options.model.application.get('owner');
	                    if (app && owner) {
	                        applicationDfd.resolve(app, owner);
	                    }
	                });
	            }

	            if (!options.model.app) {
	                options.model.app = new AppModel();
	                applicationDfd.done(function(app, owner) {
	                    options.model.app.set({id: 'apps/local/' + app});
	                    options.model.app.fetch({data: {app: app, owner: owner}});
	                });
	            }

	            if (!options.collection.views) {
	                options.collection.views = new ViewsCollection();
	                applicationDfd.done(function(app, owner) {
	                    options.collection.views.fetch({data: {app: app, owner: owner, count: -1, digest: 1}});
	                });
	            }

	            if (!options.collection.savedSearches) {
	                options.collection.savedSearches = new SavedSearchesCollection();
	                applicationDfd.done(function(app, owner) {
	                    appNavDfd.then(function() {
	                        var xml = this.entry.content.get('eai:data');
	                        // Only fetch the savedsearhes collection if we're referencing saved searches in the nav
	                        if (XML.parse(xml).find('saved[match],saved[source]').length > 0) {
	                            options.collection.savedSearches.fetch({
	                                data: {
	                                    app: app,
	                                    owner: '-',
	                                    search: 'is_visible=1 AND disabled=0',
	                                    count: 500 // Limited to 500 saved searches to match appserver behavior
	                                }
	                            });
	                        } else {
	                            savedSearchesDfd.resolve();
	                        }
	                    });
	                });
	            }

	            if (!options.model.splunkDappNav) {
	                options.model.splunkDappNav = new NavModel();
	                applicationDfd.done(function(app, owner) {
	                    options.model.splunkDappNav.fetch({data: {app: app, owner: owner}});
	                });
	            }

	            options.collection.views.once('reset', viewsDfd.resolve);
	            options.collection.savedSearches.once('reset', savedSearchesDfd.resolve);
	            options.model.splunkDappNav.once('sync', appNavDfd.resolve);
	            options.model.app.once('sync', appDfd.resolve);

	            $.when(viewsDfd, savedSearchesDfd, appNavDfd).then(updateNavData);
	        },
	        _applyAppNavData: function(data, appNav, options, fromCache) {
	            var root = options.model.application.get('root'),
	                locale = options.model.application.get('locale'),
	                app = this._getApp(options),
	                owner = options.model.application.get('owner'),
	                appLink = route.page(root, locale || '', app),
	                appIcon = route.appIcon(root, locale || '', owner, app),
	                appLogo = route.appLogo(root, locale || '', owner, app);

	            if (console.DEBUG_ENABLED) {
	                if (this._lastApply) {
	                    console.debug('Applying app nav data %o after %o ms', data, new Date().getTime() - this._lastApply);
	                } else {
	                    this._lastApply = new Date().getTime();
	                    console.debug('Applying app nav data: %o', data);
	                }
	            }
	            appNav.set({
	                nav: data.nav,
	                color: data.color,
	                label: data.label,
	                icon: appIcon,
	                logo: appLogo,
	                link: appLink,
	                defaultView: data.defaultView,
	                searchView: data.searchView
	            });

	            if (!fromCache) {
	                this._cacheValue(data, options);
	            }
	        },
	        _supportsSessionStorage: function() {
	            return 'sessionStorage' in window && window.sessionStorage;
	        },
	        _cachePrefix: 'splunk-appnav',
	        _cacheKey: function(app, options) {
	            return [this._cachePrefix, this._getApp(options), app.get('owner'), app.get('locale')].join(':');
	        },
	        _cacheValue: function(data, options) {
	            if (this._supportsSessionStorage()) {
	                data = _(data).pick('nav', 'color', 'label', 'defaultView', 'searchView');
	                console.debug('Caching app nav data: %o', data);
	                try {
	                    window.sessionStorage.setItem(this._cacheKey(options.model.application, options), JSON.stringify(data));
	                } catch (e) {
	                    console.warn('Update to store app nav data in sessionStorage: ', e);
	                }
	            }
	        },
	        _createFromCache: function(options) {
	            if (this._supportsSessionStorage()) {
	                try {
	                    var cacheKey = this._cacheKey(options.model.application, options);
	                    var cachedData = JSON.parse(window.sessionStorage.getItem(cacheKey));
	                    if (cachedData) {
	                        console.debug('Applying cached app nav data: %o', cachedData);
	                        var appNav = new Backbone.Model();
	                        this._applyAppNavData(cachedData, appNav, options, true);
	                        options.model.appNav = appNav;
	                        _.delay(_.bind(this._loadDefault, this, options), 1000);
	                        return;
	                    }
	                } catch (e) {
	                    console.warn('Unable load cached app nav data: ', e);
	                }
	            }
	            this._createDefault(options);
	        },
	        _loadDefault: function(options){
	            if (options.appServerUrl) {
	                this.createWithAppNavUrl(options);
	            } else {
	                this.createWithBackbone(options);
	            }
	        },
	        _createDefault: function(options) {
	            if (options.model.appNav) {
	                this.createWithAppNavModel(options);
	            } else {
	                options.model.appNav = new Backbone.Model();
	                this._loadDefault(options);
	            }
	        },
	        create: function(options) {
	            options = options || {};
	            options.collection = options.collection || {};
	            options.model = options.model || {};
	            if (options.useSessionStorageCache === true) {
	                this._createFromCache(options);
	            } else {
	                this._createDefault(options);
	            }
	            return new View(options);
	        }
	    });
	    return View;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/appbar/AppNav":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__("require/backbone"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/appbar/Menu"),
	    __webpack_require__("views/shared/appbar/SlideNav"),
	    __webpack_require__("views/shared/appbar/Button"),
	    __webpack_require__("views/shared/appbar/AppNav.pcssm")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    Backbone,
	    module,
	    BaseView,
	    MenuView,
	    MenuContentsView,
	    ButtonView,
	    css
	){
	    return BaseView.extend({
	        moduleId: module.id,
	        css: css,
	        initialize: function() {
	            BaseView.prototype.initialize.apply(this, arguments);
	            this.listenTo(this.model.appNav, 'change:nav', this.debouncedRender);
	            this.listenTo(this.model.application, 'change:page', this.setActiveItem);
	        },

	        render: function() {
	            var self = this;
	            var navData = this.model.appNav.get('nav');
	            var currentSection = this.model.application.get('page');

	            if(!navData){return this;}

	            this.$el.html(this.compiledTemplate({
	                css: this.css
	            }));

	            $.each(navData, function(index, item){
	                var itemView;

	                if (item.divider) {
	                    self.$('[data-role=app-nav-container]').append('<span class="' + css.divider + '" data-role="divider"></span>');
	                } else if (item.submenu && item.submenu.length && item.submenu.length > 0) {
	                    //create a menu object

	                    itemView = new MenuView({
	                        contentView: new MenuContentsView({
	                            model: {
	                                serverInfo: self.model.serverInfo
	                            },
	                            navData: item
	                        }),
	                        toggleView: new ButtonView({
	                            label: item.label,
	                            title: item.label,
	                            menu: true,
	                            action: 'toggle'
	                        })
	                    });
	                } else {
	                    itemView = new ButtonView({
	                        href: item.uri,
	                        title: item.label,
	                        label: item.label,
	                        active: currentSection == item.viewName,
	                        preventDefault: false,
	                        dataAttributes: {targetView: item.viewName}
	                    });
	                }

	                itemView && self.$('[data-role=app-nav-container]').append(itemView.render().$el);
	            });

	            this.setActiveItem.call(this);
	            this.model.appNav.trigger('rendered');

	            return this;
	        },
	        template: '\
	            <div data-role="app-nav-container" class="<%-css.appNavInner%>"></div>\
	        ',
	        setActiveItem: function(){
	            if(this.model.application.get('page')){
	                //really should be figuring out which button is for this and calling set.
	                this.$('[data-target-view=' + this.model.application.get('page') + ']').attr('data-active', 'active');
	            }
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/appbar/Menu":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    module,
	    __webpack_require__("views/shared/Menu"),
	    __webpack_require__("views/shared/appbar/Menu.pcssm")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    module,
	    MenuView,
	    css
	) {
	    return MenuView.extend({
	        moduleId: module.id,
	        css: css
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/appbar/Menu.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(344);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Menu.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Menu.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/Button":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* REUSE WITH CAUTION
	/* ----------------------------------------------------------
	/* This a CSS Module based view should be considered as Beta.
	/* API is likely to change       */

	/**
	 * All options can be set during initialization or later, by using set().
	 * @initialize or @set
	 *
	 * @param {Object} [options]
	 * @param {String} [options.label = ''] - The contents of the label tag.
	 * @param {String} [options.html = ''] - Alternative to label that allows html and is not escaped.
	 * @param {String} [options.style = 'default'] - default, primary, pill, or pillSquare.
	 * @param {String} [options.size = 'default'] - mini, small, normal or large.
	 * @param {Boolean} [options.fullWidth = false] - if false, inline. if true 100% width block.
	 * @param {String} [options.href = '#'] - Contents of the href.
	 * @param {Boolean} [options.preventDefault = false] - when true, href does not link.
	 * @param {Boolean} [options.action = undefined] - sets the data-action attribute
	 * @param {String} [options.title = options.label] - change the title attribute of a link. Mainly useful for icon only buttons.
	 * @param {Boolean} [options.enabled = false] - enable or disable
	 * @param {Boolean} [options.active = false] - add data-active=true
	 * @param {Boolean} [options.menu = false] - Show or hide the caret.
	 * @param {String} [options.icon = undefined] - icon to show to the left.
	 * @param {Number} [options.iconSize = 1] - relative size of the icon.
	 * @param {object} [options.dataAttributes = {} ] - data attributes to add.
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/Icon"),
	    __webpack_require__("views/shared/Button.pcssm")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    module,
	    BaseView,
	    Icon,
	    css
	){
	    return BaseView.extend({
	        moduleId: module.id,
	        tagName: 'a',
	        css: css,
	        initialize: function(options){
	            var defaults = {
	              label:     '',
	              html:      '',
	              style:     'default',
	              size:      'default',
	              fullWidth: false,

	              href:      '#',
	              preventDefault: true,
	              action:    undefined,
	              active:    false,
	              dataAttributes: {},

	              title:     undefined,
	              enabled:   true,

	              menu:      false,
	              icon:      undefined,
	              iconSize:  1
	              //external:  false     /* Not implemented yet */
	              //tooltip:   false     /* Not implemented yet */
	            };

	            _.defaults(this.options, defaults);

	            this.options.title || (this.options.title = this.options.label);

	            BaseView.prototype.initialize.apply(this, arguments);
	        },
	        events: {
	            'click': function(e) {
	                if (this.options.preventDefault) {
	                    this.trigger('click');
	                    e.preventDefault();
	                }
	            }
	        },
	        set: function(options) {
	            _.extend(this.options, options);
	            this.render();
	        },
	        _setOrRemoveAttr: function(attr, value) {
	            if (value === false) {
	                this.$el.removeAttr(attr);
	            } else {
	                this.$el.attr(attr, value);
	            }
	        },
	        render: function() {
	            var className = (this.className || this.css[this.options.style]),
	                sizeClassName = {
	                        mini: this.css.mini,
	                        small: this.css.small,
	                        'default': '',
	                        large: this.css.large
	                    }[this.options.size],
	                blockClassName = this.options.fullWidth ? this.css.block : this.css.inline;

	            // Attributes
	            this.$el.attr('href', this.options.href);
	            this.$el.attr('class', className + ' ' + sizeClassName + ' ' + (blockClassName || '') );
	            this._setOrRemoveAttr('disabled', this.options.enabled ? false : 'disabled');
	            this._setOrRemoveAttr('title', this.options.title || this.options.label);
	            this._setOrRemoveAttr('data-action', this.options.action);
	            this._setOrRemoveAttr('data-active', this.options.active ? 'active' : false);

	            // Contents
	            var contents = (this.options.html) ? this.options.html : _.escape(this.options.label);
	            if (!this.el.innerHTML) {
	                this.$el.html('<span class="' + this.css.label + '" data-role="label">' +
	                    contents + '</span>');
	            } else {
	                this.$('[data-role=label]').html(contents);
	            }

	            // Caret
	            if (this.options.menu) {
	                this.children.caret = this.children.caret || new Icon({icon: 'caret'});
	                this.children.caret.render().appendTo(this.$el);
	            } else if (this.children.caret) {
	                this.children.caret.$el.detach();
	            }

	            // Icon
	            if (this.options.icon) {
	                this.children.icon = this.children.icon || new Icon();
	                this.children.icon.set({icon: this.options.icon, size: this.options.iconSize});
	                this.children.icon.render().prependTo(this.$el);
	            } else if (this.children.icon) {
	                this.children.icon.$el.detach();
	            }

	            // Badge
	            this.$('[data-role=badge]').remove();
	            if (this.options.badgeLabel) {
	                var $badge = $('<span class="' + this.css.badge + '" data-role="badge">' +
	                    _.escape(this.options.badgeLabel) + '</span>');
	                $badge.prependTo(this.$el);
	            }

	            // Data Attributes
	            _.each(this.options.dataAttributes, function(value, key){
	                var dataAttr = 'data-' + key.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
	                this._setOrRemoveAttr(dataAttr, value);
	            }, this);
	            return this;
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/appbar/SlideNav":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        module,
	        __webpack_require__("views/Base"),
	        __webpack_require__("views/shared/appbar/SlideList"),
	        __webpack_require__("views/shared/appbar/SlideNav.pcssm")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    module,
	    BaseView,
	    SlideListView,
	    css
	    ){
	    return BaseView.extend({
	        moduleId: module.id,
	        css: css,
	        attributes: {'data-role': 'slidenav-menu'},
	        initialize: function() {
	            BaseView.prototype.initialize.apply(this, arguments);
	            this.children.list = [];
	            this.addLevel(this.options.navData, false);
	        },
	        events: {
	            'click [data-has-children]': 'next',
	            'click [data-role="back"]': function(e) {
	                e.stopPropagation();
	                this.back();
	            }
	        },
	        addLevel: function(navData, needsBack){
	            var newLevel = new SlideListView({
	                navData: navData,
	                needsBack: needsBack
	            });
	            this.children.list.push(newLevel);
	            newLevel.appendTo(this.$el);
	            return newLevel;
	        },
	        next: function(e){
	            e.stopPropagation();
	            var selectedIndex = $(e.currentTarget).attr('data-last-section', 'true').attr('data-index');
	            var current = this.children.list[this.children.list.length-1];
	            this.$el.height( current.$el.height() );
	            var newLevel = this.addLevel(current.options.navData.submenu[selectedIndex], true);
	            newLevel.render().$el.width();
	            newLevel.$el.css('transform', 'translateX(0%)');
	            current.$el.css('transform', 'translateX(-100%)');
	            this.$el.height( newLevel.$el.height() );

	            newLevel.$el.one('transitionend', function() {
	                newLevel.$el.find('a').first().focus();
	                current.$el.hide();
	            }.bind(this));
	        },
	        back: function(){
	            var hide = this.children.list.pop(),
	                to = this.children.list[this.children.list.length-1];
	            to.$el.show().width();
	            hide.$el.css('transform', 'translateX(100%)');
	            to.$el.css('transform', 'translateX(0%)');
	            this.$el.height( to.$el.height());

	            hide.$el.one('transitionend', function() {
	                hide.remove();
	                to.$el.find('[data-last-section]').removeAttr('data-last-section').focus();
	            }.bind(this));
	        },
	        render: function() {
	            this.children.list[0].render();
	            return this;
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/appbar/SlideList":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        module,
	        __webpack_require__(345),
	        __webpack_require__("views/Base"),
	        __webpack_require__("views/shared/Icon"),
	        __webpack_require__("views/shared/delegates/StopScrollPropagation"),
	        __webpack_require__("views/shared/appbar/SlideList.pcssm")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    module,
	    template,
	    BaseView,
	    IconView,
	    StopScrollPropagation,
	    css
	    ){
	    return BaseView.extend({
	        moduleId: module.id,
	        tagName: 'ul',
	        attributes: {'data-role': 'slidelist-menu'},
	        css: css,
	        template: template,
	        initialize: function() {
	            BaseView.prototype.initialize.apply(this, arguments);
	            if (this.options.needsBack) {
	                this.$el.css('transform', 'translateX(100%)');
	            }
	            this.children.stopScrollPropagation = new StopScrollPropagation({el:this.el});
	        },
	        render: function() {
	            var html = this.compiledTemplate({
	                navData: this.options.navData,
	                css: this.css,
	                needsBack: this.options.needsBack
	            });
	            this.$el.append(html);
	            if ( this.options.needsBack) {
	                this.children.backButton = new IconView({
	                    icon: 'chevronLeft'
	                });
	                this.children.backButton.render().prependTo(this.$('[data-role="back"]'));
	            }
	            var i,
	                $childIcons = this.$('[data-role=submenu-icon]');
	            for(i = 0; i < $childIcons.length; i++ ) {
	                this.children['icon' + i] || (this.children['icon' + i] = new IconView({icon: 'chevronRight'}));
	                this.children['icon' + i].render().appendTo($childIcons.eq(i));
	            }

	            var $dispatchViews = this.$('[data-role=secondary-report-link][data-dispatch-view]');
	            for(i = 0; i < $dispatchViews.length; i++ ) {
	                var iconStyle = $dispatchViews.eq(i).attr('data-dispatch-view');
	                this.children['dispatchView' + i] || (this.children['dispatchView' + i] = new IconView({icon: iconStyle}));
	                this.children['dispatchView' + i].render().appendTo($dispatchViews.eq(i));
	            }

	            return this;
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/Icon":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* REUSE WITH CAUTION
	/* ----------------------------------------------------------
	/* This a CSS Module based view should be considered as Beta.
	/* API is likely to change       */

	/**
	 * All options can be set during initialization or later, by using set().
	 * @initialize or @set
	 *
	 * @param {Object} [options]
	 * @param {String} [options.icon = 'space'] - see icons.pcssm for full list of icons.
	 * @param {Number} [options.iconSize = 1.0] - relative size of the icon.
	 */

	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/Icon.pcssm")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        module,
	        BaseView,
	        css
	    ) {
	        return BaseView.extend({
	            moduleId: module.id,
	            tagName: 'i',
	            css: css,
	            initialize: function(options){
	                var defaults = {
	                  icon: 'space',
	                  size: 1.0
	                };
	                _.defaults(this.options, defaults);

	                BaseView.prototype.initialize.apply(this, arguments);
	            },
	            set: function(options) {
	                _.extend(this.options, options);
	                this.render();
	                return this;
	            },
	            render: function() {
	                this.$el.attr('class', css.view + ' ' + css[this.options.icon]);
	                this.$el.attr('data-icon', this.options.icon);
	                this.$el.css({
	                        fontSize: this.options.size + 'em',
	                        verticalAlign: (this.options.size == 1 ? '' : 'middle')
	                    });
	                return this;
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/appbar/SlideList.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(346);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./SlideList.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./SlideList.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/Icon.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(272);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Icon.pcssm", function() {
				var newContent = require("!!../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Icon.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/appbar/SlideNav.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(347);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./SlideNav.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./SlideNav.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ 377:
/***/ (function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(269)();
	// imports


	// module
	exports.push([module.id, "/*  Splunk: Variables */\n/*  ================================================== */\n/*  Variables to customize the look and feel of Bootstrap (splunk version) */\n\n\n/*  STATIC PATHS */\n/*  ------------------------- */\n\n\n/*  COLOR PALETTE */\n/*  ------------------------- */\n\n/*  Enterprise */\n\n/*  Light */\n\n/*  Grayscale - DO NOT USE DIRECTLY WHENEVER POSSIBLE!!! Use text, border or table variables instead. */\n\n/*  Accent colors */ /* sky */\n\n\n/*  TYPOGRAPHY */\n/*  ------------------------- */ /*  18px; */ /*  Lite listing pages */ /*  empty to use BS default, $baseFontFamily */    /*  instead of browser default, bold */ /*  empty to use BS default, $textColor */ /*  #08c; */\n\n\n/*  SCAFFOLDING */\n/*  ------------------------- */ /*  aliases: $tableBorderColor $tableBorderColorVertical */\n/*  also see: $interactiveBorderColor */      /* For containers without a wrapper */  /* For for containers with a wrapper, like popdown */ /*  44px */  /*  26px  */   /*  22px */\n\n\n/*  Horizontal forms & lists */\n/*  ------------------------- */\n\n\n/*  Z-INDEX */\n/*  ------------------------- */\n/*  If a variable does not suit your purpose, set a value relatively such as, $zindexModal +1 */ /*  Splunk Lite */ /*  Splunk Lite */ /*  Sidebar Component */ /*  Sidebar Component */ /*  timerange popdown needs to be above modal + backdrop */ /*  top interactive element */ /*  top interactive element */ /*  top uninteractive */ /*  top uninteractive */\n\n\n/*  TABLES */\n/*  ------------------------- */ /*  overall background-color */ /*  for hover */ /*  for striping */ /*  for striping */ /*  table and cell border */ /*  table and cell border */ /*  table and cell border */\n\n\n\n\n/*  FORMS */\n/*  ------------------------- */ /*  base line-height + 8px vertical padding + 2px top/bottom border */ /*  This is generally overridden. */\n\n/*  BASE INTERACTIVE */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */ /*  Active state in Radio Button Control */\n\n\n/*  BASE INTERACTIVE ERROR */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n\n\n/*  PRIMARY BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n/*  borders */\n/*  shadow */\n\n\n/*  PILL BUTTONS */\n/*  -------------------------- */\n/*  text */\n/*  background */\n\n\n\n/*  BUTTONS */\n/*  ------------------------- */\n/*  Used in non-standard buttons - Legacy Bootstrap classes only */\n\n\n\n/*  COMPONENT VARIABLES */\n/*  -------------------------------------------------- */\n\n\n/*  Navbar */\n/*  ------------------------- */ /* Fixes issue for escaped Dashboards. */\n\n/*  Inverted navbar */\n\n\n/*  Tooltips and popovers */\n/*  ------------------------- */\n\n/*  GRID */\n/*  -------------------------- */\n/*  Default 940px grid */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Fluid grid */\n/*  ------------------------- */\n\n/*  1200px min */\n\n/*  768px-979px */\n\n\n/*  Responsive Variables */\n\n\n/*  SELECTORS FOR CUSTOMIZING SPECIFIC LOCALES */\n/*  -------------------------- */\n\n\n/*  BUILD COMMENT */\n/*  -------------------------- */\n/*  Hide the Build Comment. The make file sets this to true. */\n\n/*  LEGACY BUILD */\n/*  -------------------------- */\n/*  This is set to true when building the less for splunk components. */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n/*  Splunk: Mixins */\n/*  ================== */\n/*  Snippets of reusable CSS to develop faster and keep code readable */\n\n\n/*  Mixins */\n/*  -------------------------------------------------- */\n\n\n/*  UTILITY MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Link */\n/*  ------------------ */\n\n\n/*  Clearfix */\n/*  -------- */\n/*  For clearing floats like a boss h5bp.com/q */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Center-align a block level element */\n/*  ---------------------------------- */\n\n/*  Sizing shortcuts */\n/*  ------------------------- */\n\n/*  Placeholder text */\n/*  ------------------------- */\n\n/*  Text overflow */\n/*  ------------------------- */\n/*  Requires inline-block or block for proper styling */\n\n/*  CSS image replacement */\n/*  ------------------------- */\n/*  Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 */\n\n\n/*  FONTS */\n/*  -------------------------------------------------- */\n\n\n/*  FORMS */\n/*  -------------------------------------------------- */\n\n/*  Block level inputs */\n\n/*  Mixin for form field states */\n\n\n/*  CSS3 PROPERTIES */\n/*  -------------------------------------------------- */\n\n\n/*  Single Side Border Radius */\n\n\n/*  Transformations */\n\n\n\n/*  Resize anything */\n\n/*  CSS3 Content Columns */\n\n/*  Optional hyphenation */\n\n\n\n\n/*  BACKGROUNDS */\n/*  -------------------------------------------------- */\n\n/*  Gradient Bar Colors for buttons and alerts */\n\n/*  Gradients */\n\n/*  Reset filters for IE */\n\n\n\n/*  COMPONENT MIXINS */\n/*  -------------------------------------------------- */\n\n/*  Horizontal dividers */\n/*  ------------------------- */\n/*  Dividers (basically an hr) within dropdowns and nav lists */\n\n/*  Button backgrounds */\n/*  ------------------ */\n\n/*  Navbar vertical align */\n/*  ------------------------- */\n/*  Vertically center elements in the navbar. */\n/*  Example: an element has a height of 30px, so write out `.navbarVerticalAlign(30px);` to calculate the appropriate top margin. */\n\n\n\n/*  Disable highlighting text */\n/*  ------------------------- */\n\n/*  Printing */\n/*  ------------------ */\n\n\n/*  Popdown */\n/*  ------------------ *//*  .popdown-dialog */\n\n/*  popdown body */\n\n\n\n/* Flex\n/*  ------------- */\n\n/*  Full Page Layout */\n/*  ------------- */\n\n\n\n\n/*  Grid System */\n/*  ----------- */\n\n/*  Centered container element */\n\n/*  Table columns */\n\n/*  Make a Grid */\n/*  Use .makeRow and .makeColumn to assign semantic layouts grid system behavior */\n\n/*  The Grid */\n\n/*  Interactive */\n/*  -------------------------------------------------- */\n/*  These are by any element that can be clicked, such as buttons, menus and table headings. */\n\n/*  Hover state */\n\n/*  Interactive Error */\n/*  These are by any interactive element that is is in an error state */\n\n\n/*  primary */\n\n/*  primary hover state */\n\n/* Overlays (Modal, Popdown, Search Assistant) */\n\n\n/*  Focus States */\n/*  ----------------------------- */\n\n/*  Text entry boxes change their border color and glow */\n\n/*  Clickable buttons change their border color and glow */\n\n/*  Block elements change the background color */\n/*  Block elements change the background color and spread via box-shadow */\n\n/*  Docking Elements */\n/*  ------------------ */\n\n/*  Webkit-style focus */\n/*  ------------------ */\n\n/*  Draggable Handle */\n\n.view---modules-nav-enterprise---7-0-0---N_G2D {\n    animation: none 0s ease 0s 1 normal none running;\n    -webkit-backface-visibility: visible;\n            backface-visibility: visible;\n    background: transparent none repeat 0 0 / auto auto padding-box border-box scroll;\n    border: medium none currentColor;\n    border-collapse: separate;\n    border-image: none;\n    border-radius: 0;\n    border-spacing: 0;\n    bottom: auto;\n    box-shadow: none;\n    box-sizing: content-box;\n    caption-side: top;\n    clear: none;\n    clip: auto;\n    color: #000;\n    columns: auto;\n    column-count: auto;\n    column-fill: balance;\n    column-gap: normal;\n    column-rule: medium none currentColor;\n    column-span: 1;\n    column-width: auto;\n    content: normal;\n    counter-increment: none;\n    counter-reset: none;\n    cursor: auto;\n    direction: ltr;\n    display: inline;\n    empty-cells: show;\n    float: none;\n    font-family: serif;\n    font-size: medium;\n    font-style: normal;\n    font-variant: normal;\n    font-weight: normal;\n    font-stretch: normal;\n    line-height: normal;\n    height: auto;\n    -webkit-hyphens: none;\n        -ms-hyphens: none;\n            hyphens: none;\n    left: auto;\n    letter-spacing: normal;\n    list-style: disc outside none;\n    margin: 0;\n    max-height: none;\n    max-width: none;\n    min-height: 0;\n    min-width: 0;\n    opacity: 1;\n    orphans: 2;\n    outline: medium none invert;\n    overflow: visible;\n    overflow-x: visible;\n    overflow-y: visible;\n    padding: 0;\n    page-break-after: auto;\n    page-break-before: auto;\n    page-break-inside: auto;\n    perspective: none;\n    perspective-origin: 50% 50%;\n    position: static;\n    right: auto;\n    -moz-tab-size: 8;\n         tab-size: 8;\n    table-layout: auto;\n    text-align: left;\n    text-align-last: auto;\n    text-decoration: none;\n    text-indent: 0;\n    text-shadow: none;\n    text-transform: none;\n    top: auto;\n    transform: none;\n    transform-origin: 50% 50% 0;\n    transform-style: flat;\n    transition: none 0s ease 0s;\n    unicode-bidi: normal;\n    vertical-align: baseline;\n    visibility: visible;\n    white-space: normal;\n    widows: 2;\n    width: auto;\n    word-spacing: normal;\n    z-index: auto;\n    all: initial;\n    display: block;\n \tclear: both;\n \tcolor: #333;\n \tborder-top: 1px solid #ccc;\n \tpadding: 20px;\n \tfont-size: 11px;\n    font-family: \"Roboto\", \"Droid\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n    background-color: #eee;\n }\n\n.view---modules-nav-enterprise---7-0-0---N_G2D:before,\n    .view---modules-nav-enterprise---7-0-0---N_G2D:after {\n    display: table;\n    content: \"\";\n    /*  Fixes Opera/contenteditable bug: */\n    /*  http://nicolasgallagher.com/micro-clearfix-hack/#comment-36952 */\n    line-height: 0;\n}\n\n.view---modules-nav-enterprise---7-0-0---N_G2D:after {\n    clear: both;\n}\n\n.shared-footer-aboutdialog---modules-nav-enterprise---7-0-0---2dr0o {\n  \tfont-size: 13px;\n}\n\n.nav---modules-nav-enterprise---7-0-0---4cal7 {\n    float: left;\n}\n\n.nav---modules-nav-enterprise---7-0-0---4cal7 a {\n    color: #1e93c6;\n    text-decoration: none;\n    cursor: pointer;\n    display:inline;\n    color: #333;\n    margin-right: 20px;\n}\n\n.nav---modules-nav-enterprise---7-0-0---4cal7 a:hover {\n    color: #3863a0;\n    text-decoration: underline;\n}\n\n.nav---modules-nav-enterprise---7-0-0---4cal7 a:focus {\n    box-shadow: 0 0 0 2px rgba(61, 171, 255, 0.12);\n    background-color: rgba(61, 171, 255, 0.12);\n    outline: 0;\n}\n\n.copyright---modules-nav-enterprise---7-0-0---1Yh2N {\n    float:right;\n    margin: 0;\n}\n\n.shared-aboutdialog---modules-nav-enterprise---7-0-0---bwm2q .modal-title---modules-nav-enterprise---7-0-0---dA6N6 {\n    font-family: \"Splunk Icons\";\n    font-weight: normal;\n    color: black;\n    text-shadow: none;\n    text-decoration: none;\n    font-size: 25px;\n    cursor: default;\n}\n\n.shared-aboutdialog---modules-nav-enterprise---7-0-0---bwm2q .prompt---modules-nav-enterprise---7-0-0---1h9Z_ {\n    color: #65A637;\n    font-weight: normal;\n}\n\n.shared-aboutdialog---modules-nav-enterprise---7-0-0---bwm2q .modal-body---modules-nav-enterprise---7-0-0---uccQd {\n    font-size: 12px;\n}\n\n.shared-aboutdialog---modules-nav-enterprise---7-0-0---bwm2q .divider---modules-nav-enterprise---7-0-0---2NKFu {\n    height: 1px;\n    margin: 7px 1px;\n    /*  8px 1px */\n    overflow: hidden;\n    background-color: #ccc;\n    margin-top: 15px;\n}\n\n.shared-aboutdialog---modules-nav-enterprise---7-0-0---bwm2q .app-section-header---modules-nav-enterprise---7-0-0---2wzIj {\n    margin-top: 10px;\n    font-weight: bold;\n}\n\n.shared-aboutdialog---modules-nav-enterprise---7-0-0---bwm2q .attribution-link---modules-nav-enterprise---7-0-0---2jsJa {\n    margin-bottom: 10px;\n    display: block;\n}\n\n\n\n/*  Print */\n@media print {\n    .shared-footer---modules-nav-enterprise---7-0-0---3qAV1 {\n        display: none !important;\n    }\n}\n", ""]);

	// exports
	exports.locals = {
		"view": "view---modules-nav-enterprise---7-0-0---N_G2D",
		"shared-footer-aboutdialog": "shared-footer-aboutdialog---modules-nav-enterprise---7-0-0---2dr0o",
		"nav": "nav---modules-nav-enterprise---7-0-0---4cal7",
		"copyright": "copyright---modules-nav-enterprise---7-0-0---1Yh2N",
		"shared-aboutdialog": "shared-aboutdialog---modules-nav-enterprise---7-0-0---bwm2q",
		"modal-title": "modal-title---modules-nav-enterprise---7-0-0---dA6N6",
		"prompt": "prompt---modules-nav-enterprise---7-0-0---1h9Z_",
		"modal-body": "modal-body---modules-nav-enterprise---7-0-0---uccQd",
		"divider": "divider---modules-nav-enterprise---7-0-0---2NKFu",
		"app-section-header": "app-section-header---modules-nav-enterprise---7-0-0---2wzIj",
		"attribution-link": "attribution-link---modules-nav-enterprise---7-0-0---2jsJa",
		"shared-footer": "shared-footer---modules-nav-enterprise---7-0-0---3qAV1"
	};

/***/ }),

/***/ "views/shared/appbar/Button":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        module,
	        __webpack_require__("views/shared/Button"),
	        __webpack_require__("views/shared/appbar/Button.pcssm")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        module,
	        Button,
	        css
	    ){
	        return Button.extend({
	            moduleId: module.id,
	            css: css,
	            className: css.view,
	            initialize: function(options) {
	                Button.prototype.initialize.apply(this, arguments);
	//                this.options.menu = true;
	//                this.options.action = 'toggle';
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/appbar/Button.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(348);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Button.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Button.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "util/sprintf":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(7)], __WEBPACK_AMD_DEFINE_RESULT__ = function(sprintf) {
	    return sprintf;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/appbar/AppNav.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(349);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./AppNav.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./AppNav.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/Button.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(274);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Button.pcssm", function() {
				var newContent = require("!!../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Button.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/appbar/AppLabel":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__(350),
	    __webpack_require__("views/shared/appbar/AppLabel.pcssm")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    module,
	    BaseView,
	    templateAppLabel,
	    css
	){
	    return BaseView.extend({
	        moduleId: module.id,
	        css: css,
	        tagName: 'h2',
	        initialize: function() {
	            BaseView.prototype.initialize.apply(this, arguments);
	            this.model.appNav.on('change', this.render, this);
	        },
	        showLogo: function(){
	            this.$('[data-role=app-logo]').show();
	            this.$('[data-role=app-name]').hide();
	        },
	        showName: function(){
	            this.$('[data-role=app-name]').show();
	            this.$('[data-role=app-logo]').hide();
	        },
	        render: function(){
	            var label = this.model.appNav.get('label') || '';

	            var html = _.template(templateAppLabel, {
	                appLink: this.model.appNav.get('link'),
	                appLabel: label,
	                appLogo: this.model.appNav.get('logo'),
	                css: this.css
	            });
	            this.$el.html(html);

	            this.setAppLabelDisplay();

	            return this;
	        },
	        setAppLabelDisplay: function(){
	            if (this.model.appNav.get('logo')) {
	                var img = new Image();
	                img.onload = function(){
	                    if(parseInt(img.width, 10) < 2){
	                        this.showName();
	                    } else{
	                        this.$('[data-role=app-logo]').remove();
	                        $(img).attr('class', css.image).attr('data-role=app-logo');
	                        this.$('[data-role=app-home-link]').prepend(img);
	                        this.showLogo();
	                    }
	                }.bind(this);

	                img.onerror = function(){
	                    this.showName();
	                }.bind(this);

	                img.src = this.model.appNav.get('logo');
	            }
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "util/console":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	            __webpack_require__("shim/jquery"),
	            __webpack_require__("require/underscore"),
	            __webpack_require__("util/console_dev"),
	            __webpack_require__("shim/splunk.logger"),
	            __webpack_require__("shim/splunk.util")
	        ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	            $,
	            _,
	            devConsole,
	            SplunkLogger,
	            splunkUtils
	        ) {

	    var LOG_MODE = splunkUtils.getConfigValue("JS_LOGGER_MODE", "None"),
	        LOG_LEVEL = splunkUtils.getConfigValue("JS_LOGGER_LEVEL", "INFO"),
	        EMPTY = function() { };

	    if(LOG_MODE === 'Firebug') {
	        // if Function.prototype.bind is supported natively, we can use it to properly respect log levels
	        // if not, it would result in log statements having incorrect source file names, so don't do it
	        if(typeof devConsole.log.bind === 'function' && devConsole.log.bind.toString().indexOf('native code') > -1) {
	            return ({
	                trace: LOG_LEVEL === 'DEBUG' ? devConsole.trace.bind(devConsole) : EMPTY,
	                debug: LOG_LEVEL === 'DEBUG' ? devConsole.debug.bind(devConsole) : EMPTY,
	                log: LOG_LEVEL in { INFO: true, DEBUG: true } ? devConsole.log.bind(devConsole) : EMPTY,
	                info: LOG_LEVEL in { INFO: true, DEBUG: true } ? devConsole.info.bind(devConsole) : EMPTY,
	                warn: LOG_LEVEL !== 'ERROR' ? devConsole.warn.bind(devConsole) : EMPTY,
	                error: devConsole.error.bind(devConsole)
	            });
	        }
	        return devConsole;
	    }
	    return SplunkLogger.getLogger(splunkUtils.getConfigValue('USERNAME', '') + ':::' + window.location.href);

	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/appbar/AppLabel.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(351);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./AppLabel.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./AppLabel.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/splunkbar/MenuButton.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(275);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuButton.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuButton.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/appbar/more/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    module,
	    __webpack_require__("views/shared/Menu"),
	    __webpack_require__("views/shared/appbar/more/MenuButton"),
	     __webpack_require__("views/shared/appbar/SlideNav"),
	    __webpack_require__("views/shared/appbar/more/Master.pcssm")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    module,
	    MenuView,
	    MenuButtonView,
	    MenuContentsView,
	    css
	){
	    return MenuView.extend({
	        moduleId: module.id,
	        css: css,
	        initialize: function(options) {
	            this.options.mode = 'dialog';
	            this.options.contentView = new MenuContentsView({
	                model: this.model,
	                navData: this.options.navData
	            });
	            this.options.toggleView = new MenuButtonView({
	                label:  '',
	                model: this.model
	            });
	            MenuView.prototype.initialize.apply(this, arguments);
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/appbar/more/MenuButton":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        module,
	        __webpack_require__("views/shared/splunkbar/MenuButton"),
	        __webpack_require__("views/shared/appbar/more/MenuButton.pcssm")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        module,
	        MenuButtonView,
	        css
	    ){
	        return MenuButtonView.extend({
	            moduleId: module.id,
	            constructor: function(options) {
	                MenuButtonView.apply(this, arguments);
	                this.css = css;
	                this.className = this.css.view;
	            },
	            initialize: function() {
	                MenuButtonView.prototype.initialize.apply(this, arguments);
	                this.options.menu = false;
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/appbar/more/MenuButton.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(352);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuButton.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuButton.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "stubs/splunk.config":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {
	    return window.$C;
	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/appbar/more/Master.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(353);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/splunkbar/MenuButtonLite.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(276);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuButtonLite.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuButtonLite.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "models/services/data/ui/Nav":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/StaticIdSplunkDBase"),
	        __webpack_require__("util/xml"),
	        __webpack_require__("util/console")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, SplunkDBaseModel, XML, console) {
	        return SplunkDBaseModel.extend({
	            url: 'data/ui/nav',
	            initialize: function() {
	                SplunkDBaseModel.prototype.initialize.apply(this, arguments);
	            },
	            parse: function(response, options) {
	                // make a defensive copy of response since we are going to modify it (only if we want to)
	                if (!options.skipClone) {
	                    response = $.extend(true, {}, response);
	                }

	                // Use the first entry that we can successfuly parse
	                response.entry[0] = _(response.entry).find(function(entry) {
	                    try {
	                        XML.parse(entry.content['eai:data']);
	                        return true;
	                    } catch(e) {
	                        console.warn('Warning: Invalid xml in nav', entry.name);
	                        return false;
	                    }
	                });
	                SplunkDBaseModel.prototype.parse.call(this, response, options);
	            },
	            getColor: function() {
	                var $xml,
	                    color,
	                    eaiData = this.entry.content.get('eai:data');
	                if (!eaiData) {
	                    return "";
	                }
	                try {
	                    $xml = XML.parse(eaiData);
	                } catch(e) {
	                    return "";
	                }
	                color = $xml.find('nav').attr('color');
	                if (color && color.charAt(0) != '#') {
	                    color = '#' + color;
	                }
	                return color;
	            }
	        },
	        {
	            id: 'data/ui/nav'
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/appbar/Master.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(354);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "shim/jquery":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("contrib/jquery-2.1.0")], __WEBPACK_AMD_DEFINE_RESULT__ = function($) {
	    // These globals are needed for backward compatibility. Some user javascript
	    // depends on jQuery being available globally.
	    if (!window.$) {
	        window.$ = $;
	        window.jQuery = $;
	    }
	    return $;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "helpers/AppNav":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @author Leo
	 *
	 * Produces a JSON object containing necessary data to construct an app's navigation menu.
	 *
	 */
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__("require/backbone"),
	    __webpack_require__("shim/splunk.util"),
	    __webpack_require__("util/xml")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function (
	    $,
	    _,
	    Backbone,
	    splunk_util,
	    XML
	){
	    var app,
	        views,
	        rootEndpoint,
	        searches,
	        nav,
	        seenViews = [],
	        seenSearches = [];

	    /**
	     * Filters the collection to models belonging to the current app, optionally with name matching a string and
	     * optionally among those that haven't been processed yet.
	     *
	     * @param collection Input collection
	     * @param match {String} optional String to match
	     * @param seen {Array} optional list of already processed objects that should be skipped
	     * @return {Array} filtered array of models
	     */
	    function getMatchingItems(collection, match, seen) {
	        return collection.filter(function(it) {
	            var itApp =  it.entry.acl.get('app'),
	                itName = it.entry.get('name'),
	                isGlobal = it.entry.acl.get('sharing') === 'global';
	            if (!isGlobal && itApp !== app) {
	                return false;
	            }
	            if (match) {
	                return (itName.toLowerCase().indexOf(match.toLowerCase())>-1 && !(seen && seen.indexOf(app+'/'+itName)>-1));
	            } else {
	                return !(seen && seen.indexOf(app+'/'+itName)>-1);
	            }
	        });
	    }

	    /**
	     * Searches views collection for a view name to get its label
	     *
	     * @param name {String} view name
	     * @return {Object} containing view label
	     */
	    function getViewProps(viewName) {
	        var obj, view, i, v;
	        views = views || [];
	        for (i=0; i<views.length; i++) {
	            v = views.at(i);
	            if (v.entry.get('name').toLowerCase() === viewName.toLowerCase()) {
	                // allow either a view local to the current app
	                if (v.entry.acl.get('app') == app) {
	                    view = v;
	                    break; // local views have priority over global ones

	                // or a globally shared view from another app
	                } else if (v.entry.acl.get('sharing') == 'global') {
	                    view = v;
	                }
	            }
	        }

	        if (view) {
	            if (!view.entry.content.get('isVisible')) {
	                return false;
	            }
	            // LIGHT-2148: we need to localize, mark for i18n the label when parsing XML file.
	            obj = {
	                label: _(view.entry.content.get('label')).t() || viewName,
	                uri: splunk_util.make_url('app', app, viewName),
	                viewName: viewName,
	                app: app
	            };
	        } else {
	            return false;
	        }
	        return obj;
	    }

	    /**
	     * Searches saved searches collection for a search name to get its properties
	     * @param name {String} search name
	     * @return {Object} containing search properties
	     */
	    function getSavedProps(name) {
	        var obj,
	            saved = searches.find(function(s) {
	                return (s.entry.get('name').toLowerCase() === name.toLowerCase());
	            });
	        if (saved) {
	            obj = {
	                uri: splunk_util.make_full_url('app/'+encodeURIComponent(app)+'/@go', {'s': saved.id}),
	                sharing: saved.get('sharing'),
	                label: name,
	                reportUri: splunk_util.make_full_url('app/'+encodeURIComponent(app)+'/report', {'s': saved.id})
	            };
	            if (saved.entry.content.get('request.ui_dispatch_view')) {
	                obj.dispatchView = saved.entry.content.get('request.ui_dispatch_view');
	            }
	        } else {
	            return false;
	        }
	        return obj;
	    }

	    function sanatizeHref(href){
	        if(typeof href !== 'string'){
	            return false;
	        }
	        var decodedhref = $("<div></div>").html(href).text();
	        decodedhref = window.decodeURI(decodedhref);
	        decodedhref = decodedhref.replace(/(\r\n|\n|\r|\s)/gm,'').toLowerCase();
	        if(decodedhref.indexOf(':') > -1 &&
	            decodedhref.indexOf('javascript:') > -1 ||
	            decodedhref.indexOf('vbscript:') > -1 ||
	            decodedhref.indexOf('data:') > -1 ||
	            decodedhref.indexOf('livescript:') > -1){
	            href = false;
	        }
	        return href;
	    }

	    /**
	     * Recursively go through nav xml, building a json object
	     *
	     * @param nav {xml}
	     * @return {Object} JSON object
	     */
	    function parseNavXml(nav) {
	        var output = [],
	            c;
	        for (c=0; c<nav.length; c++) {
	            var node = nav[c],
	                $node = $(node),
	                nodeName = splunk_util.lowerTrimStr(node.nodeName),
	                obj;

	            if (nodeName === 'collection') {
	                obj = {
	                    label: $node.attr('label'),
	                    uri: '#'
	                };
	                // recursion warning!
	                var children = parseNavXml($node.children());
	                if (!children.submenu.length ||
	                    !_.find(children.submenu, function(obj) { return !obj.divider; })) {
	                    // skip empty collections and ones containing only dividers
	                    continue;
	                }
	                _.extend(obj, children);
	            /*
	            Views
	             */
	            } else if (nodeName === 'view') {
	                var viewName = $node.attr('name'),
	                    isDefault = splunk_util.normalizeBoolean($node.attr('default')||"false"),
	                    source = splunk_util.lowerTrimStr($node.attr('source')),
	                    match = $node.attr('match');

	                if (viewName) {
	                    obj = getViewProps(viewName);
	                    if (!obj) {
	                        continue;
	                    }
	                    if (isDefault) {
	                        obj.isDefault = isDefault;
	                    }
	                    // mark as seen
	                    seenViews.push(app+'/'+viewName);

	                } else if (source) {
	                    var matchedViews = [],
	                        i;
	                    if (source == 'all') {
	                        matchedViews = getMatchingItems(views, match);
	                    } else if (source == 'unclassified') {
	                        matchedViews = getMatchingItems(views, match, seenViews);
	                    }
	                    for (i=0; i<matchedViews.length; i++) {
	                        viewName = matchedViews[i].entry.get('name');
	                        obj = getViewProps(viewName);
	                        if (!obj) {
	                            continue;
	                        }
	                        if (!matchedViews[i].entry.content.get('isDashboard')) {
	                            continue;
	                        }
	                        // mark as seen
	                        seenViews.push(app+'/'+viewName);
	                        output.push(obj);
	                    }
	                    obj = false;
	                }

	            /*
	             Saved searches
	             */
	            } else if (nodeName === 'saved') {
	                var savedName = $node.attr('name');
	                source = splunk_util.lowerTrimStr($node.attr('source'));
	                match = $node.attr('match');

	                if (savedName) {
	                    obj = getSavedProps(savedName);
	                    if (!obj) {
	                        continue;
	                    }
	                    seenSearches.push(app+'/'+savedName);
	                } else if (source) {
	                    var matchedSearches = [];
	                    if (source == 'all') {
	                        matchedSearches = getMatchingItems(searches, match);
	                    } else if (source == 'unclassified') {
	                        matchedSearches = getMatchingItems(searches, match, seenSearches);
	                    }
	                    for (i=0; i<matchedSearches.length; i++) {
	                        savedName = matchedSearches[i].entry.get('name');
	                        obj = getSavedProps(savedName);
	                        if (!obj) {
	                            continue;
	                        }
	                        // mark as seen
	                        seenSearches.push(app+'/'+savedName);
	                        output.push(obj);
	                    }
	                    obj = false;
	                }
	            } else if (nodeName === 'a') {
	                var href = sanatizeHref($node.attr('href'));
	                if(href===false){
	                    obj=false;
	                }else{
	                    if (href.indexOf('/') === 0 && href[1] !== '/'){
	                        href = splunk_util.make_url(href);
	                    }
	                    obj = {
	                        label: $node.text(),
	                        uri: href,
	                        viewName: $node.attr('name') || ''
	                    };
	                }
	            } else if (nodeName === 'divider') {
	                obj = {
	                    label: '',
	                    divider: true
	                };
	            } else {
	                obj = {
	                    label: 'unknown node in nav'
	                };
	            }

	            if (obj) {
	                output.push(obj);
	            }

	        }
	        return {submenu: output};
	    }

	    function parseNavModel(nav, viewsCollection, savedSearchCollection, rootPath, appOverride){
	        var xmlNavString = nav.entry.content.get('eai:data');
	        var navXmlObj;
	        try {
	            navXmlObj = XML.parse(xmlNavString);
	        } catch (e) {
	            // Fall back to legacy behavior where slightly invalid XML was corrected
	            // SPL-84474
	            navXmlObj = XML.parse(xmlNavString.replace(/\&/g, "&amp;"));
	        }
	        var root = navXmlObj.find('nav');
	        var searchView = root.attr('search_view');
	        var appColor = root.attr('color');

	        seenViews = seenSearches = [];
	        app = appOverride || nav.entry.content.get('eai:appName');
	        views = viewsCollection;
	        rootEndpoint = rootPath || '';
	        searches = new Backbone.Collection(savedSearchCollection.filter(function(model) {
	            var appMatch = model.entry.acl.get('app') == app,
	                isGlobal = model.entry.acl.get('sharing') == 'global';
	            return appMatch || isGlobal;
	        }));
	        return {
	            nav: parseNavXml(root.children()).submenu,
	            searchView: searchView,
	            color: appColor
	        };
	    }

	    /**
	     * Entry point, kicking off the parsing.
	     *
	     * @param navsCollection {Collection} output of /data/ui/nav endpoint
	     * @param viewsCollection {Collection} output of /data/ui/views endpoint
	     * @param savedSearchCollection {Collection} output of /saved/searches endpoint
	     *
	     * @return {Array} of JSON objects or null if appname is undefined or nav coll is empty
	     */
	    function parseNavCollection(navsCollection, viewsCollection, savedSearchCollection, rootPath) {
	        var result = [];
	        rootEndpoint = rootPath || '';
	        seenViews = seenSearches = [];
	        if (!navsCollection || navsCollection.length == 0) {
	            return null;
	        }
	        navsCollection.each(function(nav){
	            result.push(
	                parseNavModel(nav,viewsCollection, savedSearchCollection)
	            );
	        });
	        return result;
	    }

	    return {
	        parseNavModel: parseNavModel,
	        parseNavCollection: parseNavCollection
	    };
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "util/color_utils":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * Util package for working with colors.
	 */
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("require/underscore")], __WEBPACK_AMD_DEFINE_RESULT__ = function(_) {

	    var hslColorFromRgbColor = function(rgbColor) {
	        /**
	         * convert from [r,g,b] to [h,s,l]
	         *  r,g,b: [0,255]
	         *  h: [0,360)
	         *  s: [0,100]
	         *  l: [0,100]
	         *  Uses algorithm as specified on Wikipedia http://en.wikipedia.org/wiki/HSL_and_HSV
	         */

	        var r = rgbColor[0];
	        var g = rgbColor[1];
	        var b = rgbColor[2];
	        var computedH = 0;
	        var computedS = 0;
	        var computedL = 0;

	        if (r === null || g === null || b === null ||
	            isNaN(r) || isNaN(g)|| isNaN(b) ) {
	            return null;
	        }

	        if (r < 0 || g < 0 || b < 0 ||
	            r > 255 || g > 255 || b > 255) {
	            return null;
	        }

	        r = r / 255;
	        g = g / 255;
	        b = b / 255;
	        var minRGB = Math.min(r, Math.min(g, b));
	        var maxRGB = Math.max(r, Math.max(g, b));
	        var chroma = maxRGB - minRGB;

	        var h_prime = 0;
	        if (chroma == 0) {
	            h_prime = 0;
	        }
	        else if (maxRGB == r) {
	            h_prime = ((g - b) / chroma) % 6;
	        } else if (maxRGB == g) {
	            h_prime = ((b - r) / chroma) + 2;
	        } else if (maxRGB == b) {
	            h_prime = ((r - g) / chroma) + 4;
	        }

	        var h = h_prime * 60;
	        while (h < 0)
	        {
	            h += 360;
	        }
	        while (h > 360)
	        {
	            h -= 360;
	        }

	        var l = 0.5 * (maxRGB + minRGB);

	        var s = 0;
	        if (chroma == 0) {
	            s = 0;
	        } else {
	            s = chroma / (1 - Math.abs(2 * l - 1));
	        }

	        if (s < 0) { s = 0; }
	        if (s > 1) { s = 1; }
	        if (l < 0) { l = 0; }
	        if (l > 1) { l = 1; }

	        return [h, s * 100, l * 100];
	    };

	    var rgbColorFromHslColor = function(hslColor) {
	        /**
	         * convert from [h,s,l] to [r,g,b]
	         *  r,g,b: [0,255]
	         *  h: [0,360)
	         *  s: [0,100]
	         *  l: [0,100]
	         *  Uses algorithm as specified on Wikipedia http://en.wikipedia.org/wiki/HSL_and_HSV
	         */
	        if (hslColor.length != 3) {
	            return null;
	        }

	        var h = hslColor[0],
	            s = hslColor[1],
	            l = hslColor[2];

	        s = s / 100;
	        l = l / 100;

	        while (h < 0)
	        {
	            h += 360;
	        }
	        while (h > 360)
	        {
	            h -= 360;
	        }

	        if (h < 0 || h > 360 ||
	            s < 0 || s > 1 ||
	            l < 0 || l > 1)
	        {
	            return null;
	        }

	        // chroma
	        var c = (1 - Math.abs(2 * l - 1)) * s;

	        // determine color components (sans lightness)
	        var h1 = h / 60;
	        var x = c * (1 - Math.abs((h1 % 2) - 1));
	        var r1 = 0,
	            g1 = 0,
	            b1 = 0;

	        if (h1 < 1) {
	            r1 = c;
	            g1 = x;
	        } else if (h1 < 2) {
	            r1 = x;
	            g1 = c;
	        } else if (h1 < 3) {
	            g1 = c;
	            b1 = x;
	        } else if (h1 < 4) {
	            g1 = x;
	            b1 = c;
	        } else if (h1 < 5) {
	            r1 = x;
	            b1 = c;
	        } else {
	            r1 = c;
	            b1 = x;
	        }

	        // add lightness component to get r,g,b
	        var m = l - 0.5 * c;
	        var r = r1 + m,
	            g = g1 + m,
	            b = b1 + m;

	        // return in [0,255] range
	        r *= 255;
	        g *= 255;
	        b *= 255;

	        return [r, g, b];
	    };

	    var rgbColorFromRgbString = function(rgbColorString) {
	        /**
	         * given "rgb(r,g,b)" converts to [r,g,b]
	         */

	        var rgbValueStrings = rgbColorString.match(/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/);
	        if (rgbValueStrings === null) {
	            return null;
	        }

	        var rgbColor = [parseInt(rgbValueStrings[1], 10),
	                        parseInt(rgbValueStrings[2], 10),
	                        parseInt(rgbValueStrings[3], 10)];

	        return rgbColor;
	    };

	    var rgbStringFromRgbColor = function(rgbColor) {
	        /**
	         * given [r,g,b] returns "rgb(r,g,b)"
	         *  r, g, b are all rounded to nearest integers
	         */
	        if (rgbColor.length != 3) {
	            return null;
	        }

	        var roundedRgbColor = _.map(rgbColor, Math.round);
	        var rgbString = "rgb(" + roundedRgbColor[0] + ", " + roundedRgbColor[1] + ", " + roundedRgbColor[2] + ")";
	        return rgbString;
	    };

	    var hslStringFromHslColor = function(hslColor) {
	        /**
	         * given [h,s,l] returns "hsl(h,s%,l%)"
	         *  h, s, l are all rounded to nearest integers
	         */
	        if (hslColor.length != 3) {
	            return null;
	        }
	        var roundedHslColor = _.map(hslColor, Math.round);
	        var hslString = "hsl(" + roundedHslColor[0] + ", " + roundedHslColor[1] + "%, " + roundedHslColor[2] + "%)";
	        return hslString;
	    };

	    var hslColorFromHslString = function(hslColorString) {
	        /**
	         * given "hsl(h,s%,l%)" returns [h,s,l]
	         */
	        var hslValueStrings = hslColorString.match(/^hsl\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)$/);
	        if (hslValueStrings === null) {
	            return null;
	        }

	        var hslColor = [parseInt(hslValueStrings[1], 10),
	                        parseInt(hslValueStrings[2], 10),
	                        parseInt(hslValueStrings[3], 10)];

	        return hslColor;
	    };

	    var rgbColorFromHexString = function(hexColorString) {
	        /**
	         * given "#RRGGBB" returns [r,g,b]
	         */
	        var normHexColorString = normalizeHexString(hexColorString);
	        var hexValueStrings = normHexColorString.match(/^#?([\dA-Fa-f]{2})([\dA-Fa-f]{2})([\dA-Fa-f]{2})$/);
	        if (hexValueStrings === null) {
	            return null;
	        }

	        var rgbColor = [parseInt(hexValueStrings[1], 16),
	                        parseInt(hexValueStrings[2], 16),
	                        parseInt(hexValueStrings[3], 16)];

	        return rgbColor;
	    };

	    var hexStringFromRgbColor = function(rgbColor) {
	        /**
	         * given [r,g,b] returns "#RRGGBB"
	         *  r,g,b rounded to nearest integers
	         */
	        if (rgbColor.length != 3) {
	            return null;
	        }

	        var roundedRgbColor = _.map(rgbColor, Math.round);
	        var hexComponents = _.map(roundedRgbColor, function(num) {
	            var hex = num.toString(16);
	            if (hex.length < 2) {
	                hex = "0" + hex;
	            }
	            return hex.toUpperCase();
	        });
	        var hexString = "#" + hexComponents[0] + hexComponents[1] + hexComponents[2];
	        return hexString;
	    };

	    var normalizeHexString = function(hexString) {
	        /**
	         * given "rrggbb", "RRGGBB", "#rrggbb", "#RRGGBB" returns "#RRGGBB"
	         */
	        var normString = '#' + hexString.replace('#','');
	        normString = normString.toUpperCase();
	        // check for #RGB, to convert to #RRGGBB
	        var hexValueStrings = normString.match(/^#?([\dA-F])([\dA-F])([\dA-F])$/);
	        if (hexValueStrings !== null) {
	            normString = '#' + hexValueStrings[1] + hexValueStrings[1] +
	                               hexValueStrings[2] + hexValueStrings[2] +
	                               hexValueStrings[3] + hexValueStrings[3];
	        }
	        return normString;
	    };

	    var modifyLuminosityOfHslColor = function(hslColor, luminosityMultiplier){
	        /**
	         * adjusts the luminosity of the specified hsl color by multiplying by luminosityMultiplier
	         *  l is clamped to within [0,100]
	         */
	        var modHslColor = hslColor.slice(0);

	        modHslColor[2] *= luminosityMultiplier;
	        if (modHslColor[2] > 100) {
	            modHslColor[2] = 100;
	        } else if (modHslColor[2] < 0) {
	            modHslColor[2] = 100;
	        }

	        return modHslColor;
	    };

	    var modifyLuminosityOfRgbColor = function(rgbColor, luminosityMultiplier){
	        /**
	         * adjusts the luminosity of the specified rgb color by luminosityMultiplier
	         *   1 - convert to hsl
	         *   2 - l *= luminosityMultiplier AND clamp(0,100)
	         *   3 - convert back to rgb
	         */
	        var hslColor = hslColorFromRgbColor(rgbColor);
	        var modHslColor = modifyLuminosityOfHslColor(hslColor, luminosityMultiplier);
	        var modRgbColor = rgbColorFromHslColor(modHslColor);
	        return modRgbColor;
	    };

	    var modifyLuminosityOfHexString = function(hexString, luminosityMultiplier){
	        /**
	         * adjusts the luminosity of the specified rgb color by luminosityMultiplier
	         *   1 - convert to rgb, then to hsl
	         *   2 - l *= luminosityMultiplier AND clamp(0,100)
	         *   3 - convert back to rgb, then to hex
	         */
	        var rgbColor = rgbColorFromHexString(hexString);
	        var modRgbColor = modifyLuminosityOfRgbColor(rgbColor, luminosityMultiplier);
	        var modHexString = hexStringFromRgbColor(modRgbColor);
	        return modHexString;
	    };

	    var generateGradientStylesWithMidColor = function(startColor, midColor, colorStop, endColor){
	        /**
	         * returns array of gradient style directives that cover set of browsers
	         * builds gradient from three colors, places the midColor at colorStop percent
	         *  startColor, midColor, endColor are css interpretable colors
	         *  colorStop is "stop%", e.g. "50%", "80%"
	         */
	        var gradients =
	            [
	                ' -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor)) ',
	                ' -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor) ',
	                ' -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor) ',
	                ' -o-linear-gradient(@startColor, @midColor @colorStop, @endColor) ',
	                ' linear-gradient(@startColor, @midColor @colorStop, @endColor) ',
	                // note: this uses filter instead of bg-image
	                " progid:DXImageTransform.Microsoft.gradient(startColorstr='@startColor', endColorstr='@endColor', GradientType=0) "  // IE9 and down, gets no color-stop at all for proper fallback
	            ];
	        for (var i=0;i<gradients.length;i++){
	            gradients[i] = gradients[i].replace(/@startColor/g, startColor);
	            gradients[i] = gradients[i].replace(/@midColor/g, midColor);
	            gradients[i] = gradients[i].replace(/@colorStop/g, colorStop);
	            gradients[i] = gradients[i].replace(/@endColor/g, endColor);
	        }
	        return gradients;
	    };

	    var generateGradientStyles = function(startColor, endColor){
	        /**
	         * returns array of gradient style directives that cover set of browsers
	         * builds gradient from two colors
	         *  startColor, endColor are css interpretable colors
	         */
	        var gradients =
	            [
	                ' -moz-linear-gradient(top, @startColor, @endColor) ', // FF 3.6+
	                ' -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor))', // Safari 4+, Chrome 2+
	                ' -webkit-linear-gradient(top, @startColor, @endColor) ', // Safari 5.1+, Chrome 10+
	                ' -o-linear-gradient(top, @startColor, @endColor) ', // Opera 11.10
	                ' linear-gradient(to bottom, @startColor, @endColor) ', // Standard, IE10
	                // note: this uses filter instead of bg-image
	                " progid:DXImageTransform.Microsoft.gradient(startColorstr='@startColor', endColorstr='@endColor', GradientType=0)  " // IE9 and down
	            ];
	        for (var i=0;i<gradients.length;i++){
	            gradients[i] = gradients[i].replace(/@startColor/g, startColor);
	            gradients[i] = gradients[i].replace(/@endColor/g, endColor);
	        }
	        return gradients;
	    };

	    // Prefixes hex value with provided symbols (e.g. '0x' or '#')
	    var replaceSymbols = function(string, symbols) {
	        if (!string) {
	            return '';
	        }
	        var strippedString = this.stripSymbols(string);
	        return symbols + strippedString;
	    };

	    // Removes '0x' and '#' prefixes to return just the color hex value itself
	    var stripSymbols = function(string) {
	        if (!string) {
	            return '';
	        }
	        if (string.substring(0,2) === '0x') {
	            return string.substring(2);
	        }
	        if (string.substring(0,1) === '#') {
	            return string.substring(1);
	        }
	        return string;
	    };

	    var interpolateColors = function(color1, color2, p) {
	        var r1 = (color1 >> 16) & 0xFF,
	            g1 = (color1 >> 8) & 0xFF,
	            b1 = color1 & 0xFF,

	            r2 = (color2 >> 16) & 0xFF,
	            g2 = (color2 >> 8) & 0xFF,
	            b2 = color2 & 0xFF,

	            rInterp = r1 + Math.round((r2 - r1) * p),
	            gInterp = g1 + Math.round((g2 - g1) * p),
	            bInterp = b1 + Math.round((b2 - b1) * p);

	        return ((rInterp << 16) | (gInterp << 8) | bInterp);
	    };

	    return {
	        hslColorFromRgbColor: hslColorFromRgbColor,
	        rgbColorFromHslColor: rgbColorFromHslColor,
	        hslColorFromHslString: hslColorFromHslString,
	        rgbColorFromRgbString: rgbColorFromRgbString,
	        hslStringFromHslColor: hslStringFromHslColor,
	        rgbStringFromRgbColor: rgbStringFromRgbColor,
	        rgbColorFromHexString: rgbColorFromHexString,
	        hexStringFromRgbColor: hexStringFromRgbColor,
	        normalizeHexString: normalizeHexString,
	        modifyLuminosityOfHslColor: modifyLuminosityOfHslColor,
	        modifyLuminosityOfRgbColor: modifyLuminosityOfRgbColor,
	        modifyLuminosityOfHexString: modifyLuminosityOfHexString,
	        generateGradientStylesWithMidColor: generateGradientStylesWithMidColor,
	        generateGradientStyles: generateGradientStyles,
	        replaceSymbols: replaceSymbols,
	        stripSymbols: stripSymbols,
	        interpolateColors: interpolateColors
	    };
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__("require/backbone"),
	    module,
	    __webpack_require__("views/shared/appbar/Master"),
	    __webpack_require__("views/shared/litebar/Logo"),
	    __webpack_require__("views/shared/litebar/UserMenu"),
	    __webpack_require__("views/shared/litebar/HelpMenu"),
	    __webpack_require__("views/shared/litebar/ProductMenu"),
	    __webpack_require__("views/shared/litebar/SideNav"),
	    __webpack_require__("views/shared/litebar/apps/Master"),
	    __webpack_require__("views/shared/Icon"),
	    __webpack_require__("models/services/AppLocal"),
	    __webpack_require__("models/services/data/UserPrefGeneral"),
	    __webpack_require__("models/services/configs/Web"),
	    __webpack_require__("collections/services/AppLocals"),
	    __webpack_require__("collections/services/Messages"),
	    __webpack_require__(375),
	    __webpack_require__("views/shared/litebar/Master.pcssm"),
	    __webpack_require__("helpers/Session"),
	    __webpack_require__("util/splunkd_utils"),
	    __webpack_require__("shim/splunk.util"),
	    __webpack_require__("util/keyboard"),
	    __webpack_require__("uri/route")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    Backbone,
	    module,
	    AppBarView,
	    Logo,
	    UserMenu,
	    HelpMenu,
	    ProductMenu,
	    SideNav,
	    AppDropdown,
	    IconView,
	    AppModel,
	    UserPref,
	    WebConfModel,
	    AppsCollection,
	    MessagesCollection,
	    templateMaster,
	    css,
	    Session,
	    splunkDUtils,
	    splunkUtil,
	    keyboardUtil,
	    route
	) {
	    var APP_LOGO_BLACKLIST = ['splunk_monitoring_console', 'splunk_management_console', 'splunk_instrumentation', 'system', 'dmc'];
	    var View = AppBarView.extend({
	        moduleId: module.id,
	        css: css,
	        template: templateMaster,
	        initialize: function(options) {
	            AppBarView.prototype.initialize.apply(this, arguments);
	            this.webConfDfd = $.Deferred();

	            this.children.hamburger = new IconView({icon: 'menu'});

	            this.deferreds = {};
	            this.deferreds.hamburger = $.Deferred();
	            this.deferreds.logo = $.Deferred();
	            this.deferreds.appNav = $.Deferred();
	            this.deferreds.helpMenu = $.Deferred();
	            this.deferreds.userMenu = $.Deferred();

	            this.collection.filteredApps = {};

	            this.children.sideNav = new SideNav({
	                model: {
	                    user: this.model.user,
	                    serverInfo: this.model.serverInfo,
	                    application: this.model.application,
	                    userPref: this.options.model.userPref,
	                    appLocal: this.model.appLocal,
	                    webConf: this.model.webConf,
	                    updateChecker: this.model.updateChecker
	                },
	                collection: this.collection
	            });

	            this.children.helpMenu = new HelpMenu({
	                model: this.model,
	                collection: this.collection
	            });

	            this.children.userMenu = new UserMenu({
	                collection: {
	                    currentContext: this.model.currentContext //this represents the current logged in user
	                },
	                model: {
	                    user: this.model.user,
	                    application: this.model.application,
	                    webConf: this.model.webConf,
	                    config: this.model.config,
	                    serverInfo: this.model.serverInfo
	                },
	                showIcon: true
	            });

	            if (this.model && this.model.webConf){
	                if (this.model.webConf.entry && this.model.webConf.entry.content &&
	                    this.model.webConf.entry.content.has('showProductMenu')){
	                    this.webConfDfd.resolve();
	                } else {
	                    this.model.webConf.on('sync ready', function() {
	                        this.webConfDfd.resolve();
	                    }, this);
	                }
	            }

	            Session.on('restart timeout', function() {
	                this.collection.messages.stopPolling();
	            }, this);
	            Session.on('start', function() {
	                this.collection.messages.startPolling();
	            }, this);

	            this.collection.messages.on('sync update', function() {
	                var messages = this.collection.messages.length,
	                    messageSelector = this.$('.message-notification'),
	                    licenseWillExpireMessage = this.collection.messages.find(function(message) {
	                        return message.entry.get('name') == 'LM_LICENSE_EXPIRATION_STATUS';
	                    });

	                if (licenseWillExpireMessage && !this.model.serverInfo.isLicenseStateExpired()) {
	                    messages--;
	                }

	                messageSelector.text(messages);
	                if (messages > 0) {
	                    messageSelector.show();
	                } else {
	                    messageSelector.hide();
	                }
	            }, this);

	            this.model.userPref.on('change', this.updateNotification, this);
	            this.collection.messages.on('change reset remove', this.updateNotification, this);
	            this.model.appNav.on('rendered', this.collapseAppNav, this);

	            this.navOpen = false;

	            var resizing = _.debounce(this.collapseAppNav.bind(this), 300);
	            $(window).resize(function() {
	                resizing();
	                this.$('[data-role=right-nav]').attr('data-action', 'resizing-nav-right');
	            }.bind(this));

	            this.children.appNav.on('addedToDocument', function() {
	               this.deferreds.appNav.resolve();
	            }, this);

	            this.children.helpMenu.on('addedToDocument', function() {
	               this.deferreds.helpMenu.resolve();
	            }, this);

	            this.children.userMenu.on('addedToDocument', function() {
	               this.deferreds.userMenu.resolve();
	            }, this);

	            this.children.hamburger.on('addedToDocument', function() {
	               this.deferreds.hamburger.resolve();
	            }, this);
	        },

	        events: {
	            'click [data-role=sidenav-toggle]': function(e) {
	                e.preventDefault();
	                this.openNav();
	            },
	            'click [data-role=sidenav-screen]': function(e) {
	                e.preventDefault();
	                this.closeNav();
	            },
	            'click [data-role=sidenav-toggle-active]': function(e) {
	                e.preventDefault();
	                this.closeNav();
	            }
	        },

	        openNav: function() {
	            this.children.sideNav.$el.css('left', 0);
	            $('body').attr('data-sidenav-state', 'open');
	            $('[data-role=sidenav-toggle]').attr('data-role', 'sidenav-toggle-active');
	            this.$('[data-role=sidenav-screen]').fadeIn(500);
	            this.children.sideNav.$('a:visible').attr('tabindex', '').first().focus();
	            this.$('[data-role="message-notification"]').fadeOut(500);
	            $(window).on('keydown', this.keyDown.bind(this));
	            this.navOpen = true;
	        },

	        closeNav: function() {
	            this.children.sideNav.$el.css('left', -300);
	            $('body').removeAttr('data-sidenav-state');
	            $('[data-role=sidenav-toggle-active]').attr('data-role', 'sidenav-toggle');
	            this.$('[data-role=sidenav-screen]').fadeOut(500);
	            this.children.sideNav.$('a:visible').attr('tabindex', '-1');
	            $('[data-role=sidenav-toggle]').focus();
	            $(window).off('keydown');
	            if (this.$('[data-role="message-notification"]').text() !== '0') {
	                this.$('[data-role="message-notification"]').fadeIn(500);
	            }
	            this.navOpen = false;
	        },

	        keyDown: function(e) {
	            if (e.which === keyboardUtil.KEYS.ESCAPE) {
	                e.preventDefault();
	                this.closeNav();
	            } else if (e.which === keyboardUtil.KEYS.TAB) {
	                e.preventDefault();
	                keyboardUtil.handleCircularTabbing(this.children.sideNav.$('[data-role=sidenav-body]'), e);
	            }
	        },

	        updateNotification: function() {
	            var messagesCount = this.collection.messages.length || 0,
	                $messageSelector = this.$('[data-role="message-notification"]'),
	                splunkMessageCount = this.children.sideNav.children.messages.numSplunkMessages || 0;

	            messagesCount = messagesCount + splunkMessageCount;
	            $messageSelector.text(messagesCount);
	            if (messagesCount > 0 && !this.navOpen) {
	                $messageSelector.show();
	            } else {
	                $messageSelector.hide();
	            }
	        },

	        renderLogo: function() {
	            this._getFilteredApps();
	            var appId = this._getAppId(),
	                appName = this._getAppName(appId),
	                appNameShort = (appName) ? appName.replace('Splunk Add-on for', '').replace('Splunk App for', '').trim() : '',
	                useLogo = this.collection.filteredApps.length <= 1;

	            this.children.logo = new Logo({
	                model: {
	                    application: this.model.application
	                },
	                appId: appId,
	                appName: appNameShort,
	                useLink: useLogo
	            });

	            if (!useLogo) {
	                // Match local apps with app whitelist
	                this.children.appDropdown = new AppDropdown({
	                    apps: this.collection.filteredApps,
	                    model: {
	                        application: this.model.application
	                    },
	                    label: this.children.logo,
	                    title: splunkUtil.sprintf('Splunk > %s', (appId == 'search') ? 'Light' : appNameShort)
	                });

	                this.children.appDropdown.on('addedToDocument', function() {
	                   this.deferreds.logo.resolve();
	                }, this);

	                this.children.appDropdown.render().replaceAll(this.$('[data-role=logo]'));
	            } else {
	                this.children.logo.on('addedToDocument', function() {
	                   this.deferreds.logo.resolve();
	                }, this);

	                this.children.logo.render().replaceAll(this.$('[data-role=logo]'));
	            }
	        },

	        _getNavWidthDiff: function(mainWidth) {
	            var halfMain = mainWidth/2;

	            return mainWidth - this._getNavWidths() || halfMain;
	        },

	        _getNavWidths: function() {
	            var hamburgerWidth = this.$('[data-role=sidenav-toggle]').outerWidth(),
	                brandWidth = this.$('[data-role=logo]').outerWidth(),
	                appMenuWidth = this.$('[data-role=app-menu]').outerWidth(),
	                rightNavWidth = this.$('[data-role=right-nav]').outerWidth() + 100; //compensates for more menu and app dropdown

	            return hamburgerWidth + brandWidth + appMenuWidth + rightNavWidth;
	        },

	        _getAppId: function() {
	            var appId = this.model.application.get('app') || 'search';
	            appId = (APP_LOGO_BLACKLIST.indexOf(appId) > -1) ? 'search' : appId;
	            return appId;
	        },

	        _getAppName: function(appId) {
	            var currentAppModel = this.collection.apps.find(function(app) {
	                    return app.entry.get('name') == appId;
	                }),
	                appName = (currentAppModel &&
	                                currentAppModel.entry.content.get('label'))
	                                ? currentAppModel.entry.content.get('label') : appId;
	            return appName;
	        },

	        _getFilteredApps: function() {
	            var appWhitelist = this.model.userPref.entry.content.get('app_list');

	            appWhitelist = (appWhitelist) ? appWhitelist.split(',') : ['search'];

	            this.collection.filteredApps = this.collection.apps.filter(function(app) {
	                var appName = app.entry.get('name');
	                return appWhitelist.indexOf(appName) > -1;
	            }.bind(this)).map(function(model, key, list) {
	                var app = {
	                    href: splunkUtil.make_url('/app/' + model.entry.get('name')),
	                    label: model.entry.content.get('label'),
	                    name: model.entry.get('name')
	                };
	                return app;
	            });
	        },

	        render: function() {
	            var html = this.compiledTemplate({
	                css: this.css
	            });

	            this.$el.html(html);

	            this.renderLogo();

	            this.children.hamburger.render().prependTo(this.$('[data-role=sidenav-toggle]'));
	            this.children.appNav.render().prependTo(this.$('[data-role=app-nav]'));
	            this.children.helpMenu.render().replaceAll(this.$('[data-role=help-menu]'));
	            this.children.userMenu.render().replaceAll(this.$('[data-role=user-menu]'));

	            this.$el.after(this.children.sideNav.render().el);
	            this.$el.append('<div class="' + this.css.sidenavScreen + '" data-role="sidenav-screen"></div>');

	            $.when(this.webConfDfd).done(function() {
	                var isCloud = this.model.serverInfo.isCloud(),
	                    showProductMenu = splunkUtil.normalizeBoolean(this.model.webConf.entry.content.get('showProductMenu'));

	                if (isCloud && showProductMenu) {
	                    this.children.productMenu = new ProductMenu({
	                        model: this.model,
	                        collection: this.collection
	                    });
	                    this.$('[data-role=product-menu]').replaceWith(this.children.productMenu.render().el);
	                } else {
	                    this.$('[data-role=product-menu]').remove();
	                }
	            }.bind(this));

	            // Setting tabindex to -1 on all links while side nav is closed
	            this.children.sideNav.$('a:visible').attr('tabindex', '-1');

	            $.when(this.deferreds.hamburger, this.deferreds.logo, this.deferreds.appNav, this.deferreds.helpMenu, this.deferreds.userMenu).then(function() {
	                this.collapseAppNav();
	            }.bind(this));

	            return this;
	        }
	    },
	    {
	        _getApp: function(options) {
	            var appName = options.model.application.get('app') || 'search';
	            return (APP_LOGO_BLACKLIST.indexOf(appName) > -1) ? 'search' : appName;
	        },

	        create: function(options) {
	            options = options || {};
	            options.collection = options.collection || {};
	            options.model = options.model || {};
	            if (options.useSessionStorageCache === true) {
	                this._createFromCache(options);
	            } else {
	                this._createDefault(options);
	            }

	            if (!options.model.userPref) {
	                options.model.userPref = new UserPref();
	                var userPrefDfd = options.model.userPref.fetch({data: {app:'user-prefs', owner: options.model.application.get('owner'), count:-1}});
	                $.when(userPrefDfd).then(function() {
	                    options.model.userPref.entry.content.trigger('ready');
	                });
	            }

	            var applicationDfd = $.Deferred();
	            if(!options.model.appLocal) {
	                options.model.appLocal = new AppModel();
	                applicationDfd.done(function() {
	                    if (this._getApp(options) !== 'system') {
	                        options.model.appLocal.fetch({
	                            url: splunkDUtils.fullpath(options.model.appLocal.url + "/" + encodeURIComponent('search')),
	                            data: {
	                                app: 'search',
	                                owner: options.model.application.get("owner")
	                            }
	                        });
	                    }
	                });
	            }

	            if (!options.collection.apps) {
	                options.collection.apps = new AppsCollection();
	                options.collection.apps.fetch({
	                    data: {
	                        sort_key: 'name',
	                        sort_dir: 'desc',
	                        app: '-' ,
	                        owner: options.model.application.get('owner'),
	                        search: 'visible=true AND disabled=0 AND name!=launcher',
	                        count:-1
	                    }
	                });
	            }

	            if (!options.collection.messages) {
	                options.collection.messages = new MessagesCollection();
	                options.collection.messages.fetchData.set({
	                    "sort_key" : "timeCreated_epochSecs",
	                    "sort_dir" : "desc"
	                });
	            }

	            if (!options.model.webConf) {
	                options.model.webConf = new WebConfModel({id: 'settings'});
	                options.model.webConf.fetch({
	                    success: function() {
	                        options.model.webConf.trigger('ready');
	                    }
	                });
	            } else {
	                options.model.webConf.trigger('ready');
	            }

	            return new View(options);
	        }
	    });
	    return View;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/Logo":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__("require/backbone"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/Icon"),
	    __webpack_require__("views/shared/litebar/Logo.pcssm"),
	    __webpack_require__("uri/route")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    Backbone,
	    module,
	    BaseView,
	    IconView,
	    css,
	    route
	) {
	    return BaseView.extend({
	        moduleId: module.id,
	        css: css,
	        initialize: function(options) {
	            BaseView.prototype.initialize.apply(this, arguments);

	            this.children.splunk = new IconView({icon: 'splunk'});
	            this.children.prompt = new IconView({icon: 'greaterRegistered'});
	            this.children.liteLogo = new IconView({icon: 'lite'});

	            var defaults = {
	                appName:    'search',
	                appId:      'search',
	                useLink:    false
	            };

	            _.defaults(this.options, defaults);
	        },

	        render: function() {
	            var root = this.model.application.get('root'),
	                locale = this.model.application.get('locale'),
	                owner = this.model.application.get('owner'),
	                html = this.compiledTemplate({
	                    homeLink: route.page(root, locale, this.options.appId),
	                    css: this.css,
	                    appName: this.options.appName,
	                    useLiteLogo: (this.options.appId == 'search'),
	                    useLink: this.options.useLink
	                });

	            this.$el.html(html);

	            // render branding
	            this.children.splunk.render().prependTo(this.$('[data-role=logo]'));
	            this.children.prompt.render().prependTo(this.$('[data-role=gt]'));
	            this.children.liteLogo.render().prependTo(this.$('[data-role=lite-logo]'));

	            return this;
	        },

	        template: '\
	            <% if(useLink) { %>\
	                <a class="<%-css.brand%>" href="<%- homeLink %>" title="splunk &gt; <%- _("listen to your data").t() %>" data-role="logo">\
	            <% } else { %>\
	                 <div class="<%-css.brand%>" data-role="logo">\
	            <% } %>\
	            <span class="<%=css.gt%>" data-role="gt"></span>\
	            <% if (useLiteLogo) { %>\
	                <span class="<%-css.subBrand%>" data-role="lite-logo"></span>\
	            <% } else { %>\
	                <span class="<%-css.appText%>" data-role="app-text"><%= appName %></span>\
	            <% } %>\
	            <% if(useLink) { %> </a> <% } else { %> </div> <% } %>\
	        '
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/Logo.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(355);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Logo.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Logo.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/splunkbar/apps/MenuContents":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        module,
	        __webpack_require__("views/Base"),
	        __webpack_require__("views/shared/delegates/StopScrollPropagation"),
	        __webpack_require__("shim/splunk.util"),
	        __webpack_require__(277),
	        __webpack_require__("views/shared/splunkbar/apps/MenuContents.pcssm"),
	        __webpack_require__("uri/route")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        module,
	        BaseView,
	        StopScrollPropagation,
	        splunk_util,
	        appsTemplate,
	        css,
	        route
	    ){
	        return BaseView.extend({
	            moduleId: module.id,
	            template: appsTemplate,
	            css: css,
	            initialize: function() {
	                this.haveIcons = false;
	                BaseView.prototype.initialize.apply(this, arguments);

	                if(this.options.activeMenu && this.options.activeMenu.name === 'app'){
	                    this.currentApp = this.model.application.get('app');
	                }
	                this.collection.apps.on('ready change reset', this.debouncedRender, this);
	                this.model.user.on('ready change', this.debouncedRender, this);
	                // handle the case when collection.apps is already set
	                if (this.collection.apps.length > 0) {
	                    this.debouncedRender();
	                }
	            },
	            render: function() {
	                this.haveIcons = false;
	                var that = this,
	                    app,
	                    curApp = null,
	                    apps = this.collection.apps.filter(function(app) {
	                        if (app.entry.content.has('show_in_nav')) {
	                            return app.entry.content.get('show_in_nav');
	                        } else {
	                            // SPL-124536 - Support the apps menu on Splunk < 6.3,
	                            // before the 'show_in_nav' option was made available.
	                            var appName = app.entry.get('name');
	                            return appName !== 'splunk_management_console' &&
	                                appName !== 'launcher';
	                        }
	                    }).map(function(model, key, list) {
	                        var appIcon = route.appIconAlt(
	                            that.model.application.get('root'),
	                            that.model.application.get('locale'),
	                            that.model.application.get('owner'),
	                            model.entry.get('name')
	                        );

	                        app = {
	                            href: splunk_util.make_url('/app/'+ model.entry.get('name')),
	                            label: model.entry.content.get('label'),
	                            name: model.entry.get('name'),
	                            icon: appIcon
	                        };
	                        if(model.entry.get('name') === that.currentApp) {
	                            curApp = app;
	                        }
	                        return app;
	                    }),

	                    html = this.compiledTemplate({
	                        apps: apps,
	                        currentApp: curApp,
	                        make_url: splunk_util.make_url,
	                        appsRemote_url: route.appsRemote(
	                                this.model.application.get('root'),
	                                this.model.application.get('locale'),
	                                this.model.application.get('app')),
	                        canViewRemoteApps: that.model.user.canViewRemoteApps(),
	                        css: css
	                    });

	                this.children.stopScrollPropagation = new StopScrollPropagation({el:this.$('[data-role=apps-list]')[0]});

	                this.$el.html(html);
	                return this;
	            },
	            setIcons: function() {
	                if(this.haveIcons){
	                    return;
	                }
	                this.haveIcons = true;
	                var icons = this.$el.find('[data-role="icon"]');
	                icons.each(function(index, ico){
	                    ico = $(ico);
	                    ico.attr('src', ico.attr('data-icosrc')).show();
	                });
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/UserMenu":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    module,
	    __webpack_require__("views/shared/splunkbar/user/Master")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    module,
	    UserMenu
	){
	    return UserMenu.extend({
	        moduleId: module.id,
	        updateName: function() {
	            this.toggle.set({label: ' ', title: this._getName()});
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/HelpMenu":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    module,
	    __webpack_require__("views/shared/splunkbar/help/Master"),
	    __webpack_require__("views/shared/tour/ProductTours/Master"),
	    __webpack_require__("views/shared/tour/ImageTour/Master"),
	    __webpack_require__("models/services/data/ui/Tour"),
	    __webpack_require__("uri/route"),
	    __webpack_require__("shim/splunk.util")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    module,
	    HelpMenu,
	    ProductToursModal,
	    ImageTour,
	    TourModel,
	    route,
	    splunk_utils
	){
	    return HelpMenu.extend({
	        moduleId: module.id,
	        initialize: function(){
	            this.options.showIcon = true;
	            this.options.hasTours = (this.collection && this.collection.tours) ? this.collection.tours.checkTours(this.model.user.serverInfo) : false;
	            HelpMenu.prototype.initialize.apply(this, arguments);
	            this.options.mode = 'menu';
	            this.options.toggleView.set({label: ' '});
	        },

	        events: $.extend({}, HelpMenu.prototype.events, {
	            'click [data-action=splunk-tours]': function(e) {
	                e.preventDefault();
	                this.renderToursModal();
	            }
	        }),

	        renderToursModal: function() {
	            this.children.toursModal = new ProductToursModal({
	                canAddData: this.model.user.canAddData(),
	                model: {
	                    application: this.model.application,
	                    serverInfo: this.model.user.serverInfo
	                },
	                onHiddenRemove: true
	            });

	            $('body').append(this.children.toursModal.render().el);
	            this.children.toursModal.show();

	            this.children.toursModal.on('product-tour', this.renderProductTour, this);
	        },

	        renderProductTour: function() {
	            var app = this.model.application.get('app'),
	                owner = this.model.application.get('owner'),
	                tourDfd = $.Deferred();

	            this.model.tour = new TourModel();
	            this.model.tour.bootstrap(tourDfd, app, owner, 'light-product-tour');

	            $.when(tourDfd).then(function() {
	                this.children.imageTour = new ImageTour({
	                    model: {
	                        application: this.model.application,
	                        tour: this.model.tour
	                    },
	                    backdrop: 'static',
	                    onHiddenRemove: true,
	                    liteTour: true
	                });

	                $('body').append(this.children.imageTour.render().el);
	                this.children.imageTour.show();
	            }.bind(this));
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/tour/ProductTours/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @extends {views.shared.ModalLocalClassNames}
	 * @description Creates a ModalView for ProductTours on the Splunk launcher homepage.
	 * Can be accessed in Splunk Lite from the Litebar > Help > Product Tours.
	 * Basically a wrapper for the Contents.js file located in the same directory.
	 * Sets title of the modal with this.options.title.
	 *
	 * @param {Object} options
	 * @param {Boolean} options.canAddData - user permission to add data, will allow the 'Add Data Tour'.
	 * @param {Model} options.model
	 * @param {Application} options.model.application
	 * @param {AppLocal} options.model.appLocal
	 * @param {ServerInfo} options.model.serverInfo
	 * @param {Collection} options.collection - OPTIONAL
	 */
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        module,
	        __webpack_require__("views/shared/ModalLocalClassNames"),
	        __webpack_require__("views/shared/tour/ProductTours/Contents"),
	        __webpack_require__("views/shared/tour/ProductTours/Master.pcssm")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        module,
	        ModalView,
	        ContentsView,
	        css
	    ) {
	        return ModalView.extend({
	            moduleId: module.id,
	            css: _.extend({}, ModalView.prototype.css, css),
	            initialize: function() {
	                this.options.bodyView = new ContentsView({
	                    canAddData: this.options.canAddData,
	                    collection: this.options.collection || {},
	                    model: {
	                        application: this.options.model.application,
	                        appLocal: this.options.model.appLocal,
	                        serverInfo: this.options.model.serverInfo
	                    }
	                });
	                this.options.onHiddenRemove = true;
	                this.options.title = _('Select a Tour').t();

	                // renders ImageTour once 'product-tour' heard from bodyView
	                this.listenTo(this.options.bodyView, 'product-tour', function() {
	                    this.hide();
	                    this.trigger('product-tour');
	                });

	                ModalView.prototype.initialize.apply(this, arguments);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/tour/ProductTours/Contents":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @extends {views.Base}
	 * @description Utilizing $.Deferred(), fetches info about respective tours.
	 * Returns BaseView with contents of the Product Tours Modal.
	 *
	 * @param {Object} options
	 * @param {Boolean} options.canAddData - user permission to add data, will allow the 'Add Data Tour'.
	 * @param {Model} options.model
	 * @param {Application} options.model.application
	 * @param {AppLocal} options.model.appLocal
	 * @param {ServerInfo} options.model.serverInfo
	 * @param {Collection} options.collection - OPTIONAL
	 */
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        module,
	        __webpack_require__("views/Base"),
	        __webpack_require__("views/shared/Icon"),
	        __webpack_require__("views/shared/ModalLocalClassNames"),
	        __webpack_require__("models/services/data/ui/Tour"),
	        __webpack_require__("collections/services/data/ui/Tours"),
	        __webpack_require__("uri/route"),
	        __webpack_require__("shim/splunk.util"),
	        __webpack_require__("views/shared/tour/ProductTours/Contents.pcssm")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        module,
	        BaseView,
	        IconView,
	        ModalView,
	        TourModel,
	        Tours,
	        route,
	        splunk_utils,
	        css
	    ) {
	        return BaseView.extend({
	            moduleId: module.id,
	            css: css,
	            className: ModalView.prototype.className,
	            initialize: function() {
	                BaseView.prototype.initialize.apply(this, arguments);

	                this.toursDfd = $.Deferred();
	                this.collection = this.collection || {};
	                this.isLite = this.model.serverInfo.isLite();

	                this.collection.tours = new Tours();
	                this.collection.tours.fetch({
	                    data: {
	                        app: this.model.application.get('app'),
	                        owner: this.model.application.get('owner'),
	                        count: -1
	                    },
	                    success: function(collection, response) {
	                        this.setTours();
	                        this.toursDfd.resolve();
	                    }.bind(this)
	                });

	                // IconViews for the links corresponding to each respective tour
	                this.children.icons = {
	                    lightIcon: new IconView({
	                        icon: 'greater',
	                        size: 3,
	                        id: 'light'
	                    }),
	                    adddataIcon: new IconView({
	                        icon: 'dataInput',
	                        size: 3,
	                        id: 'add-data'
	                    }),
	                    searchIcon: new IconView({
	                        icon: 'search',
	                        size: 3,
	                        id: 'search'
	                    }),
	                    dashboardsIcon: new IconView({
	                        icon: 'dashboard',
	                        size: 3,
	                        id: 'dashboards'
	                    })
	                };
	            },

	            events: {
	                'click [data-role=light-tour]': function(e) {
	                    e.preventDefault();
	                    this.trigger('product-tour');
	                }
	            },

	            setTours: function() {
	                var productType = this.model.serverInfo.getProductType(),
	                    instanceType = this.model.serverInfo.getInstanceType(),
	                    tourIdentifier = productType + ((instanceType) ? ':' + instanceType : ''),
	                    searchTourName = 'search-tour:' + tourIdentifier,
	                    adddataTourName = 'adddata-tour:' + tourIdentifier,
	                    dashboardsTourName = 'dashboards-tour:' + tourIdentifier,
	                    lightProductTourName = 'light-product-tour';

	                this.searchTour = this.collection.tours.getTourModel(searchTourName);
	                this.adddataTour = this.collection.tours.getTourModel(adddataTourName);
	                this.dashboardsTour = this.collection.tours.getTourModel(dashboardsTourName);
	                this.lightProductTour = this.collection.tours.getTourModel(lightProductTourName);

	                if (this.searchTour) {
	                    this.searchLink = route.page(
	                        this.model.application.get('root'),
	                        this.model.application.get('locale'),
	                        'search',
	                        this.searchTour.getTourPage(),
	                        { data: {tour: searchTourName} }
	                    );
	                }

	                if (this.adddataTour) {
	                    this.adddataLink = route.manager(
	                        this.model.application.get('root'),
	                        this.model.application.get('locale'),
	                        'search',
	                        this.adddataTour.getTourPage(),
	                        {data: {tour: adddataTourName}}
	                    );
	                }

	                if (this.dashboardsTour) {
	                    this.dashboardsLink = route.page(
	                        this.model.application.get('root'),
	                        this.model.application.get('locale'),
	                        'search',
	                        this.dashboardsTour.getTourPage(),
	                        {data: {tour: dashboardsTourName}}
	                    );
	                }
	            },

	            render: function() {
	                $.when(this.toursDfd).then(function() {
	                    var html = this.compiledTemplate({
	                        css: this.css,
	                        canAddData: this.options.canAddData || false,
	                        isLite: this.isLite,
	                        searchTour: this.searchTour,
	                        adddataTour: this.adddataTour,
	                        dashboardsTour: this.dashboardsTour,
	                        lightProductTour: this.lightProductTour,
	                        adddataLink: this.adddataLink,
	                        searchLink: this.searchLink,
	                        dashboardsLink: this.dashboardsLink
	                    });

	                    this.$el.html(html);

	                    // takes each IconView and inserts the icon in the right place
	                    // (e.g. right after the a tag with data-icon="adddataIcon")
	                    // depends heavily on the property names in this.children.icons
	                    _.forEach(this.children.icons, function(iconView, iconViewName) {
	                        iconView.render().appendTo(this.$('[data-icon=' + iconView.options.id + '-icon]'));
	                    });
	                }.bind(this));

	                return this;
	            },

	            template: '\
	                <div class="<%= css.toursLinks %>">\
	                    <% if (isLite && lightProductTour) { %>\
	                        <a href="#" class="<%= css.tourLink %>" data-role="light-tour">\
	                            <span class="<%= css.icon %>" data-icon="light-icon"></span>\
	                            <br /> <%= _("Splunk Light Tour").t() %>\
	                        </a>\
	                    <% } %>\
	                    <% if (canAddData && adddataTour) { %>\
	                        <a href="<%= adddataLink %>" class="<%= css.tourLink %>">\
	                            <span class="<%= css.icon %>" data-icon="add-data-icon"></span>\
	                            <br /> <%= _("Add Data Tour").t() %>\
	                        </a>\
	                    <% } %>\
	                    <% if (searchTour) { %>\
	                        <a href="<%= searchLink %>" class="<%= css.tourLink %>">\
	                            <span class="<%= css.icon %>" data-icon="search-icon"></span>\
	                            <br /> <%= _("Search Tour").t() %>\
	                        </a>\
	                    <% } %>\
	                    <% if (dashboardsTour) { %>\
	                        <a href="<%= dashboardsLink %>" class="<%= css.tourLink %>">\
	                            <span class="<%= css.icon %>" data-icon="dashboards-icon"></span>\
	                            <br /> <%= _("Dashboards Tour").t() %>\
	                        </a>\
	                    <% } %>\
	                </div>\
	            '
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/services/data/ui/Tour":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__("models/SplunkDBase"),
	    __webpack_require__("shim/splunk.util"),
	    __webpack_require__("util/splunkd_utils"),
	    __webpack_require__("util/htmlcleaner")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    SplunkDBase,
	    splunk_util,
	    splunkd_utils,
	    HtmlCleaner
	) {
	    var Tour = SplunkDBase.extend({
	        url: 'data/ui/ui-tour',
	        skipLabel: _('Skip tour').t(),
	        doneLabel: _('Try it now').t(),

	        bootstrap: function(tourDeferred, app, owner, tourName, autoTour) {
	            var tourUrl = splunkd_utils.fullpath(
	                    this.url + "/" + encodeURIComponent(tourName),
	                    {
	                        app: app,
	                        owner: owner
	                    }
	                 ),
	                 proxyTourModel = new Tour();

	            proxyTourModel.fetch({
	                url: tourUrl,
	                success: function(model, response) {
	                    app = (app === splunkd_utils.SYSTEM) ? 'search' : app;
	                    this.fetch({
	                        data: {
	                            app: app,
	                            owner: owner
	                        },
	                        success: function(model, response) {
	                            var data = $.extend(true, {name: tourName, autoTour: autoTour}, proxyTourModel.entry.content.toJSON());
	                            this.entry.content.set(data);
	                            this.entry.set('name', tourName);
	                            tourDeferred.resolve();
	                        }.bind(this),
	                        error: function(model, response) {
	                            tourDeferred.resolve();
	                        }.bind(this)
	                    });
	                 }.bind(this),
	                 error: function(model, response) {
	                     tourDeferred.resolve();
	                 }.bind(this)
	            });
	        },

	        getTourApp: function() {
	            // returns the tour's app origin
	            return this.entry.acl.get('app');
	        },

	        getName: function() {
	            return this.entry.get("name") || '';
	        },

	        getLabel: function() {
	            return this.entry.content.get('label') || '';
	        },

	        getSkipLabel: function() {
	            return this.entry.content.get('skipText') || this.skipLabel;
	        },

	        getDoneLabel: function() {
	            return this.entry.content.get('doneText');
	        },

	        getDoneURL: function() {
	            return this.entry.content.get('doneURL');
	        },

	        getTourType: function() {
	            return this.entry.content.get('type') || '';
	        },

	        isAutoTour: function() {
	            return this.entry.content.get('autoTour');
	        },

	        forceTour: function() {
	            return this.entry.content.has('forceTour') ? splunk_util.normalizeBoolean(this.entry.content.get('forceTour')) : false;
	        },

	        viewed: function() {
	            return splunk_util.normalizeBoolean(this.entry.content.get('viewed'));
	        },

	        isDisabled: function() {
	            return splunk_util.normalizeBoolean(this.entry.content.get('disabled'));
	        },

	        useTour: function() {
	            return this.entry.content.get('useTour');
	        },

	        getInfo: function() {
	            return this.entry.content.get('info') || '';
	        },

	        getUri: function(includeTourName) {
	            var link = undefined;
	            if (this.entry.content.has("uri")) {
	                link = this.entry.content.get("uri");

	                if (includeTourName) {
	                    var name = this.getName();
	                    if (name) {
	                        //check to see if link already has query args
	                        if (link.indexOf("?") == -1) {
	                            link = link + "?tour=" + name;
	                        } else {
	                            link = link + "&tour=" + name;
	                        }
	                    }   
	                }
	            }    
	            return link;
	        },

	        getLink: function(linkType, collection) {
	            var linkedModel = this.getLinkedModel(linkType, collection);
	            if (linkedModel) {
	                return linkedModel.getUri(true);
	            }
	            return null;
	        },

	        getLinkedModel: function(linkType, collection) {
	            var linkedModel;

	            if (!(linkType === 'next' || linkType === 'previous')) {
	                return null;
	            }

	            if (this.entry.content.has(linkType) && collection) {
	                var linkTourName = this.entry.content.get(linkType);
	                linkedModel = collection.getTourModel(linkTourName);
	            }

	            return linkedModel;
	        },

	        getNextLink: function(collection) {
	            return this.getLink('next', collection);
	        },

	        getPreviousLink: function(collection) {
	            return this.getLink('previous', collection);
	        },

	        getExitLink: function() {
	            return this.entry.content.get('exitLink') || '/';
	        },

	        endTour: function() {
	            this.trigger("endTour");
	        },

	        // Image Tour
	        isImgTour: function() {
	            return splunk_util.normalizeBoolean(this.getTourType() == 'image');
	        },

	        getImageContext: function() {
	            return this.entry.content.get('context');
	        },

	        getImgPath: function() {
	            return this.entry.content.get('imgPath');
	        },

	        getImages: function() {
	            var images = [],
	                imageTotal = this.getImageTotal();

	            for (var i = 1; i < imageTotal + 1; i++) {
	                var image = this.getImageName(i);
	                images.push(image);
	            }

	            return images;
	        },

	        getImageCaptions: function() {
	            var captions = [],
	                imageTotal = this.getImageTotal();

	            for (var i = 1; i < imageTotal + 1; i++) {
	                var imageCaption = (this.getImageCaption(i)) ? HtmlCleaner.clean('<span>' + this.getImageCaption(i) + '</span>') : ' ';
	                captions.push(imageCaption);
	            }

	            return captions;
	        },

	        getImageTotal: function() {
	            var maxImgs = 30,
	                curImg = 0;

	            for (var i = 1; i < maxImgs; i++) {
	                var hasImg = this.entry.content.has('imageName' + i);
	                if (hasImg) {
	                    curImg++;
	                } else {
	                    break;
	                }
	            }

	            return curImg;
	        },

	        getImageName: function(imgNum) {
	            return this.entry.content.get('imageName' + imgNum);
	        },

	        getImageCaption: function(imgNum) {
	            var caption = this.entry.content.get('imageCaption' + imgNum);
	            return (caption) ? _(caption).t() : '';
	        },

	        getImageOrder: function(imgNum) {
	            return this.entry.content.get('imageOrder' + imgNum);
	        },

	        getImageData: function(imgNum) {
	            return this.entry.content.get('imageData' + imgNum);
	        },

	        // Interactive Tour
	        isInteractive: function() {
	            return splunk_util.normalizeBoolean(this.getTourType() == 'interactive');
	        },

	        getNextTour: function() {
	            return this.entry.content.get('nextTour');
	        },

	        getTourPage: function() {
	            return this.entry.content.get('tourPage') || '';
	        },

	        isManagerPage: function() {
	            return splunk_util.normalizeBoolean(this.entry.content.get('managerPage'));
	        },

	        getTourURLData: function() {
	            return this.entry.content.get('urlData');
	        },

	        getIntroText: function() {
	            var introText = (this.entry.content.get('intro')) ? HtmlCleaner.clean('<span>' + _(this.entry.content.get('intro')).t() + '</span>') : '';
	            return introText;
	        },

	        getNumSteps: function() {
	            var maxSteps = 50,
	                curStep = 0;

	            for (var i = 1; i < maxSteps; i++) {
	                var hasStep = this.entry.content.has('stepText' + i);
	                if (hasStep) {
	                    curStep++;
	                } else {
	                    break;
	                }
	            }

	            return curStep;
	        },

	        getSteps: function() {
	            var steps = [],
	                numSteps = this.getNumSteps();

	            if (numSteps > 0) {
	                for (var i = 1; i < numSteps + 1; i++) {
	                    if (this.entry.content.has('stepText' + i)) {
	                        var stepText = HtmlCleaner.clean('<span>' + _(this.entry.content.get('stepText' + i)).t() + '</span>'),
	                            stepEl = this.entry.content.get('stepElement' + i) || null,
	                            stepPos = this.entry.content.get('stepPosition' + i) || '',
	                            stepCallbackEvent = this.entry.content.get('stepClickEvent' + i) || null,
	                            stepCallbackEventEl = this.entry.content.get('stepClickElement' + i) || null,
	                            stepCallback = {};

	                        if (stepCallbackEvent || stepCallbackEventEl) {
	                            stepCallback = {
	                                eventEl: stepCallbackEventEl,
	                                eventType: stepCallbackEvent
	                            };
	                        }

	                        steps.push({element: stepEl, intro: stepText, position: stepPos, callback: stepCallback});
	                    } else {
	                        break;
	                    }
	                }
	            }

	            return steps;
	        },

	        isLightTour: function() {
	            return splunk_util.normalizeBoolean(this.getName() == 'light-product-tour');
	        },

	        isValidTour: function() {
	            if (this.isDisabled()) {
	                return false;
	            } else if (this.isAutoTour()) {
	                return !this.viewed();
	            }

	            return true;
	        }
	    });
	    return Tour;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "collections/services/data/ui/Tours":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/services/data/ui/Tour"), 
	        __webpack_require__("collections/SplunkDsBase")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, Model, CollectionBase) {
	        return CollectionBase.extend({
	            url: 'data/ui/ui-tour',
	            model: Model,
	        
	            getTourModel: function(tourName) {
	                if (this.length == 0 || this.models.length == 0) {
	                    return undefined;
	                }

	                var model = this.find(function(modelCandidate) {
	                        return (modelCandidate.getName() === tourName);
	                    }),
	                    useTour = (model && model.useTour()) ? model.useTour() : false;

	                // check for linked tour
	                if (useTour) {
	                    // preventing an infinite loop of linking tours
	                    if (useTour !== tourName && useTour !== this.previousTour) {
	                        this.previousTour = tourName;
	                        return this.getTourModel(useTour);
	                    }
	                }

	                if (model && model.isDisabled()) {
	                    return null;
	                }

	                return model;
	            },

	            checkTours: function(serverInfo) {
	                if (serverInfo) {
	                    var productType = serverInfo.getProductType(),
	                        instanceType = serverInfo.getInstanceType(),
	                        isLite = serverInfo.isLite(),
	                        tourIdentifier = productType + ((instanceType) ? ':' + instanceType : ''),
	                        searchTour = this.getTourModel('search-tour:' + tourIdentifier),
	                        adddataTour = this.getTourModel('adddata-tour:' + tourIdentifier),
	                        dashboardsTour = this.getTourModel('dashboards-tour:' + tourIdentifier),
	                        liteTour = this.getTourModel('light-product-tour');

	                    if (searchTour || adddataTour || dashboardsTour) {
	                        return true;
	                    }

	                    if (isLite && liteTour) {
	                        return true;
	                    }

	                    return false;
	                }

	                return false;
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/tour/ProductTours/Contents.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(356);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Contents.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Contents.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/delegates/StopScrollPropagation":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 *   views/shared/delegates/StopScrollPropagation
	 *
	 *   Desc:
	 *     This class prevents the user from scrolling the page when scrolling a div.

	 *   @param {Object} (Optional) options An optional object literal having one settings.
	 *
	 *    Usage:
	 *       var p = new StopScrollPropagation({options})
	 *
	 *    Options:
	 *        el (required): The event delegate.
	 *        selector: jQuery selector for the scrolling elements. If not provided, all mousewheel events in the el will not propagate.
	 *
	 */


	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("shim/jquery"), __webpack_require__("require/underscore"), __webpack_require__("views/shared/delegates/Base")], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, DelegateBase) {
	    return DelegateBase.extend({
	        initialize: function(){
	            var defaults = {
	                selector: ""
	            };
	            _.defaults(this.options, defaults);

	            this.events = {};
	            this.events["mousewheel " + this.options.selector] = "mousewheel";
	            this.events["DOMMouseScroll " + this.options.selector] = "mousewheel";
	            this.delegateEvents(this.events);
	        },
	        mousewheel: function (e) {
	            var delta = -e.originalEvent.wheelDelta || e.originalEvent.detail* 20;
	            e.currentTarget.scrollTop += delta;
	            e.stopPropagation();
	            e.preventDefault();
	        }

	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/tour/ProductTours/Master.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(357);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "util/console_dev":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function(){
	    function bind(fn, context) {
	        return function(){ fn.apply(context, arguments);  };
	    }
	    var orig = window.console, console = orig,
	        CONSOLE_METHODS = ['log','trace','error','warn', 'info', 'debug'],
	        EMPTY = function(){},i;
	    try {
	        console.DEBUG_ENABLED = true;
	    } catch(e) {
	        console = { DEBUG_ENABLED: true };
	    }
	    for (i = 0; i < CONSOLE_METHODS.length; i++) {
	        var fn = CONSOLE_METHODS[i];
	        if(typeof console[fn] !== 'function') {
	            if(orig !== undefined && typeof orig[fn] == 'function') {
	                console[fn] = bind(orig[fn], orig);
	            } else {
	                console[fn] = EMPTY;
	            }
	        }
	    }
	    return console;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/tour/ImageTour/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @extends {views.shared.ModalLocalClassNames}
	 * @description Creates a ModalView for an ImageTour of a particular feature.
	 * Has carousel functionalities with autoplay and slide animations implemented.
	 *
	 * @param {Object} options
	 * @param {Model} options.model
	 * @param {Application} options.model.application
	 */
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        module,
	        __webpack_require__("views/shared/ModalLocalClassNames"),
	        __webpack_require__("views/shared/tour/ImageTour/Contents"),
	        __webpack_require__("views/shared/tour/ImageTour/Master.pcssm")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        module,
	        ModalView,
	        ContentsView,
	        css
	    ) {
	        return ModalView.extend({
	            moduleId: module.id,
	            css: _.extend({}, ModalView.prototype.css, css),
	            initialize: function() {
	                this.options.bodyView = new ContentsView({
	                    model: this.options.model
	                });
	                this.options.bodyPadded = false;
	                this.options.headerView = null;
	                this.options.showCloseButton = false;
	                this.options.onHiddenRemove = true;

	                // listens to bodyView to trigger hiding the modal
	                this.listenTo(this.options.bodyView, 'hide', function() {
	                    this.hide();
	                });
	                this.listenTo(this.options.bodyView, 'focus', function() {
	                    this.focus();
	                });

	                ModalView.prototype.initialize.apply(this, arguments);
	            },

	            focus: function() {
	                this.$el.focus();
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/tour/ImageTour/Contents":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        module,
	        __webpack_require__("views/Base"),
	        __webpack_require__("views/shared/Button"),
	        __webpack_require__("views/shared/ModalLocalClassNames"),
	        __webpack_require__("models/services/data/ui/Tour"),
	        __webpack_require__(358),
	        __webpack_require__("shim/splunk.util"),
	        __webpack_require__("uri/route"),
	        __webpack_require__("views/shared/tour/ImageTour/Contents.pcssm")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        backbone,
	        module,
	        BaseView,
	        ButtonView,
	        ModalView,
	        TourModel,
	        TourTemplate,
	        splunk_util,
	        route,
	        css
	    ) {
	        return BaseView.extend({
	            moduleId: module.id,
	            className: [ ModalView.prototype.className, css.tourModal ].join(' '),
	            template: TourTemplate,
	            css: css,
	            initialize: function() {
	                BaseView.prototype.initialize.apply(this, arguments);

	                this.imgCheck = $.Deferred();
	                this.nextTourCheck = $.Deferred();
	                this.root = this.model.application.get('root');
	                this.locale = this.model.application.get('locale');
	                this.liteTour = this.model.tour.entry.get('name') === 'light-product-tour';
	                this.doneLabel = this.model.tour.getDoneLabel();

	                this.assetsUrl = splunk_util.make_url('/static/img/tour/assets');

	                this.tourId = this.cid;
	                this.images = this.model.tour.getImages();
	                // add css modules class to retrieved captions
	                this.captions = _.map(this.model.tour.getImageCaptions(), function(caption) {
	                    var captionEl = $($.parseHTML(caption));
	                    captionEl.find('a').addClass(this.css.gutterLink);
	                    return captionEl.prop('outerHTML');
	                }.bind(this));
	                this.nextTour = this.model.tour.getNextTour();
	                this.imageContext = this.model.tour.getImageContext();

	                this.localPathString = '';

	                if (this.imageContext && this.imageContext != 'system') {
	                    this.localPathString = '/app/' + this.imageContext;
	                }

	                this.imageRoot = splunk_util.make_url('static' + this.localPathString + '/img/');

	                this.imgUrl = this.imageRoot + ((this.model.tour) ? this.model.tour.getImgPath() : this.options.imgPath);
	                this.imgUrlLocalized = this.imgUrl + '/' + this.locale;
	                this.testImg = this.imgUrlLocalized + '/' + this.images[0];

	                if (!this.doneLabel) {
	                    this.children.tryItNowButton = new ButtonView({
	                        label: this.model.tour.doneLabel,
	                        action: 'tour-done',
	                        style: 'primary'
	                    });
	                }

	                // for locking this.slide() during an animation
	                this.isAnimating = false;

	                // Check for localized version of image tour.
	                $('<img src="' + this.testImg + '" />')
	                .load(function() {
	                    this.imgCheck.resolve();
	                }.bind(this))
	                .error(function() {
	                    this.imgUrlLocalized = this.imgUrl;
	                    this.imgCheck.resolve();
	                }.bind(this));

	                if (this.nextTour) {
	                    this.setNextTour();
	                } else {
	                    this.nextTourCheck.resolve();
	                }

	                if (!this.model.tour.viewed()) {
	                    this.setViewed();
	                }

	                // places left/right keyup listener for carousel navigation
	                $('body').on('keyup.image-tour', function(e) {
	                    if (e.keyCode == 39) {
	                        this.advance();
	                    } else if (e.keyCode == 37) {
	                        this.$('[data-slide=prev]:visible').click();
	                    }
	                }.bind(this));
	            },

	            events: $.extend({}, ModalView.prototype.events, {
	                'click [data-action=skip-tour]': function(e) {
	                    e.preventDefault();
	                    this.hideContents();
	                },

	                'click [data-action=tour-done]': function(e) {
	                    e.preventDefault();

	                    var doneURL = this.model.tour.getDoneURL();
	                    if (doneURL) {
	                        window.location = splunk_util.make_url(doneURL);
	                    } else {
	                        this.hideContents();
	                    }
	                },

	                'click [data-active=true] img': function() {
	                    this.advance();
	                },

	                'click [data-action=next-tour]': function(e) {
	                    e.preventDefault();
	                    window.location = this.nextTourURL;
	                },

	                'click [data-slide=next]': function(e) {
	                    e.preventDefault();
	                    this.slide(this.getActiveIndex() + 1);
	                },

	                'click [data-slide=prev]': function(e) {
	                    e.preventDefault();
	                    this.slide(this.getActiveIndex() - 1);
	                },

	                'click [data-slide-to]': function(e) {
	                    // when you click on indicator, reads 'data-slide-to' index
	                    e.preventDefault();
	                    this.slide(Number.parseInt($(e.target).attr('data-slide-to')));
	                }
	            }),

	            hideContents: function() {
	                $('body').off('keyup.image-tour');
	                this.trigger('hide');
	            },

	            advance: function() {
	                // for ease of 'this' resolution for the carousel autoplay
	                this.$('[data-slide=next]:visible').click();
	            },

	            getActiveIndex: function() {
	                this.active = this.$('[data-active=true]');
	                this.items = this.active.parent().children();
	                return this.items.index(this.active);
	            },

	            // takes in a 'next' position and handles going there from the current position
	            slide: function(next) {
	                var activeIndex = this.getActiveIndex();

	                // select and reset data-active=true image and indicator element
	                var activeImage = this.$('[data-carousel=items] > [data-active=true]');
	                var activeIndicator = this.$('[data-carousel=indicators] > [data-active=true]');
	                activeImage.removeAttr('data-active');
	                activeIndicator.removeAttr('data-active');

	                // select and update all image items and indicator elements
	                var items = this.$('[data-carousel=items]').children();
	                var nextImage = items.eq(next);
	                var nextIndicator = this.$('[data-carousel=indicators]').children().eq(next);
	                nextImage.attr('data-active', 'true');
	                nextIndicator.attr('data-active', 'true');

	                // handles the toggling of buttons and the try-it-now button
	                this.$('[data-slide=prev]').show();
	                this.$('[data-slide=next]').show();
	                this.$('[data-action=skip-tour]').show();
	                this.$('[data-action=next-tour]').hide();
	                this.$('[data-action=tour-done]').hide();
	                if (items.eq(0).is('[data-active]') && activeIndex !== 0) {
	                    this.$('[data-slide=prev]').hide();
	                    this.trigger('focus');
	                } else if (items.eq(-1).is('[data-active]') && activeIndex !== items.length-1) {
	                    this.$('[data-slide=next]').hide();
	                    this.$('[data-action=tour-done]').show();
	                    this.$('[data-action=skip-tour]').hide();
	                    if (this.nextTour) {
	                        this.$('[data-action=next-tour]').show();
	                    }
	                    this.trigger('focus');
	                }
	            },

	            setNextTour: function() {
	                var app = this.model.application.get('app'),
	                    owner = this.model.application.get('owner'),
	                    nextTour = this.nextTour,
	                    tourDfd = $.Deferred(),
	                    linkRender = route.page,
	                    page, data, url, label;

	                this.model.nextTour = new TourModel();
	                this.model.nextTour.bootstrap(tourDfd, app, owner, nextTour);

	                $.when(tourDfd).then(function() {
	                    page = this.model.nextTour.getTourPage();
	                    data = splunk_util.queryStringToProp(this.model.nextTour.getTourURLData() || '');
	                    label = _(this.model.nextTour.getLabel()).t() || _('next tour').t();

	                    data.tour = nextTour;

	                    if (this.model.nextTour.isManagerPage()) {
	                        linkRender = route.manager;
	                    }

	                    url = linkRender(
	                        this.model.application.get('root'),
	                        this.model.application.get('locale'),
	                        this.model.application.get('app'),
	                        page,
	                        { data: data }
	                    );

	                    this.nextTourLabel = label;
	                    this.nextTourURL = url;
	                    this.continueLabel = splunk_util.sprintf('Continue to %s', this.nextTourLabel);
	                    this.nextTourCheck.resolve();
	                }.bind(this));
	            },

	            setViewed: function() {
	                this.model.tour.entry.content.set('viewed', true);
	                this.model.tour.trigger('viewed');
	            },

	            render: function() {
	                $.when(this.imgCheck, this.nextTourCheck).then(function() {

	                    this.$el.html(this.compiledTemplate({
	                        css: this.css,
	                        images: this.images,
	                        imgUrl: this.imgUrl,
	                        imgUrlLocalized: this.imgUrlLocalized,
	                        assetsUrl: this.assetsUrl,
	                        captions: this.captions,
	                        liteTour: this.liteTour,
	                        imageTourId: this.tourId,
	                        nextTourLabel: this.nextTourLabel,
	                        skipTourLabel: this.model.tour.getSkipLabel(),
	                        continueLabel: this.continueLabel,
	                        doneLabel: this.doneLabel
	                    }));

	                    if (this.children.tryItNowButton) {
	                        this.children.tryItNowButton.render().insertAfter($('[data-slide=next]'));
	                        this.children.tryItNowButton.$el.addClass(css.tryItNow);
	                    }
	                }.bind(this));

	                return this;
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "shim/requirejs":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__(1),
	    __webpack_require__(4),
	    __webpack_require__("util/console"),
	    __webpack_require__("shim/splunk.util"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__(9),
	    __webpack_require__("util/env")], __WEBPACK_AMD_DEFINE_RESULT__ = function(nada, blada, console, splunkUtil, _, coreAliases, env) {
	    coreAliases = coreAliases.resolve.alias;
	    var requirejsRequire = window.requirejs;
	    var requirejsDefine = window.define;
	     /* globals __webpack_require__: false */
	    var webpackModules = __webpack_require__.c;

	    // This is a 'Set' of the webpack modules that have already been exposed to
	    // requirejs.
	    var requirejsModulesLoaded = {};

	    // This is a 'Set' of modules that are considered public and ok to require.
	    // All other core modules will show a warning when being required.
	    // Note: It is prepopulated with the modules that can be auto-injected by
	    // requirejs.
	    var whiteList = {
	        require: true,
	        exports: true,
	        module: true
	    };

	    var url = splunkUtil.make_url('static/js');
	    requirejsRequire.config({
	        baseUrl: url
	    });

	    if (env.PRODUCTION) {
	        requirejsRequire.config({
	            waitSeconds: 0
	        });
	    }

	    /**
	     * A shim for requirejs require calls that calls `exposeModules` on the
	     * array of dependencies before delegating to the requirejs function.
	     */
	    function shimmedRequirejsRequire(modules) {
	        if (_.isArray(modules)) {
	            exposeModules(modules);
	        }
	        warnOnPrivateModuleRequests(modules);
	        return requirejsRequire.apply(null, arguments);
	    }

	    /**
	     * A shim for requirejs define calls that calls `exposedModules` on the
	     * array of dependencies before delegating to the requirejs function.
	     */
	    function shimmedRequirejsDefine(name, deps, callback) {
	        var modulesToExpose = _.isArray(name) ? name :
	            _.isArray(deps) ? deps :
	            parseDeps(name);
	        exposeModules(modulesToExpose);
	        warnOnPrivateModuleRequests(modulesToExpose);
	        requirejsDefine.apply(null, arguments);
	    }

	    /**
	    * This function enables sharing of modules between webpack and requirejs.
	    * If a module has already been loaded by webpack, it will expose it to
	    * requirejs using the requirejs, preventing double loading of the module.
	    *
	    * @param {Object|String[]} modules - Either a map with module ids as keys
	    * and the modules as values or an Array of module ids. If an array is
	    * passed, the ids will be used to look up the modules in the webpack module
	    * cache, after applying the webpack alias logic to the id.
	    * @param {Boolean} [isWhiteList = false] - True if the modules should be
	    * added to the whiteList. Requests for modules not in the whiteList will
	    * produce a warning.
	    */
	    function exposeModules(modules, isWhiteList) {
	        if (!_.isArray(modules)) {
	            _.forEach(modules, function(webpackModule, moduleId) {
	                if (isWhiteList) {
	                    whiteList[moduleId] = true;
	                }
	                exposeModule(moduleId, webpackModule);
	            });
	        } else {
	            modules.forEach(function(requirejsId) {
	                if (isWhiteList) {
	                    whiteList[requirejsId] = true;
	                }

	                // Early exit if the module has already been defined in requirejs.
	                if (requirejsModulesLoaded[requirejsId]) {
	                    return;
	                }

	                // For each module in the request we apply the webpack alias logic
	                // to obtain the moduleId used by webpack.
	                // The webpack alias logic is similar to a replace algorithm but a
	                // but more clever:
	                //  - If the the key ends with $ only the exact match (without the
	                // $) will be replaced.
	                //  - If the value is a relative path it will be relative to the
	                // file containing the require. (THIS IS NOT IMPLEMENTED HERE and is
	                // not currently used by any of our aliases in coreAliases.config).
	                //
	                // See https://webpack.github.io/docs/configuration.html#resolve-alias
	                var webpackId = requirejsId;
	                _.forEach(coreAliases, function(value, key) {
	                    if (/\$$/.test(key)) {
	                        if (key.slice(0, -1) === webpackId) {
	                            webpackId = value;
	                        }
	                    } else {
	                        webpackId = webpackId.replace(key, value);
	                    }
	                });

	                // If the module has already been loaded by webpack, expose it to
	                // requirejs with define.
	                if (_.has(webpackModules, webpackId)) {
	                    exposeModule(requirejsId, webpackModules[webpackId].exports);
	                }
	            });
	        }
	    }

	    function exposeModule(requirejsId, exportedMod) {
	        if (requirejsModulesLoaded[requirejsId]) {
	            return;
	        }
	        requirejsModulesLoaded[requirejsId] = true;
	        requirejsDefine(requirejsId, function () {
	            return exportedMod;
	        });
	        // Force the module to load by requiring it!
	        requirejsRequire([requirejsId]);
	    }

	    function warnOnPrivateModuleRequests(moduleIds) {
	        if (!_.isArray(moduleIds)) {
	            moduleIds = [moduleIds];
	        }
	        moduleIds.forEach(function(moduleId) {
	            moduleId = moduleId.substring(moduleId.indexOf('!') + 1);
	            if (moduleId &&
	                !_.has(whiteList, moduleId) &&
	                !/^\.\.\/app\/|^app\//.test(moduleId) &&
	                !/^api\//.test(moduleId)) {
	                console.warn('Warning: ' + moduleId +
	                    ' is a private module and may not be supported in the future.');
	            }
	        });
	    }

	    /**
	     * This function is copied from `contrib/require.js`. It parses commonjs
	     * style require statements from an amd module and returns an array of
	     * dependencies.
	     *
	     * @param {Function} factory
	     * @returns {String[]} An Array of dependencies
	     */
	    var commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg;
	    var cjsRequireRegExp = /[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g;
	    function parseDeps(factory) {
	        var deps = [];
	        if (factory.length) {
	            factory
	                .toString()
	                .replace(commentRegExp, '')
	                .replace(cjsRequireRegExp, function(match, dep) {
	                    deps.push(dep);
	                });
	        }
	        return deps;
	    }

	    shimmedRequirejsRequire.config = requirejsRequire.config;
	    shimmedRequirejsRequire.exposeModules = exposeModules;

	    // Override the requirejs globals with our shimmed versions.
	    window.requirejs = window.require = shimmedRequirejsRequire;
	    shimmedRequirejsDefine.amd = requirejsDefine.amd;
	    window.define = shimmedRequirejsDefine;
	    return shimmedRequirejsRequire;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/tour/ImageTour/Contents.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(359);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Contents.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Contents.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "shim/splunk.logger":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("shim/splunk"), __webpack_require__("shim/splunk.util"), __webpack_require__("logger")], __WEBPACK_AMD_DEFINE_RESULT__ = function(Splunk) {
	    return Splunk.Logger;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/tour/ImageTour/Master.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(360);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "uri/route":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("shim/jquery"), __webpack_require__("require/underscore"), __webpack_require__("shim/splunk.util"), __webpack_require__("util/splunkd_utils"), __webpack_require__("stubs/splunk.config"), __webpack_require__("util/console")], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, splunkutil, splunkdUtils, splunkConfig, console)
	{
	    var exports = {};
	    exports.getSplunkVersion = function(){
	        var version = "@" + encodeURIComponent(String(splunkConfig.BUILD_NUMBER));
	        if (splunkConfig.BUILD_PUSH_NUMBER) {
	            version += "." + encodeURIComponent(String(splunkConfig.BUILD_PUSH_NUMBER));
	        }
	        return version;
	    };


	    exports.encodeRoot = function(path, locale) {
	        if (splunkConfig.INDEPENDENT_MODE) {
	            console.warn('route: Trying to generate URL in independent mode when URL structure is unknown');
	        }

	        var parts = _.map((path || '').split('/'), function(part) {
	            return encodeURIComponent(part);
	        });
	        path = parts.join('/');
	        path = path ? '/' + path : path;
	        return path + '/' + encodeURIComponent(locale);
	    };
	    exports.alertActionIconFile = function(root, locale, appName, options) {
	        options = options || {};
	        var version = exports.getSplunkVersion();
	        if (options.file) {
	            if (appName === 'system') {
	                return exports.img(root, locale, version, options.file);
	            }
	            return exports.appStaticFileVersioned(root, locale, version, appName, options.file);
	        } else {
	            return exports.img(root, locale, version, 'mod_alert_icon_default.png');
	        }
	    };
	    exports.vizIconFile = function(root, locale, appBuildNumber, appName, fileName, directory) {
	        var systemDirectory = 'viz_previews';
	        var defaultIcon = 'default.png';
	        fileName = fileName || defaultIcon;

	        if (appName === 'system') {
	            var version = exports.getSplunkVersion();
	            directory = systemDirectory;
	            return exports.img(root, locale, version, fileName, directory);
	        }
	        else {
	            return exports.appVizFileVersioned(root, locale, appBuildNumber, appName, fileName, directory);
	        }
	    };
	    exports.appStaticFileAppVersioned = function(root, locale, appBuildNumber, appName, path) {
	        var version = exports.getSplunkVersion();
	        if (appBuildNumber){
	            version += "-" + encodeURIComponent(String(appBuildNumber));
	        }
	        return exports.encodeRoot(root, locale) + '/static/'+ version + '/app/' + encodeURIComponent(appName) + '/' + path;
	    };
	    exports.appVizFileVersioned = function(root, locale, appBuildNumber, appName, file, directory) {
	        return exports.appStaticFileAppVersioned(root, locale, appBuildNumber, appName, 'visualizations/' + encodeURIComponent(directory) + '/' + file);
	    };
	    exports.appStaticFileVersioned = function(root, locale, version, appName, file) {
	        return exports.encodeRoot(root, locale) + '/static/'+ version + '/app/' + encodeURIComponent(appName) + '/' + file;
	    };
	    exports.appStaticFile = function(root, locale, appName, file) {
	        return exports.encodeRoot(root, locale) + '/static/app/' + encodeURIComponent(appName) + '/' + file;
	    };
	    exports.staticFile = function(root, locale, version, file) {
	        return exports.encodeRoot(root,  locale)  + '/static/' + version + '/' + encodeURIComponent(file);
	    };
	    exports.img = function(root, locale, version, file, directory) {
	        var url = exports.encodeRoot(root,  locale)  + '/static/';
	        if (!_.isUndefined(version) && !_.isNull(version)) {
	            url += version + '/';
	        }
	        url += 'img/';
	        if (!_.isUndefined(directory)) {
	            url += encodeURIComponent(directory) + '/';
	        }
	        url += encodeURIComponent(file);
	        return url;
	    };
	    /**
	     * Convenience method for static asset URL, mostly used on the login page when window.$C doesn't contain the BUILD_NUMBER.
	     * Consider using splunkutil.make_url or any other method in this file before using this method.
	     * @param root application root.
	     * @param locale application locale.
	     * @param version on the login page, window.$C doesn't contain the BUILD_NUMBER, so we created this convenience method that build the URL
	     * @param assetPath array of string containing deep folder structure and the filename.
	     */
	    exports.staticAssetUrl = function(root, locale, version, assetPath) {
	        return exports.staticFile(root, locale, "@" + version, assetPath.join('/'));
	    };
	    /**
	     * This method builds the logo URL of the login page.
	     * If this is a full URL, http(s)://www.splunk.com/logo/png, just returns it.
	     * @param root
	     * @param locale
	     * @param version window.$C['BUILD_NUMBER'] or preferably this.model.serverInfo.entry.content.get('build')
	     * @param assetData the conf value of the loginCustomLogo conf variable: this.model.web.entry.content.get('loginCustomLogo')
	     * @returns {*}
	     */
	    exports.loginPageLogo = function(root, locale, version, assetData) {
	        var url = assetData;
	        var regex = new RegExp(/https?:\/\//);
	        // Construct logo URL if it's not a full URL
	        if (url && !regex.test(url)) {
	            url = exports.staticAssetUrl(root, locale, version, exports.assetPath(url));
	        }
	        return url;
	    };
	    /**
	     * This method builds the background image URL of the login page.
	     * @param root
	     * @param locale
	     * @param version window.$C['BUILD_NUMBER'] or preferably this.model.serverInfo.entry.content.get('build')
	     * @param assetData the conf value of the loginCustomBackgroundImage conf variable: this.model.web.entry.content.get('loginCustomBackgroundImage')
	     */
	    exports.loginPageBackground = function(root, locale, version, assetData) {
	        return exports.staticAssetUrl(root, locale, version, exports.assetPath(assetData));
	    };
	    /**
	     * This helper method builds an array of URL fragments of an asset given an asset data (most likely a conf variable)
	     * In order to build the URL of an asset, this methods is looking for a app namespace in the asset data.
	     * If no app namespace provided, default to 'search'.
	     * Then, append the assetPath to the array splitting by slashes.
	     * Example 1:
	     * - assetData = simplexml:directory/file.ext
	     * will return ['app','simplexml','directory','file.ext']
	     * Example 2:
	     * - assetData = directory/file.ext
	     * will return ['app','search','directory','file.ext']
	     * @param assetData
	     * @returns {string[]}
	     */
	    exports.assetPath = function(assetData) {
	        var assetPath = ['app'];
	        assetPath.push(assetData.substring(0,assetData.indexOf(":")) || 'search');
	        assetPath = assetPath.concat(assetData.substring(assetData.indexOf(":") + 1).split('/'));
	        return assetPath;
	    };
	    exports.page = function(root, locale, app, page, options) {
	        if(typeof page === 'undefined'){
	            page = '';
	        }
	        var url = exports.encodeRoot(root, locale) + '/app/' + encodeURIComponent(app);
	            if (_.isArray(page)) {
	            _.each(page, function(dir) {
	                url += '/' + encodeURIComponent(dir);
	            });
	        } else {
	            url += '/' + encodeURIComponent(page);
	        }
	        if (options) {
	            if (options.data) {
	                url = url + '?' + splunkutil.propToQueryString(options.data);
	            }
	            if (options.absolute) {
	                url = window.location.protocol + "//" + window.location.host + url;
	            }
	        }
	        return url;
	    };
	    exports.appIcon = function(root, locale, owner, app, options){
	        options = options || {};
	        var size = '';
	        if((window && window.devicePixelRatio > 1) || options.hiRes) {
	            size = '_2x';
	        }
	        return exports.splunkdNS(root, locale, owner, app, 'static/appIcon'+size+'.png', options);
	    };
	    exports.appIconAlt = function(root, locale, owner, app, options){
	        var size = '';
	        if(window && window.devicePixelRatio > 1){
	            size = '_2x';
	        }
	        return exports.splunkdNS(root, locale, owner, app, 'static/appIconAlt'+size+'.png', options);
	    };
	    exports.appLogo = function(root, locale, owner, app, options){
	        var size = '';
	        if(window && window.devicePixelRatio > 1){
	            size = '_2x';
	        }
	        return exports.splunkdNS(root, locale, owner, app, 'static/appLogo'+size+'.png', options);
	    };
	    exports.fileExplorer = function(root, locale, owner, app, options){
	        return exports.splunkdNS(root, locale, owner, app, 'admin/file-explorer', options);
	    };
	    exports.regExplorer = function(root, locale, owner, app, options){
	        return exports.splunkdNS(root, locale, owner, app, 'admin/win-reg-explorer', options);
	    };
	    exports.adExplorer = function(root, locale, owner, app, options){
	        return exports.splunkdNS(root, locale, owner, app, 'admin/win-ad-explorer', options);
	    };
	    exports.gettingStartedPlaceholderContent = function(root, locale, owner, app, options){
	        return exports.splunkdNS(root, locale, owner, app, 'static/gettingStartedPlaceholder.png', options);
	    };
	    exports.chooseDashboardIcon = function(root, locale, owner, app, options){
	        return exports.splunkdNS(root, locale, owner, app, 'static/chooseDashboardIcon.png', options);
	    };
	    exports.moreAppsIcon = function(root, locale, owner, app, options){
	        return exports.splunkdNS(root, locale, owner, app, 'static/moreAppsIcon.png', options);
	    };
	    exports.splunkd = function(root, locale){
	        return exports.encodeRoot(root, locale) + '/splunkd';
	    };
	    exports.splunkdRaw = function(root, locale){
	        return exports.splunkd(root, locale) + '/__raw';
	    };
	    exports.splunkdNS = function(root, locale, owner, app, path){
	        return exports.splunkdRaw(root, locale) + '/servicesNS/' + encodeURIComponent(owner) + '/' + encodeURIComponent(app) + '/' + path;
	    };
	    exports.indexingPreviewUpload = function(root, locale){
	        return exports.splunkd(root, locale) + '/__upload/indexing/preview';
	    };
	    exports.receiversStream = function(root, locale){
	        return exports.splunkd(root, locale) + '/__upload/receivers/stream';
	    };
	    exports.identicons = function(root, locale, value){
	        return exports.encodeRoot(root, locale) + '/static/app/search/identicons/' + encodeURIComponent(value) + '.png';
	    };
	    exports.pivot = function(root, locale, app, options) {
	        return exports.page(root, locale, app, 'pivot', options);
	    };
	    exports.table = function(root, locale, app, options) {
	        return exports.page(root, locale, app, 'table', options);
	    };
	    exports.dataset = function(root, locale, app, options) {
	        return exports.page(root, locale, app, 'dataset', options);
	    };
	    exports.datasets = function(root, locale, app, options) {
	        return exports.page(root, locale, app, 'datasets', options);
	    };
	    exports.data_model_manager = function(root, locale, app, options) {
	        return exports.page(root, locale, app, 'data_model_manager', options);
	    };
	    exports.data_model_editor = function(root, locale, app, options) {
	        return exports.page(root, locale, app, 'data_model_editor', options);
	    };
	    exports.field_extractor = function(root, locale, app, options) {
	        return exports.page(root, locale, app, 'field_extractor', options);
	    };
	    exports.search = function(root, locale, app, options) {
	        if (app === splunkdUtils.SYSTEM) {
	            app = 'search';
	        }
	        return exports.page(root, locale, app, 'search', options);
	    };
	    exports.report = function(root, locale, app, options) {
	        return exports.page(root, locale, app, 'report', options);
	    };
	    exports.reports = function(root, locale, app, options) {
	        return exports.page(root, locale, app, 'reports', options);
	    };
	    exports.alert = function(root, locale, app, options) {
	        return exports.page(root, locale, app, 'alert', options);
	    };
	    exports.alerts = function(root, locale, app, options) {
	        return exports.page(root, locale, app, 'alerts', options);
	    };
	    exports.job_manager = function(root, locale, app, options) {
	        return exports.page(root, locale, app, 'job_manager', options);
	    };
	    exports.managementConsole = function(root, locale, options) {
	        return exports.page(root, locale, 'splunk_monitoring_console', 'monitoringconsole_overview', options);
	    };
	    exports.addData = function(root, locale, app, step, options) {
	        // if app is not provided, default to search
	        var page = step ? ["adddata", step] : 'adddata';
	        return exports.manager(root, locale, app || "search", page, options);
	    };
	    exports.editDashboard = function(root, locale, app, name, options) {
	        return exports.page(root, locale, app, [name, 'edit'], options);
	    };
	    exports.dashboardFromID = function(root, locale, id, options) {
	        options = options || {};
	        //owner[1]/app[0]/data[2]/ui[3]/views[4]/name[5]
	        var parts = id.split('/').slice(-6);
	        return this.page(root, locale, parts[1], parts[5], options);
	    };
	    exports.logout = function(root, locale) {
	        return exports.encodeRoot(root, locale) + '/account/logout';
	    };
	    exports.proxyLogin = function(root, locale) {
	        return exports.encodeRoot(root, locale) + '/account/login';
	    };
	    exports.returnTo = function(root, locale, url) {
	        if (url.indexOf('/')===0) {
	            return url.replace(/^[\/\s\\]+/, '/');
	        }
	        return exports.encodeRoot(root, locale);
	    };
	    exports.embed = function(root, locale, embedToken, savedSearchId) {
	        var url,
	        data = {
	            s: savedSearchId,
	            oid: embedToken
	        };
	        if (splunkConfig.EMBED_URI) {
	            url = splunkConfig.EMBED_URI + '/';
	        } else {
	            url = window.location.protocol + "//" + window.location.host + '/';
	            if (root) {
	                url += root + '/';
	            }
	        }
	        return url + locale + '/embed?' + splunkutil.propToQueryString(data);
	    };
	    exports.jobInspector = function(root, locale, app, sid) {
	        var options = {
	                data: {
	                    sid: sid
	                }
	            };
	        // SPL-132167 SplunkWebCore needs to support previous versions.
	        // Remove this if statement once SplunkWebCore no longer needs to support 6.4
	        var sixDotMatch = splunkConfig.VERSION_LABEL.match(/^6\.(\d)\./);
	        if (sixDotMatch && (sixDotMatch[1] < 5)) {
	            options.data.namespace = app;
	            return exports.encodeRoot(root, locale) + '/search/inspector' + '?' + splunkutil.propToQueryString(options.data);
	        }
	        return exports.manager(root, locale, app, 'job_inspector', options);
	    };
	    exports.searchJobUrls = function(root, locale, sid, page, options) {
	        var url = exports.encodeRoot(root, locale) + '/api/search/jobs/' + encodeURIComponent(sid) + '/' + encodeURIComponent(page);
	        if (options && options.data) {
	            url = url + '?' + splunkutil.propToQueryString(options.data);
	        }
	        return url;
	    };
	    exports.searchJobTimeline = function(root, locale, sid, options) {
	        return exports.searchJobUrls(root, locale, sid, 'timeline', options);
	    };
	    exports.searchJobSummary = function(root, locale, sid, options) {
	        return exports.searchJobUrls(root, locale, sid, 'summary', options);
	    };
	    exports.manager = function(root, locale, app, page, options) {
	        var url =  exports.encodeRoot(root, locale) + '/manager/' + encodeURIComponent(app);
	        if (_.isArray(page)) {
	            _.each(page, function(dir) {
	                url += '/' + encodeURIComponent(dir);
	            });
	        } else {
	            url += '/' + encodeURIComponent(page);
	        }
	        if (options) {
	            if (options.data) {
	                url = url + '?' + splunkutil.propToQueryString(options.data);
	            }
	        }
	        return url;
	    };
	    exports.appSetupLink = function(root, locale, app, options) {
	        options || (options = {});
	        options.data = _.extend({ action: 'edit' }, options.data);
	        var page = ['apps', 'local', app, 'setup'];
	        return exports.manager(root, locale, app, page, options);
	    };

	    exports.archives = function(root, locale, app, options) {
	        options = options || {};
	        return exports.manager(root, locale, app, "archives", options);
	    };
	    exports.indexes = function(root, locale, app, options) {
	        options = options || {};
	        return exports.manager(root, locale, app, "data/indexes", options);
	    };
	    // HUNK routes
	    exports.providers = function(root, locale, app, options) {
	        options = options || {};
	        _(options).defaults({data:{t:"providers"}});
	        return exports.manager(root, locale, "system", "virtual_indexes", options);
	    };
	    exports.virtualIndexes = function(root, locale, app, options) {
	        options = options || {};
	        _(options).defaults({data:{t:"indexes"}});
	        return exports.manager(root, locale, "system", "virtual_indexes", options);
	    };
	    exports.exploreData = function(root, locale, app, options) {
	        options = options || {};
	        return exports.manager(root, locale, "system", "explore_data", options);
	    };
	    exports.managerEdit = function(root, locale, app, page, id, options) {
	        options = options || {};
	        options = $.extend(true, {data: {action: 'edit', uri: id}}, options);
	        return exports.manager(root, locale, app, page, options);
	    };
	    exports.managerPermissions = function(root, locale, app, page, id, options) {
	        options || (options = {});
	        var url =  exports.encodeRoot(root, locale) + '/manager/permissions/' + encodeURIComponent(app);
	        url += '/' + _.chain([page]).flatten().map(encodeURIComponent).value().join('/');
	        url += '/' + encodeURIComponent(id);
	        if (options.data) {
	            url = url + '?' + splunkutil.propToQueryString(options.data);
	        }
	        return url;
	    };
	    exports.triggeredAlerts = function(root, locale, app, options) {
	        var url = exports.encodeRoot(root, locale) + '/alerts/' + encodeURIComponent(app);
	        if (options) {
	            if (options.data) {
	                url = url + '?' + splunkutil.propToQueryString(options.data);
	            }
	        }
	        return url;
	    };
	    exports.docSearch = function(locale, version, isFree, isTrial, search) {
	        var base = 'http://docs.splunk.com/Special:SplunkSearch/docs',
	            params = {
	                locale: locale,
	                versionNumber: version,
	                license: isFree ? 'free' : 'pro',
	                installType: isTrial ? 'trial' : 'prod',
	                q: search
	            };
	        return base + '?' + splunkutil.propToQueryString(params);
	    };
	    exports.docHelp = function(root, locale, location) {
	        locale = locale || splunkdUtils.DEFAULT_LOCALE;
	        var url =  exports.encodeRoot(root, locale) + '/help',
	            params = {
	                location: location
	            };
	        return url + '?' + splunkutil.propToQueryString(params);
	    };
	    exports.docHelpInAppContext = function(root, locale, location, appName, appVersion, isCoreApp, appDocSectionOverride) {
	        var url = exports.encodeRoot(root, locale) + '/help',
	            params = {
	                location: location
	            };
	            // add [appName:appVersion] or [appDocsSectionOverride] prefix if the app is NOT a core app
	            if (!isCoreApp) {
	                if (appDocSectionOverride) {
	                    params.location = '[' + appDocSectionOverride + ']' + params.location;
	                } else {
	                    params.location = '[' + appName + ':' + appVersion + ']' + params.location;
	                }
	            }
	        return url + '?' + splunkutil.propToQueryString(params);
	    };
	    exports.exportUrl = function(root, locale, sid, filename, format, count, isReport, options) {
	        options = options || {};
	        var resultType = isReport ? 'results' : 'event';
	        var url = exports.encodeRoot(root, locale) + '/api/search/jobs/' + encodeURIComponent(sid) + '/' + resultType;
	        var params = {
	            isDownload: true,
	            timeFormat: options.timeFormat || '%FT%T.%Q%:z',
	            maxLines: 0,
	            count: count,
	            filename: filename || '',
	            outputMode: format
	        };
	        url += '?' + splunkutil.propToQueryString(params);

	        _.each(options.fields, function(field) {
	            url += '&field_list=' + field;
	        }, this);

	        return url;
	    };
	    exports.updateChecker = function(baseURL, isFree, versionNumber, checkerLocation, isTrial, guid, masterGuid) {
	        var url,
	            installType = (isTrial) ? 'trial' : 'prod',
	            licenseType = (isFree) ? 'free' : 'pro';
	        if (guid!==masterGuid) {
	            installType += '_slave';
	        }
	        url = baseURL + licenseType + '/' +  encodeURIComponent(versionNumber) + '/' +  encodeURIComponent(checkerLocation) + '/' +  encodeURIComponent(installType) + '/basic';
	        return url;
	    };
	    exports.answers = function() {
	        return 'http://answers.splunk.com';
	    };
	    exports.getContextualPageRouter = function(applicationModel) {
	        var root = applicationModel.get('root'),
	            locale = applicationModel.get('locale'),
	            app = applicationModel.get('app'),
	            nonPageMethods = ['page', 'docSearch', 'docHelp', 'docHelpInAppContext', 'exportUrl', 'exportUrl', 'getContextualPageRouter', 'pageStart', 'encodeRoot', 'redirectTo'],
	            routeNames = _(exports).chain().functions().difference(nonPageMethods),
	            router = {};

	        _(routeNames).each(function(route) {
	            var routeFn = exports[route];
	            router[route] = function() {
	                var fullArgs = [root, locale, app].concat(_(arguments).toArray());
	                return routeFn.apply(null, fullArgs);
	            };
	        });
	        return router;
	    };
	    exports.appNavUrl = function(root, locale, app){
	        return exports.encodeRoot(root,  locale)  + '/appnav/' + encodeURIComponent((app || ''));
	    };
	    exports.appsRemote = function(root, locale, app, options){
	       return  exports.manager(root, locale, app, 'appsremote', options);
	    };
	    exports.appsLocal = function(root, locale, app, options){
	        return  exports.manager(root, locale, app, ['apps','local'], options);
	    };
	    exports.splunkbaseApp = function(app) {
	        return 'https://apps.splunk.com/app/' + encodeURIComponent(app);
	    };
	    exports.appInstallRestart = function(root, locale, app){
	        return exports.manager(root, locale, 'system', 'control') + '?return_to=' + encodeURIComponent('/en-US/app/' + app) + '&auto_restart=1';
	    };
	    exports.appSetup = function(root, locale, setuplink){
	        return exports.encodeRoot(root,  locale)  + setuplink;
	    };
	    exports.viewStrings = function(root, locale, app, view){
	        return exports.page(root, locale, app, view) + "/strings";
	    };
	    exports.prebuiltAppLink = function(root, locale, app, link) {
	        /* properly sets up a URL for an /app/<app> link
	         *  returns root/locale/app/link
	         *  since link may contain a query string, it is not encoded
	         *  example:
	         *     root = /gadzooks, locale = en-US, app = search, link = search?tour=test
	         *     return /gadzooks/en-US/search/search?tour=test
	         */
	        return exports.encodeRoot(root, locale) + '/app/' + encodeURIComponent(app) + '/' + link;
	    };
	    exports.home = function(root, locale) {
	        /* our routing system routes /root/locale to the user's default app/default page
	         * as we ship, this is launcher/home, but the user can override this
	         * root and locale are accessible from application model
	         */
	        return exports.encodeRoot(root, locale);
	    };
	    /**
	     * Redirects to a new url, optionally in a new tab.
	     *
	     * Intentionally forked from the redirect_to function in util.js, instead providing a redirect method
	     * that is intended to consume a fully-formed URL like the ones generated by the other methods in this file.
	     *
	     * Correctly handles the case where we have an asynchronously generated URL that needs to open in a new tab.
	     * The new tab is created synchronously (to avoid pop-up blockers) and given its location when the promise resolves.
	     *
	     * @param url {String or a promise resolving with a string} the URL to navigate to
	     * @param useNewTab {Boolean}
	     *
	     */
	    exports.redirectTo = function(url, useNewTab) {
	        var target = useNewTab ? window.open() : window;
	        target.focus();
	        $.when(url)
	            .done(function(newLocation) {
	                target.location = newLocation;
	            })
	            .fail(function() {
	                console.error('failed to open new URL: ' + url);
	                console.error.apply(console, arguments);
	                if(useNewTab) {
	                    target.close();
	                }
	            });
	    };
	    exports.sourcetypeList = function(root, locale, app, options) {
	        // if app is not provided, default to search
	        return exports.manager(root, locale, app, 'sourcetypes', options);
	    };
	    exports.sourcetypeEdit = function(root, locale, app, id, options) {
	        // if app is not provided, default to search
	        return exports.sourcetypeList(root, locale, app, options) + '/'+id;
	    };
	    exports.spmetadata = function(root, locale) {
	        return exports.encodeRoot(root, locale) + '/saml/spmetadata';
	    };
	    return exports;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/ProductMenu":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    module,
	    __webpack_require__("require/underscore"),
	    __webpack_require__("views/shared/splunkbar/product/Master"),
	    __webpack_require__("views/shared/litebar/ProductMenu.pcssm")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    module,
	    _,
	    ProductMenuView,
	    css
	){
	    return ProductMenuView.extend({
	        moduleId: module.id,
	        css: css,
	        initialize: function() {
	            ProductMenuView.prototype.initialize.apply(this, arguments);
	            this.options.toggleView.set({label: ' '});
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/ProductMenu.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(361);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./ProductMenu.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./ProductMenu.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/splunkbar/apps/Master.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(279);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/litebar/SideNav":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// splunk bar
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__("require/backbone"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/litebar/SystemSection"),
	    __webpack_require__("views/shared/litebar/Activity"),
	    __webpack_require__("views/shared/ModalConfirmation/Master"),
	    __webpack_require__("views/shared/Restart"),
	    __webpack_require__("views/shared/litebar/Messages"),
	    __webpack_require__("views/shared/splunkbar/noconnection/Master"),
	    __webpack_require__("collections/shared/splunkbar/SystemMenuSections"),
	    __webpack_require__("collections/services/data/ui/Managers"),
	    __webpack_require__(368),
	    __webpack_require__("views/shared/delegates/Accordion"),
	    __webpack_require__("views/shared/litebar/SideNav.pcssm"),
	    __webpack_require__("uri/route"),
	    __webpack_require__("shim/splunk.util"),
	    __webpack_require__("util/splunkd_utils")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    Backbone,
	    module,
	    BaseView,
	    SystemSection,
	    ActivityMenu,
	    ConfirmDialog,
	    RestartDialog,
	    MessagesView,
	    NoConnectionOverlay,
	    SystemMenuSectionsCollection,
	    ManagersCollection,
	    sideTemplate,
	    Accordion,
	    css,
	    route,
	    splunkUtil,
	    splunkDUtils
	){
	    var View = BaseView.extend({
	        moduleId: module.id,
	        template: sideTemplate,
	        css: css,
	        initialize: function() {
	            BaseView.prototype.initialize.apply(this, arguments);
	            this.collection.sections = new SystemMenuSectionsCollection();

	            this.children.accordion = new Accordion({
	                el: this.el,
	                inactiveIconName: "chevronRight",
	                activeIconName: "chevronDown",
	                collapsible: true
	            });
	            this.children.accordion.on('toggled', function() {
	                this.setPrefs();
	            }, this);

	            this.children.activityMenu = new ActivityMenu({
	                model: {
	                    user: this.model.user,
	                    application: this.model.application
	                }
	            });

	            this.deferreds = {};
	            this.deferreds.managers = $.Deferred();

	            if (!this.collection.managers) {
	                this.collection.managers = new ManagersCollection();
	                this.bootstrapManagers();
	            } else {
	                this.deferreds.managers.resolve();
	            }

	            //listen for restart events
	            $(document).on('restart_failed', function() {
	                this.hideRestartModal();
	            }.bind(this));

	            this.canRestart = this.model.user.canRestart();

	            this.children.confirmDialog = new ConfirmDialog({
	                text: _("Are you sure you want to restart Splunk Light?").t()
	            });
	            this.children.confirmDialog.on('success', function() {
	                this.showRestartModal();
	                splunkUtil.restart_server();
	            }.bind(this));

	            this.children.messages = new MessagesView({
	                collection: {
	                    messages: this.collection.messages,
	                    legacyMessages: this.collection.legacyMessages,
	                    apps: this.collection.appsAll
	                },
	                model: {
	                    serverInfo: this.model.serverInfo,
	                    application: this.model.application,
	                    user: this.model.user,
	                    userPref: this.model.userPref,
	                    updateChecker: this.model.updateChecker,
	                    webConf: this.model.webConf
	                }
	            });
	        },

	        events: {
	            'click #control' : function(e) {
	                e.preventDefault();
	                if (this.canRestart) {
	                    this.children.confirmDialog.render().el;
	                    this.children.confirmDialog.show();
	                }
	            }
	        },

	        bootstrapManagers: function() {
	            this.collection.managers.fetch({
	                data: {
	                    app: '-',
	                    owner: this.model.application.get('owner'),
	                    count: 0,
	                    digest: 1
	                },
	                success: function(collection, response, options) {
	                    this.deferreds.managers.resolve();
	                }.bind(this),
	                error: function(collection, response, options) {
	                    this.deferreds.managers.resolve();
	                }.bind(this)
	            });
	        },

	        buildSections: function() {
	            this.collection.sections.add({
	                id: 'knowledge_configurations',
	                label: _('Knowledge').t(),
	                icon: 'bookmark',
	                order: 2
	            });

	            // TODO - ahebert: remove this hack when capabilities are set on each page
	            // of the following sections
	            if (this.model.user.isAdmin() || this.model.user.isCloudAdmin()) {
	                this.collection.sections.add({
	                    id: 'data_configurations',
	                    label: _('Data').t(),
	                    icon: 'data',
	                    order: 1
	                });
	                this.collection.sections.add({
	                    id: 'system_configurations',
	                    label: _('System').t(),
	                    icon: 'settings',
	                    order: 3
	                });
	            }
	            _.each(this.collection.managers.models, function(manager) {
	                var menuUrl = manager.entry.content.get('menu.url') || '',
	                    sectionName = manager.entry.content.get('menu.name'),
	                    disabledByLicense = splunkUtil.normalizeBoolean(manager.entry.content.get('disabled_by_license') || false),
	                    order = manager.entry.content.get('menu.order') || 1000,
	                    pageStart = route.encodeRoot(this.model.application.get('root'), this.model.application.get('locale')),
	                    url = pageStart + splunkUtil.sprintf(menuUrl, {namespace: 'search'});

	                if (!disabledByLicense && sectionName) {
	                    var section = this.collection.sections.get(sectionName);
	                    if (section) {
	                        var sectionItems = section.get('items');
	                        if (sectionItems) {
	                            sectionItems.push(manager);
	                        }
	                    }
	                }
	                manager.set({
	                    url: url,
	                    order: order
	                });
	            }.bind(this));

	            this.collection.sections.each(function(section) {
	                if (section.get('items') && section.get('items').length === 0) {
	                    return;
	                }

	                var sectionView = new SystemSection({
	                    model: section,
	                    id: section.get('label').toLowerCase().replace(/ /g,'')
	                });

	                this.$('[data-role=sidenav-menu]').append(sectionView.render().el);
	            }.bind(this));

	            var activeSideNavs = this.model.userPref.entry.content.get('display.prefs.activeSideNav') || [];
	            _.each(this.$('[data-accordion-role=group]'), function(node) {
	                if (activeSideNavs.indexOf(node.id) > -1) {
	                    this.children.accordion.showGroup($(node), false);
	                }
	            }.bind(this));
	        },

	        showRestartModal: function() {
	                this.children.restartDialog = new RestartDialog({
	                    model: {
	                        serverInfo: this.model.serverInfo
	                    }
	                });
	                // Necessary for modal to render correctly in manager.
	                $('body').append('<div class="splunk-components restartModal"></div>');
	                $('.restartModal').append(this.children.restartDialog.render().el);
	                this.children.restartDialog.show();
	        },

	        hideRestartModal: function() {
	            if (this.children.restartDialog) {
	                this.children.restartDialog.hide();
	            }
	        },

	        _setInitials: function() {
	            var name = this.model.user.entry.content.get("realname") || this.model.user.entry.get("name") || "",
	                names = name.split(/\s/),
	                first = (names.length > 0) ? names[0].charAt(0) : "",
	                last = (names.length > 1) ? names[names.length - 1].charAt(0) : "";

	            this.$('.user-name').html(first + last);
	        },

	        setPrefs: function(e) {
	            var activeNavs = '|',
	                elements = this.$('[data-accordion-role=group]');
	            for (var i = 0; i < elements.length; i++) {
	                if ($(elements[i]).attr('data-active')) {
	                    activeNavs = activeNavs.concat($(elements[i]).attr('id')).concat('|');
	                }
	            }
	            this.model.userPref.entry.content.set({
	                'display.prefs.activeSideNav': activeNavs
	            });
	            this.model.userPref.save({}, {silent: true});
	        },

	        liteMessages: function() {
	            this.MAX_RETRIES_BEFORE_FAIL = 3;
	            this.MESSAGES_POLLING_DELAY_STANDARD = 60000;
	            this.MESSAGES_POLLING_DELAY_HI_FREQ = 1000;
	            this.cntRetries = 0;

	            this.children.noConnectionOverlay = new NoConnectionOverlay();
	            $('body').append(this.children.noConnectionOverlay.render().el);

	            this.collection.messages.on('serverValidated', function(success, context, messages) {
	                if (success && this.cntRetries > 0) {
	                    this.restartMessagePolling(this.MESSAGES_POLLING_DELAY_STANDARD);
	                    this.children.noConnectionOverlay.hide();
	                    this.cntRetries = 0;
	                    return;
	                }
	                var netErrorMsg = _.find(messages, function(msg) {
	                    return msg.type == splunkDUtils.NETWORK_ERROR || 'network_error';
	                });
	                if (netErrorMsg) {
	                    if (this.cntRetries == 0) {
	                        this.restartMessagePolling(this.MESSAGES_POLLING_DELAY_HI_FREQ);
	                    }
	                    if (this.cntRetries >= this.MAX_RETRIES_BEFORE_FAIL) {
	                        this.children.noConnectionOverlay.show();
	                    }
	                    this.cntRetries += 1;
	                }
	            }, this);
	            this.$('[data-role=messages]').replaceWith(this.children.messages.render().el);
	            this.restartMessagePolling(this.MESSAGES_POLLING_DELAY_STANDARD);
	        },

	        restartMessagePolling: function(interval) {
	            this.collection.messages.stopPolling();
	            this.collection.messages.startPolling({delay: interval, uiInactivity: true, stopOnError: false, data: {count: 1000}});
	        },

	        render: function() {
	            this.$el.html(this.compiledTemplate({
	                css: this.css
	            }));
	            this.liteMessages();

	            this.$('[data-role=sidenav-menu]').prepend(this.children.activityMenu.render().el);

	            $.when(this.deferreds.managers).then(function() {
	                this.buildSections();
	            }.bind(this));

	            if (!this.canRestart) {
	                this.$('#control').remove();
	            }

	            if (!this.model.user.canEditReceiving()) {
	                this.$('#forwardreceive').remove();
	            }

	            if (!this.model.user.canViewLicense()) {
	                this.$('#licensing_stacks').remove();
	            }

	            if (!this.model.user.canEditUsers()) {
	                this.$('#authentication_users').remove();
	            }

	            if (this.model.serverInfo.isLiteFree()) {
	                this.$('[id$=resource_usage]').remove();
	                this.$('[id$=forwarder_monitoring]').remove();
	                this.$('[id$=platform_alerts]').remove();
	            }

	            this.$('.sidenav-body a').attr('tabindex', '-1');
	            return this;
	        }
	    });
	    return View;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/SystemSection":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/Icon"),
	    __webpack_require__(362),
	    __webpack_require__("views/shared/litebar/SystemSection.pcssm")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    module,
	    BaseView,
	    IconView,
	    systemMenuSectionTemplate,
	    css
	){
	    return BaseView.extend({
	        moduleId: module.id,
	        template: systemMenuSectionTemplate,
	        css: css,
	        attributes: {
	            'data-accordion-role': 'group'
	        },
	        initialize: function() {
	            BaseView.prototype.initialize.apply(this, arguments);
	            var itemsArray = this.model.get('items');
	            itemsArray.sort(function(a,b){
	                return parseInt(a.get('order'), 10) - parseInt(b.get('order'), 10);
	            });
	            this.children.icon = new IconView({icon: 'chevronRight'});
	            this.children.icon.$el.attr('data-accordion-role', 'toggle-icon');
	        },
	        render: function() {
	            var html = this.compiledTemplate({
	                model: this.model,
	                groupTitle: this.model.get('label'),
	                css: this.css
	            });
	            this.$el.html(html);
	            this.$('[data-accordion-role=toggle]').prepend(this.children.icon.render().el);
	            return this;
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "shim/requirejsDefine":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("shim/requirejs")], __WEBPACK_AMD_DEFINE_RESULT__ = function() {
	    return window.define;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/litebar/SystemSection.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(363);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./SystemSection.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./SystemSection.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "logger":
/***/ (function(module, exports) {

	(function(global) {

	Splunk.namespace("Splunk.Logger");
	/**
	 * The getLogger factory provides a standard interface for implementing a logger program mode. Dependency on utils.js
	 *
	 * var logger = Splunk.Logger.getLogger("logger.js");
	 * logger.info("This is a log message at ", new Date(), "showing a log!");
	 *
	 *
	 * @param {String} fileName The name of the source file to log.
	 * @param {Function} mode (Optional) The logging programming interface you wish to implement, defaults to Splunk.Logger.mode.Default if not defined.
	 */
	Splunk.Logger.getLogger = function(fileName, mode){
	    var self;
	    mode = mode || Splunk.Logger.mode.Default;
	    try {
	        self = new (mode)(fileName);
	    }catch(err){
	        self = this;
	        throw(new Error("Splunk.Logger mode is undefined, not callable or thrown an exception. mode=" + mode + " and fileName=" + fileName + ". Check to make sure the mode you are defining exist (see: web.conf js_logger_mode) and is a proper closure. Stack trace:" + err));
	    }
	    return self;
	};

	/**
	 * Exposes if a browser has firebug installed or not.
	 *
	 * @method hasFirebug
	 * @return Boolean
	 */
	Splunk.Logger.hasFirebug = function(){
	    return (typeof(console)!="undefined" && console.firebug)?true:false;
	};
	/**
	 * Exposes if a browser has a window console object.
	 *
	 * @method hasConsole
	 * @return Boolean
	 */
	Splunk.Logger.hasConsole = function(){
	    return (typeof(console)!="undefined")?true:false;
	};
	/**
	 * Object to store logger program mode.
	 */
	Splunk.Logger.mode = {};
	/**
	 * A mode logger program that does nothing.
	 */
	Splunk.Logger.mode.None = function(){
	    var self = this;
	    self.info = self.log = self.debug = self.warn = self.error = self.trace = function(){};
	};
	/**
	 * A mode logger program that calls a console object and a closure matching method if defined.
	 */
	Splunk.Logger.mode.Firebug = function(fileName){
	    var self = this;
	    var generateArguments = function(args){
	        var arr = [];
	        for(var i=0; i<args.length; i++){
	            arr.push(args[i]);
	        }
	        arr.push(fileName);
	        return arr;
	    };
	    var bindConsole = function(args, method){
	        args = generateArguments(args);
	        if(Splunk.Logger.hasConsole()){
	            method = console[method] || console.info || function(){};
	            //>=ie8 console object does not have an apply method (they are not instanceof functions!)
	            if(method.apply){
	                method.apply(console, args);
	            }else{
	                method(args.join(" "));
	            }
	        }
	    };

	    if (Splunk.Logger.hasFirebug() && console.firebug != '1.3.0') {
	        self.log = console.log;
	        self.info = console.info;
	        self.debug = console.debug;
	        self.warn = console.warn;
	        self.error = console.error;
	        self.trace = console.trace;
	    }
	    else {
	        self.info = function(){
	            bindConsole(arguments, "info");
	        };
	        self.log = function(){
	            bindConsole(arguments, "log");
	        };
	        self.debug = function(){
	            bindConsole(arguments, "debug");
	        };
	        self.warn = function(){
	            bindConsole(arguments, "warn");
	        };
	        self.error = function(){
	            bindConsole(arguments, "error");
	        };
	        self.trace = function(){
	            bindConsole(arguments, "trace");
	        };
	    }
	};
	/**
	 * A mode logger program that implements logging to a server/splunk. Dependency on contrib/swfobject.js
	 */
	Splunk.Logger.mode.Server = function(fileName){
	    var self = this,
	        buffer = Splunk.Logger.mode.Server.Buffer.getInstance();
	    /**
	     * Formats a console call and pushes it to buffer.
	     *
	     * @method bufferPush
	     * @param {arguments} args The arguments object from the original closure handler.
	     * @param {String} level The console level called.
	     */
	    var bufferPush = function(args, level){
	        args = args || [];
	        for(var i = 0; i < args.length; i++) {
	            if(typeof args[i] === 'object') {
	                try {
	                    args[i] = JSON.stringify(args[i]);
	                }
	                catch(e) { }
	            }
	        }
	        var message = Array.apply(null, args).join(" ");
	        var data = {level: level, 'class': fileName, message: message};
	        buffer.push(data);
	    };
	    /**
	     * The handlers for (new Splunk.Logger(fileName, [mode]))[level](arguments) calls.
	     */
	    self.info = function(){
	        bufferPush(arguments, "info");
	    };
	    self.log = function(){
	        bufferPush(arguments, "log");
	    };
	    self.debug = function(){
	        bufferPush(arguments, "debug");
	    };
	    self.warn = function(){
	        bufferPush(arguments, "warn");
	    };
	    self.error = function(){
	        bufferPush(arguments, "error");
	    };
	    self.trace = function(){
	        // try to generate a stack trace that can be sent to the server with log-level DEBUG
	        // this will not actually give any meaningful information in IE, in which case this is a no-op
	        var trace = '';
	        try {
	            var err = new Error();
	            trace = err.stack.replace(/^Error/, '');
	        }
	        catch(e) { }
	        if(trace) {
	            bufferPush([trace], "debug");
	        }
	    };
	};
	/**
	 * A buffer class to take care of purging and posting of logged messages.
	 */
	Splunk.Logger.mode.Server.Buffer = function(){
	    var self = this,
	        thread,
	        buffer = [];
	    /**
	     * Posts buffer asynchronously to Splunk.Logger.Mode.Server.END_POINT,
	     *
	     * @method serverPost
	     */
	    var serverPost = function(){
	        var data = JSON.stringify(buffer);
	        $.post(Splunk.Logger.mode.Server.END_POINT, {"data":data});
	    };
	    /**
	     * Posts and purges the existing buffer.
	     *
	     * @method purge
	     */
	    var purge = function(){
	        serverPost();
	        buffer = [];
	    };
	    /**
	     * Checks the buffer, posts and purges if necessary.
	     *
	     * @method check
	     */
	    var check = function(){
	        if(buffer.length>Splunk.Logger.mode.Server.MAX_BUFFER){
	            purge();
	        }
	    };
	    self.push = function(str){
	        buffer.push(str);
	        check();
	    };
	    /**
	     * Checks the buffer at set interval and posts and purges if data exists.
	     *
	     * @method poller
	     */
	    self.poller = function(){
	        if(buffer.length>0){
	            purge();
	        }
	    };
	    self.size = function(){
	        return buffer.length;
	    };
	    self.Buffer = function(){
	        thread = setInterval(self.poller, Splunk.Logger.mode.Server.POLL_BUFFER);
	    }();
	};
	Splunk.Logger.mode.Server.Buffer.instance = null;
	/**
	 * Singleton reference to a shared buffer.
	 *
	 * @method getInstance
	 */
	Splunk.Logger.mode.Server.Buffer.getInstance = function(){
	    if(Splunk.Logger.mode.Server.Buffer.instance==null){
	        Splunk.Logger.mode.Server.Buffer.instance = new Splunk.Logger.mode.Server.Buffer();
	    }
	    return Splunk.Logger.mode.Server.Buffer.instance;
	};
	Splunk.Logger.mode.Server.END_POINT = Splunk.util.make_url(Splunk.util.getConfigValue("JS_LOGGER_MODE_SERVER_END_POINT", "util/log/js"));
	Splunk.Logger.mode.Server.POLL_BUFFER = Splunk.util.getConfigValue("JS_LOGGER_MODE_SERVER_POLL_BUFFER", 1000);
	Splunk.Logger.mode.Server.MAX_BUFFER = Splunk.util.getConfigValue("JS_LOGGER_MODE_SERVER_MAX_BUFFER", 100);
	/**
	 * The default system mode logger program, see web.conf js_logger_mode.
	 */
	Splunk.Logger.mode.Default = Splunk.Logger.mode[Splunk.util.getConfigValue("JS_LOGGER_MODE", "None")];
	/**
	 * Legacy Splunk.log compatibility
	 */
	Splunk.log = function(msg, category, src){
	    Splunk.Logger.getLogger("logger.js").warn("WARNING! Splunk.log is now deprecated. See Splunk.Logger class for more details.", "Original Message:", msg, " Original Category:", category, "Original Source:", src);
	};
	/**
	 * Legacy Backwards compatibility with 3.X
	 */
	var D = global.D = {};
	D.logger = Splunk.Logger.getLogger("logger.js");
	D.wrapper = function(str, level){
	    D.logger.warn("WARNING! D.", level, "is now deprecated. See Splunk.Logger class for more details.", str);
	};
	D.debug = function(str){D.wrapper(str, "debug");};
	D.error = function(str){D.wrapper(str, "error");};
	D.warn = function(str){D.wrapper(str, "warn");};
	/**
	 * Augment util.logger to standard logger.
	 */
	Splunk.util.logger = Splunk.Logger.getLogger("util.js");

	})(this);



/***/ }),

/***/ "views/shared/litebar/Activity":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("views/shared/litebar/SystemSection"),
	    __webpack_require__("models/SplunkDBase"),
	    __webpack_require__("uri/route")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    _,
	    module,
	    SystemSection,
	    BaseModel,
	    route
	){
	    return SystemSection.extend({
	        moduleId: module.id,
	        id: 'activity',
	        initialize: function(options) {
	            this.model = new BaseModel();
	            this.model.set('label', _('Activity').t());

	            var isAdmin = this.options.model.user.isAdmin() || this.options.model.user.isCloudAdmin(),
	                app = (this.options.model.application.get('app') == 'system') ? 'search' : this.options.model.application.get('app'),
	                root = this.options.model.application.get('root'),
	                locale = this.options.model.application.get('locale'),
	                items = [],
	                jobsModel = new BaseModel(),
	                jobLink = route.page(root, locale, app, 'job_manager');

	            jobsModel.entry.content.set('menu.label', 'Jobs');
	            jobsModel.entry.set('name', 'jobs');
	            jobsModel.set('url', jobLink);
	            items.push(jobsModel);

	            if (this.options.model.user.canUseAlerts()) {
	                var alertsLink = route.triggeredAlerts(root, locale, app),
	                    alertsModel = new BaseModel();

	                alertsModel.entry.content.set('menu.label', 'Triggered alerts');
	                alertsModel.entry.set('name', 'alerts');
	                alertsModel.set('url', alertsLink);
	                items.push(alertsModel);
	            }

	            if (isAdmin && !this.options.model.user.serverInfo.isLiteFree()) {
	                // only build systemActivityLink if the user is admin
	                var systemActivityLink = route.page(root, locale, 'splunk_monitoring_console', 'scheduler_activity_instance'),
	                    systemActivityModel = new BaseModel();

	                systemActivityModel.entry.content.set('menu.label', 'System activity');
	                systemActivityModel.entry.set('name', 'systemActivity');
	                systemActivityModel.set('url', systemActivityLink);
	                items.push(systemActivityModel);
	            }

	            this.model.set('items', items);
	            SystemSection.prototype.initialize.apply(this, arguments);
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/ModalConfirmation/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @author ahebert
	 * @date 7/21/16
	 *
	 * Confirm dialog that should be used instead of the window.confirm.
	 *
	 *
	 * @param {Object} [options]
	 * @param {String} [options.text = 'Are you sure?'] - The contents of the paragraph tag.
	 * @param {String} [options.buttonLeftLabel = 'Cancel'] - The label of the left button.
	 * @param {String} [options.buttonRightLabel = 'OK'] - The label of the right button.
	 * @param {String} [options.isAlert = 'false'] - Defines is this is an alert or a confirm. If this is an alert, hide the left button.
	 * @param {String} [options.closeOnEscape = 'false'] - Defines whether the Modal can be dismissed when pressing the Escape key and when clicking on the back drop area.
	 * @param {String} [options.showCloseButton = 'false'] - Defines whether the Modal should have a close button.
	 */
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("shim/jquery"),
	        module,
	        __webpack_require__("views/shared/Button"),
	        __webpack_require__("views/shared/ModalLocalClassNames"),
	        __webpack_require__("views/shared/ModalConfirmation/Contents")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        _,
	        $,
	        module,
	        Button,
	        Modal,
	        ConfirmationContents
	    ){
	        return Modal.extend({
	            moduleId: module.id,

	            initialize: function() {
	                var defaultOptions = {
	                    closeOnEscape : false,
	                    showCloseButton : false,
	                    buttonLeftLabel: _("Cancel").t(),
	                    buttonRightLabel: _("OK").t(),
	                    text: _("Are you sure?").t(),
	                    isAlert: false
	                };
	                this.options = _.extend({}, defaultOptions, this.options);

	                this.options.bodyView = new ConfirmationContents({
	                    text: this.options.text
	                });
	                if (!this.options.isAlert) {
	                    this.options.buttonsLeft = [
	                        new Button({
	                            href: '#',
	                            label: this.options.buttonLeftLabel,
	                            style: 'default',
	                            action: 'cancel'
	                        })
	                    ];
	                }
	                this.options.buttonsRight = [
	                    new Button({
	                        href: '#',
	                        label: this.options.buttonRightLabel,
	                        style: 'primary',
	                        action: 'success'
	                    })
	                ];
	                Modal.prototype.initialize.apply(this, arguments);
	            },

	            events: $.extend({}, Modal.prototype.events, {
	                'click [data-action=cancel]': function(e) {
	                    e.preventDefault();
	                    this.trigger('cancel');
	                    this.hide();
	                },
	                'click [data-action=success]': function(e) {
	                    e.preventDefault();
	                    this.trigger('success');
	                    this.hide();
	                }
	            })
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/ModalConfirmation/Contents":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @author ahebert
	 * @date 7/21/16
	 *
	 * Confirm dialog content. See views/shared/ModalConfirmation/Master.js.
	 */
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        module,
	        __webpack_require__("views/Base")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        module,
	        BaseView
	    ) {
	        return BaseView.extend({
	            moduleId: module.id,
	            tagName: 'p',

	            render: function() {
	                this.$el.html(_.escape(this.options.text));
	                return this;
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/Restart":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("views/shared/ModalLocalClassNames"),
	    __webpack_require__("views/shared/RestartContents"),
	    __webpack_require__("shim/splunk.util")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        module,
	        Modal,
	        RestartContents,
	        SplunkUtil
	        ) {
	        return Modal.extend({
	            moduleId: module.id,
	            initialize: function(options) {
	                this.options.showCloseButton = false;
	                this.options.closeOnEscape = false;
	                this.options.title = SplunkUtil.sprintf(_('Restarting %s...').t(), this.model.serverInfo.getProductName());
	                this.options.bodyView = new RestartContents({
	                    model: {
	                        serverInfo: this.model.serverInfo
	                    }
	                });
	                Modal.prototype.initialize.call(this, options);
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/RestartContents":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        module,
	        __webpack_require__("views/Base"),
	        __webpack_require__("shim/splunk.util")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        _,
	        module,
	        BaseView,
	        SplunkUtil
	    ) {
	        return BaseView.extend({
	            moduleId: module.id,

	            initialize: function() {
	                BaseView.prototype.initialize.apply(this, arguments);

	                this._onRestartSSL = this._onRestartSSL.bind(this);
	                this.isCloud = this.model.serverInfo.isCloud();

	                // listen to global 'restart_ssl' event
	                $(document).on('restart_ssl', this._onRestartSSL);
	            },

	            stopListening: function() {
	                // stop listening to global 'restart_ssl' event
	                $(document).off('restart_ssl', this._onRestartSSL);

	                BaseView.prototype.stopListening.apply(this, arguments);
	            },

	            render: function() {
	                var restartMessage = '';

	                if (this._sslBase) {
	                    var url = this._sslBase + SplunkUtil.make_url('/'),
	                        restartMsgExtra = '';

	                    if (!this.isCloud) {
	                        restartMsgExtra = SplunkUtil.sprintf( '%s <a href="%s">%s</a>.',
	                            _('Check the web_service.log file to determine when Splunk has restarted and then').t(),
	                            url, _('click here to continue').t());
	                    }

	                    restartMessage = SplunkUtil.sprintf(_('Restart in progress. Please wait. %s').t(), restartMsgExtra);
	                } else {
	                    restartMessage = _("Restart in progress. Please wait.").t();
	                }

	                var html = this.compiledTemplate({
	                    restartMessage: restartMessage
	                });
	                this.$el.html(html);
	                return this;
	            },

	            _onRestartSSL: function(e) {
	                this._sslBase = e.sslBase;
	                this.render();
	            },

	            template: '<p><%= restartMessage %></p>'
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/Messages":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("models/shared/SessionStore"),
	    __webpack_require__("views/shared/splunkbar/messages/MenuContents"),
	    __webpack_require__("views/shared/litebar/Message"),
	    __webpack_require__(366),
	    __webpack_require__("views/shared/litebar/Messages.pcssm"),
	    __webpack_require__("util/general_utils")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    module,
	    SessionStore,
	    MessagesView,
	    MessageView,
	    template,
	    css,
	    general_utils
	){
	    return MessagesView.extend({
	        moduleId: module.id,
	        template: template,
	        css: css,
	        MessageView: MessageView,
	        showHideMessages: function() {
	            var totalSystemMessages = this.collection.messages.length + this.numLegacyMessages,
	                totalMessages = totalSystemMessages + this.numSplunkMessages;
	            this.$('[data-role=message-notification]').text(totalMessages);

	            if (totalMessages > 0) {
	                this.$('[data-role=message-notification]').show();
	                this.$("[data-action=delete-all]").show();
	                this.$('[data-role=no-messages]').hide();
	            } else {
	                this.$('[data-role=message-notification]').hide();
	                this.$("[data-action=delete-all]").hide();
	                this.$('[data-role=no-messages]').show();
	            }

	            if (totalSystemMessages == 0 || this.numSplunkMessages == 0) {
	                this.$('[data-role=messages-list-divider]').hide();
	            } else {
	                this.$('[data-role=messages-list-divider]').show();
	            }
	            this.checkForLicenseExpirationMessage();
	        },

	        checkForLicenseExpirationMessage: function() {
	            this.collection.messages.each(function(model, key){
	                if (model.entry.get('name') == 'LM_LICENSE_EXPIRATION_STATUS') {
	                    if (!this.model.serverInfo.isLicenseStateExpired()) {
	                        var sessionStorage = SessionStore.getInstance();
	                        sessionStorage.fetch();

	                        if (!sessionStorage.has('licenseWillExpireMessageVisible')) {
	                            sessionStorage.set({'licenseWillExpireMessageVisible': true});
	                            sessionStorage.save();
	                        }
	                        
	                        if (general_utils.normalizeBoolean(sessionStorage.get('licenseWillExpireMessageVisible'))) {
	                            model.trigger('licenseWillExpire', model.entry.content.get('message'));
	                        }
	                    }
	                }
	            }, this);
	        },

	        getSplunkMessages: function() {
	           MessagesView.prototype.getSplunkMessages.apply(this, arguments);
	           this.checkAppUpdates();
	        },

	        checkAppUpdates: function() {
	            if (this.collection.apps) {
	                _.each(this.collection.apps.models, function(app) {
	                    var appId = app.entry.get('name'),
	                        appName = app.entry.content.get('label'),
	                        appVersionId = 'app_version_' + appId.replace(/\-/g, '_'),
	                        newAppVersion = this.model.userPref.entry.content.get(appVersionId);

	                    // Check if app specific message is available
	                    if (newAppVersion) {
	                        this.renderSplunkMessage(appVersionId, 'info', {appName: appName, appId: appId});
	                        this.showHideMessages();
	                        return true;
	                    }

	                    // Check if new version is available
	                    var updateVersion = app.entry.content.get('update.version'),
	                        checkedVersion = this.model.userPref.entry.content.get('checked_' + appVersionId);

	                    if (updateVersion && (updateVersion !== checkedVersion)) {
	                        this.renderSplunkMessage(appVersionId, 'info', {appName: appName, appId: appId});
	                        this.saveSplunkMessage(appVersionId, updateVersion);
	                        this.showHideMessages();
	                    }
	                }, this);
	            }
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/shared/SessionStore":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 * @author vroy
	 * @date 4/13/15
	 *
	 * Base model singleton class for simulating a session cache.
	 */
	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("shim/jquery.cookie"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("require/backbone"),
	        __webpack_require__("util/splunkd_utils"),
	        __webpack_require__("util/console")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        jqueryCookie,
	        _,
	        Backbone,
	        splunkd_utils,
	        console
	    ) {
	        var sessionStoreInstance = null;
	        var id = "_sessionStore_";
	        var SessionStoreModel = Backbone.Model.extend({
	            initialize: function() {
	                Backbone.Model.prototype.initialize.apply(this, arguments);
	                this.set("id", id);
	            }, 
	            sync: function(method, model, options) {
	                options || (options = {});
	                var def = $.Deferred();
	                var data = null;
	                switch(method){
	                    case 'read':
	                        try {
	                            data = $.cookie(id);

	                            if (data) {
	                                data = JSON.parse(data);
	                            }

	                            if (options.success) {
	                                options.success(data || {});
	                            }
	                            def.resolve();
	                        }
	                        catch(err) {
	                            console.error('Fetch failed: ' + err);
	                            if (options.error) {
	                                options.error(err);
	                            }
	                            def.reject();
	                        }
	                        
	                        return def;

	                    case 'create':
	                    case 'update':
	                        try {
	                            data = model.toJSON();
	                            delete data["id"];
	                            $.cookie(id, JSON.stringify(data));

	                            if (options.success) {
	                                options.success();
	                            }
	                            def.resolve();
	                        }
	                        catch(err) {
	                            console.error('Save failed: ' + err);
	                            if (options.error) {
	                                options.error(err);
	                            }
	                            def.reject();
	                        }
	                        
	                        return def;

	                    case 'delete':
	                        try {
	                            $.cookie(id, null);
	                            if (options.success) {
	                                options.success();
	                            }
	                            def.resolve();
	                        }
	                        catch(err) {
	                            console.error('Destroying failed: ' + err);
	                            if (options.error) {
	                                options.error(err);
	                            }
	                            def.reject();
	                        }
	                        return def;

	                    default:
	                        throw new Error('invalid method: ' + method);
	                }
	            }

	        },
	        {
	            getInstance: function(force) {
	                force = force || false;
	                if (!sessionStoreInstance) {
	                    sessionStoreInstance = new SessionStoreModel();
	                }
	                else {
	                    if (typeof force === "boolean" && force) {
	                        sessionStoreInstance.destroy();
	                        sessionStoreInstance = new SessionStoreModel();
	                    }
	                }
	                
	                return sessionStoreInstance;
	            }
	        });
	        return SessionStoreModel;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "shim/jquery.cookie":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("shim/jquery"), __webpack_require__(364)], __WEBPACK_AMD_DEFINE_RESULT__ = function($){
	    return $;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/splunkbar/system/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    __webpack_require__("shim/jquery"),
	    module,
	    __webpack_require__("views/shared/Menu"),
	    __webpack_require__("views/shared/splunkbar/MenuButton"),
	    __webpack_require__("views/shared/splunkbar/system/MenuContents"),
	    __webpack_require__("uri/route")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    _,
	    $,
	    module,
	    MenuView,
	    MenuButtonView,
	    MenuContentsView,
	    route
	){
	    return MenuView.extend({
	        moduleId: module.id,
	        initialize: function(){
	            this.options.dontAddModuleIdAsClass = true;
	            this.options.contentView = new MenuContentsView({
	                collection: {
	                    sections: this.collection.sections,
	                    managers: this.collection.managers,
	                    apps: this.collection.apps
	                },
	                model: {
	                    application: this.model.application,
	                    user: this.model.user
	                }
	            });
	            this.options.toggleView = new MenuButtonView({label: _("Settings").t()});
	            MenuView.prototype.initialize.apply(this, arguments);
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/Message":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("views/shared/splunkbar/messages/Message"),
	    __webpack_require__("views/shared/ModalConfirmation/Master"),
	    __webpack_require__("views/shared/Restart"),
	    __webpack_require__("views/shared/litebar/Message.pcssm"),
	    __webpack_require__("shim/splunk.util")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    module,
	    MessageView,
	    ConfirmDialog,
	    RestartDialog,
	    css,
	    splunk_util
	){
	    return MessageView.extend({
	        moduleId: module.id,
	        css: css,
	        messageMap: {
	            'restart_required': _('Restart for changes to take effect. [[/manager/search/control|Click here to restart]].').t(),
	            'orphaned_scheduled_searches': _('Click to view the [[/app/search/orphaned_scheduled_searches?form.scheduled_only=is_scheduled%3D1|orphaned scheduled searches]].  Reassign them to a valid user to re-enable or alternatively disable the searches.').t(),
	            'LM_SLAVE_WARNING_COUNT': _("Daily indexing volume limit exceeded. See [[/manager/system/licensing|License Manager]] for details.").t(),
	            'LM_LICENSE_ALERTS_STATUS': _('Daily indexing volume limit exceeded today. See [[/manager/system/licensing|License Manager]] for details.').t()
	        },
	        contactStr: 'To manage your license or to learn how to renew your license go the licensing management page.',

	        initialize: function() {
	            MessageView.prototype.initialize.apply(this, arguments);
	            //listen for restart events
	            $(document).on('restart_failed', function() {
	                this.hideRestartModal();
	            }.bind(this));

	            this.children.confirmDialog = new ConfirmDialog({
	                text: _("Are you sure you want to restart Splunk Light?").t()
	            });
	            this.children.confirmDialog.on('success', function() {
	                this.showRestartModal();
	                splunk_util.restart_server();
	            }.bind(this));
	        },

	        events: {
	            'click [data-role="content"] a' : 'checkRestart'
	        },

	        checkRestart: function(e) {
	            if (this.restart) {
	                e.preventDefault();
	                this.children.confirmDialog.render().el;
	                this.children.confirmDialog.show();
	            }
	        },

	        showRestartModal: function() {
	            this.children.restartDialog = new RestartDialog({
	                model: {
	                    serverInfo: this.model.serverInfo
	                }
	            });
	            // Necessary for modal to render correctly in manager.
	            $("body").append('<div class="splunk-components restartModal"></div>');
	            $(".restartModal").append(this.children.restartDialog.render().el);
	            this.children.restartDialog.show();
	        },

	        hideRestartModal: function() {
	            if (this.children.restartDialog) {
	                this.children.restartDialog.hide();
	            }
	        },

	        render: function() {
	            if (this.model.message.entry.get('name') == 'restart_required') {
	                this.restart = true;
	            }
	            MessageView.prototype.render.apply(this, arguments);
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/Message.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(365);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Message.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Message.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/splunkbar/system/MenuContents":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__("require/backbone"),
	    module,
	    __webpack_require__("shim/splunk.util"),
	    __webpack_require__("util/string_utils"),
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/delegates/Popdown"),
	    __webpack_require__("views/shared/Button"),
	    __webpack_require__("views/shared/splunkbar/system/Section"),
	    __webpack_require__("views/shared/splunkbar/system/Modal"),
	    __webpack_require__("uri/route"),
	    __webpack_require__(284),
	    __webpack_require__("views/shared/splunkbar/system/MenuContents.pcssm")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    Backbone,
	    module,
	    splunk_util,
	    string_utils,
	    BaseView,
	    Popdown,
	    ButtonView,
	    Section,
	    SettingsModal,
	    route,
	    systemMenuTemplate,
	    css
	){
	    return BaseView.extend({
	        moduleId: module.id,
	        template: systemMenuTemplate,
	        css: css,
	        initialize: function() {
	            var self = this;
	            BaseView.prototype.initialize.apply(this, arguments);
	            self.debouncedRender();
	            this.collection.sections.on('ready', function(){
	                self.debouncedRender();
	            }, this);
	        },
	        events: {
	            'click [data-action=show-all]': 'showAllSections'
	        },
	        render: function() {
	            var root = this.model.application.get('root'),
	                locale = this.model.application.get('locale'),
	                app = this.model.application.get('app'),
	                managementConsoleApp = this.collection.apps.findByEntryName('splunk_monitoring_console'),
	                managementConsoleAvailable = (managementConsoleApp && !managementConsoleApp.entry.content.get("disabled")),
	                canShowMore = this.collection.managers.canShowMore(),
	                html = this.compiledTemplate({
	                    userCanAddData:
	                        this.model.user.canAddData() &&
	                        this.collection.managers.findByEntryName('adddata'),
	                    addDataURL: route.addData(root, locale, (app === 'launcher' ? undefined : app)),
	                    userCanExploreData:
	                        this.model.user.canExploreData() &&
	                        this.collection.managers.findByEntryName('explore_data'),
	                    exploreDataURL: route.exploreData(root, locale, app),
	                    managementConsoleAvailable: managementConsoleAvailable,
	                    managementConsoleURL: route.managementConsole(root, locale),
	                    canShowMore: canShowMore,
	                    css: css
	                });
	            var $html = $(html);
	            var $body = $html.filter("[data-popdown-role=body]");

	            if (canShowMore) {
	                this.children.showMore = new ButtonView({label: _('Show All Settings').t(), action: 'show-all'});
	                this.children.showMore.render().appendTo($html.filter('[data-popdown-role=footer]'));
	            }

	            this.addSections($body);
	            if(this.sectionCount < 2) {
	                $body.attr('class' , css.menuNarrow);
	            }

	            this.$el.html($html);

	            this.children.popdown = new Popdown({el:this.el, mode: 'dialog'});

	            return this;
	        },
	        addSections: function($body){
	            var self = this;
	            this.sectionCount = 0;
	            this.collection.sections.each(function(section){
	                if (section.get('items') && section.get('items').length === 0) {
	                    return;
	                }
	                var sectionView = self.children[section.get('id')] = new Section({
	                    model: section
	                });

	                self.sectionCount++;
	                $body.append(sectionView.render().el);
	            });
	        },
	        showAllSections: function(evt) {
	            this.children.dialog = new SettingsModal({
	                collection: {
	                    managers: this.collection.managers,
	                    sections: this.collection.sections
	                },
	                model: {
	                    application: this.model.application
	                },
	                onHiddenRemove: true
	            });
	            this.children.dialog.show();
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/system/Section":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/Icon"),
	    __webpack_require__(281),
	    __webpack_require__("views/shared/splunkbar/system/Section.pcssm")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    module,
	    BaseView,
	    IconView,
	    systemMenuSectionTemplate,
	    css
	){
	    return BaseView.extend({
	        moduleId: module.id,
	        template: systemMenuSectionTemplate,
	        className: css.view,
	        initialize: function() {
	            BaseView.prototype.initialize.apply(this, arguments);
	            var itemsArray = this.model.get('items');
	            itemsArray.sort(function(a,b){
	                return parseInt(a.get('order'), 10) - parseInt(b.get('order'), 10);
	            });

	            this.children.icon = new IconView({icon: this.model.get('icon')});
	        },
	        render: function() {
	            var html = this.compiledTemplate({model: this.model, css: css});
	            this.$el.html(html);

	            this.children.icon.render().appendTo(this.$('[data-role=icon]'));
	            return this;
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/Messages.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(367);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Messages.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Messages.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "require/backbone":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("shim/jquery"), __webpack_require__("require/underscore"), __webpack_require__("contrib/backbone")], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, Backbone) {
	    // inject a reference to jquery in case we ever run it in no conflict mode
	    Backbone.$ = $;
	    return Backbone.noConflict();
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ }),

/***/ "views/shared/splunkbar/system/Section.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(282);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Section.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Section.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/delegates/Accordion":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
	 *   views/shared/delegates/Accordion
	 *
	 *   Desc:
	 *     This class applies accordion behaviors.
	 *     Default markup is based on Twitter Bootstrap's Collapse
	 *     http://twitter.github.com/bootstrap/
	 *
	 *     @param {Object} (Optional) options An optional object literal having one or more settings.
	 *
	 *    Usage:
	 *       var p = new Popdown({options})
	 *
	 *    Options:
	 *        el (required): The event delegate.
	 *        group: jQuery selector for the toggle and body wrapper ".accordion-group".
	 *        toggle: jQuery selector for the accordion group's toggle. Defaults to ".accordion-toggle".
	 *        body: jQuery selector for the accordion group's body. Defaults to ".accordion-body".
	 *        default: jQuery selector or object for the default group. Defaults to ".accordion-group:first-child".
	 *        collapsible: Will allow for each to open/close on each's own w/o others toggling
	 *
	 *    Methods:
	 *        show: show a panel. Parameters are the group, which can be a selector or jQuery object, and a boolean to enable or disable animation.
	 */


	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    __webpack_require__("require/underscore"),
	    __webpack_require__("views/shared/delegates/Base"),
	    __webpack_require__("views/shared/Icon")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    $,
	    _,
	    DelegateBase,
	    Icon
	){
	    return DelegateBase.extend({
	        initialize: function(){
	            var defaults = {
	                group: ".accordion-group, [data-accordion-role=group]",
	                toggle: ".accordion-toggle, [data-accordion-role=toggle]",
	                body: ".accordion-body, [data-accordion-role=body]",
	                defaultGroup: ".accordion-group:first-child, [data-accordion-role=group]:first-child",
	                icon: ".icon-accordion-toggle, [data-accordion-role=toggle-icon]",
	                inactiveIconClass: "icon-triangle-right-small",
	                activeIconClass: "icon-triangle-down-small",
	                inactiveIconName: "triangleRightSmall",
	                activeIconName: "triangleDownSmall",
	                activeClass: "active",
	                collapsible: false,
	                speed: 300
	            };

	            _.defaults(this.options, defaults);

	            this.events = {};
	            this.events["click " + this.options.toggle] = "toggle";

	            //setup
	            this.children.iconInactive = new Icon({icon: this.options.inactiveIconName}).render().$el.attr('data-accordion-role', 'toggle-icon');
	            this.children.iconActive = new Icon({icon: this.options.activeIconName}).render().$el.attr('data-accordion-role', 'toggle-icon');

	            //show the default group, hide the others
	            this.hideGroup(this.$(this.options.group), false);
	            this.showGroup(this.$(this.options.defaultGroup), false);
	        },
	        toggle: function (e) {
	            e.preventDefault();
	            var $group = $(e.currentTarget).closest(this.options.group);

	            if (this.options.collapsible) {
	                this.trigger('toggle');
	                this.toggleGroup($group);
	                this.trigger('toggled');
	                return;
	            }

	            //if the group is already active, do nothing.
	            if ($group.hasClass(this.options.activeClass) || $group.attr('data-active')) {
	                return;
	            }

	            this.trigger('toggle');
	            this.switchToGroup($group, true);
	            this.trigger('toggled');
	        },
	        // Aliased for legacy support
	        show: function (group, animate) {
	            this.switchToGroup($(group), animate);
	        },
	        switchToGroup: function ($group, animate) {
	            var $activeGroup = this.$(this.options.group + '.' + this.options.activeClass + ', [data-active][data-accordion-role=group]');

	            //ignore if the item is already active.
	            this.trigger('show');
	            this.trigger('hide');

	            this.hideGroup($activeGroup, animate);
	            this.showGroup($group, animate);
	        },
	        toggleGroup: function($group) {
	            if ($group.hasClass(this.options.activeClass) || $group.attr('data-active')) {
	                this.hideGroup($group);
	            } else {
	                this.showGroup($group);
	            }
	            this.trigger('toggled');
	        },
	        showGroup: function($group, animate) {
	            var that = this,
	                complete = function () {
	                  that.trigger('shown');
	                };

	            if ($group.attr('data-accordion-role') == 'group') {
	                $group.find(this.options.icon).replaceWith(this.children.iconActive.clone());
	                $group.attr('data-active', 'active');
	            } else {
	                    $group.find(this.options.icon).addClass(this.options.activeIconClass).removeClass(this.options.inactiveIconClass);
	                $group.addClass(this.options.activeClass);
	            }

	            if (animate !== false) {
	                $group.find(this.options.body).slideDown({duration:this.options.speed, queue: false, complete:complete});
	            } else {
	                $group.find(this.options.body).show();
	                complete();
	            }
	        },
	        hideGroup: function($group, animate) {
	            var that = this,
	                complete = function () {
	                    that.trigger('hidden');
	                };

	            if ($group.attr('data-accordion-role') == 'group') {
	                $group.find(this.options.icon).replaceWith(this.children.iconInactive.clone());
	                $group.removeAttr('data-active');
	            } else {
	                $group.find(this.options.icon).addClass(this.options.inactiveIconClass).removeClass(this.options.activeIconClass);
	                $group.removeClass(this.options.activeClass);
	            }

	            if (animate !== false) {
	                $group.find(this.options.body).slideUp({duration:this.options.speed, queue: false, complete:complete});
	            } else {
	                $group.find(this.options.body).hide();
	                complete();
	            }
	        }
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/SideNav.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(369);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./SideNav.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./SideNav.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "contrib/backbone":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;//     Backbone.js 1.1.2

	//     (c) 2010-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
	//     Backbone may be freely distributed under the MIT license.
	//     For all details and documentation:
	//     http://backbonejs.org

	(function(root, factory) {

	  // Set up Backbone appropriately for the environment. Start with AMD.
	  if (true) {
	    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__("require/underscore"), __webpack_require__("shim/jquery"), exports], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, $, exports) {
	      // Export global even in AMD case in case this script is loaded with
	      // others that may still expect a global Backbone.
	      root.Backbone = factory(root, exports, _, $);
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

	  // Next for Node.js or CommonJS. jQuery may not be needed as a module.
	  } else if (typeof exports !== 'undefined') {
	    var _ = require('underscore');
	    factory(root, exports, _);

	  // Finally, as a browser global.
	  } else {
	    root.Backbone = factory(root, {}, root._, (root.jQuery || root.Zepto || root.ender || root.$));
	  }

	}(this, function(root, Backbone, _, $) {

	  // Initial Setup
	  // -------------

	  // Save the previous value of the `Backbone` variable, so that it can be
	  // restored later on, if `noConflict` is used.
	  var previousBackbone = root.Backbone;

	  // Create local references to array methods we'll want to use later.
	  var array = [];
	  var push = array.push;
	  var slice = array.slice;
	  var splice = array.splice;

	  // Current version of the library. Keep in sync with `package.json`.
	  Backbone.VERSION = '1.1.2';

	  // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns
	  // the `$` variable.
	  Backbone.$ = $;

	  // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable
	  // to its previous owner. Returns a reference to this Backbone object.
	  Backbone.noConflict = function() {
	    root.Backbone = previousBackbone;
	    return this;
	  };

	  // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option
	  // will fake `"PATCH"`, `"PUT"` and `"DELETE"` requests via the `_method` parameter and
	  // set a `X-Http-Method-Override` header.
	  Backbone.emulateHTTP = false;

	  // Turn on `emulateJSON` to support legacy servers that can't deal with direct
	  // `application/json` requests ... will encode the body as
	  // `application/x-www-form-urlencoded` instead and will send the model in a
	  // form param named `model`.
	  Backbone.emulateJSON = false;

	  // Backbone.Events
	  // ---------------

	  // A module that can be mixed in to *any object* in order to provide it with
	  // custom events. You may bind with `on` or remove with `off` callback
	  // functions to an event; `trigger`-ing an event fires all callbacks in
	  // succession.
	  //
	  //     var object = {};
	  //     _.extend(object, Backbone.Events);
	  //     object.on('expand', function(){ alert('expanded'); });
	  //     object.trigger('expand');
	  //
	  var Events = Backbone.Events = {

	    // Bind an event to a `callback` function. Passing `"all"` will bind
	    // the callback to all events fired.
	    on: function(name, callback, context) {
	      if (!eventsApi(this, 'on', name, [callback, context]) || !callback) return this;
	      this._events || (this._events = {});
	      var events = this._events[name] || (this._events[name] = []);
	      events.push({callback: callback, context: context, ctx: context || this});
	      return this;
	    },

	    // Bind an event to only be triggered a single time. After the first time
	    // the callback is invoked, it will be removed.
	    once: function(name, callback, context) {
	      if (!eventsApi(this, 'once', name, [callback, context]) || !callback) return this;
	      var self = this;
	      var once = _.once(function() {
	        self.off(name, once);
	        callback.apply(this, arguments);
	      });
	      once._callback = callback;
	      return this.on(name, once, context);
	    },

	    // Remove one or many callbacks. If `context` is null, removes all
	    // callbacks with that function. If `callback` is null, removes all
	    // callbacks for the event. If `name` is null, removes all bound
	    // callbacks for all events.
	    off: function(name, callback, context) {
	      var retain, ev, events, names, i, l, j, k;
	      if (!this._events || !eventsApi(this, 'off', name, [callback, context])) return this;
	      if (!name && !callback && !context) {
	        this._events = void 0;
	        return this;
	      }
	      names = name ? [name] : _.keys(this._events);
	      for (i = 0, l = names.length; i < l; i++) {
	        name = names[i];
	        if (events = this._events[name]) {
	          this._events[name] = retain = [];
	          if (callback || context) {
	            for (j = 0, k = events.length; j < k; j++) {
	              ev = events[j];
	              if ((callback && callback !== ev.callback && callback !== ev.callback._callback) ||
	                  (context && context !== ev.context)) {
	                retain.push(ev);
	              }
	            }
	          }
	          if (!retain.length) delete this._events[name];
	        }
	      }

	      return this;
	    },

	    // Trigger one or many events, firing all bound callbacks. Callbacks are
	    // passed the same arguments as `trigger` is, apart from the event name
	    // (unless you're listening on `"all"`, which will cause your callback to
	    // receive the true name of the event as the first argument).
	    trigger: function(name) {
	      if (!this._events) return this;
	      var args = slice.call(arguments, 1);
	      if (!eventsApi(this, 'trigger', name, args)) return this;
	      var events = this._events[name];
	      var allEvents = this._events.all;
	      if (events) triggerEvents(events, args);
	      if (allEvents) triggerEvents(allEvents, arguments);
	      return this;
	    },

	    // Tell this object to stop listening to either specific events ... or
	    // to every object it's currently listening to.
	    stopListening: function(obj, name, callback) {
	      var listeningTo = this._listeningTo;
	      if (!listeningTo) return this;
	      var remove = !name && !callback;
	      if (!callback && typeof name === 'object') callback = this;
	      if (obj) (listeningTo = {})[obj._listenId] = obj;
	      for (var id in listeningTo) {
	        obj = listeningTo[id];
	        obj.off(name, callback, this);
	        if (remove || _.isEmpty(obj._events)) delete this._listeningTo[id];
	      }
	      return this;
	    }

	  };

	  // Regular expression used to split event strings.
	  var eventSplitter = /\s+/;

	  // Implement fancy features of the Events API such as multiple event
	  // names `"change blur"` and jQuery-style event maps `{change: action}`
	  // in terms of the existing API.
	  var eventsApi = function(obj, action, name, rest) {
	    if (!name) return true;

	    // Handle event maps.
	    if (typeof name === 'object') {
	      for (var key in name) {
	        obj[action].apply(obj, [key, name[key]].concat(rest));
	      }
	      return false;
	    }

	    // Handle space separated event names.
	    if (eventSplitter.test(name)) {
	      var names = name.split(eventSplitter);
	      for (var i = 0, l = names.length; i < l; i++) {
	        obj[action].apply(obj, [names[i]].concat(rest));
	      }
	      return false;
	    }

	    return true;
	  };

	  // A difficult-to-believe, but optimized internal dispatch function for
	  // triggering events. Tries to keep the usual cases speedy (most internal
	  // Backbone events have 3 arguments).
	  var triggerEvents = function(events, args) {
	    var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];
	    switch (args.length) {
	      case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;
	      case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;
	      case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;
	      case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;
	      default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;
	    }
	  };

	  var listenMethods = {listenTo: 'on', listenToOnce: 'once'};

	  // Inversion-of-control versions of `on` and `once`. Tell *this* object to
	  // listen to an event in another object ... keeping track of what it's
	  // listening to.
	  _.each(listenMethods, function(implementation, method) {
	    Events[method] = function(obj, name, callback) {
	      var listeningTo = this._listeningTo || (this._listeningTo = {});
	      var id = obj._listenId || (obj._listenId = _.uniqueId('l'));
	      listeningTo[id] = obj;
	      if (!callback && typeof name === 'object') callback = this;
	      obj[implementation](name, callback, this);
	      return this;
	    };
	  });

	  // Aliases for backwards compatibility.
	  Events.bind   = Events.on;
	  Events.unbind = Events.off;

	  // Allow the `Backbone` object to serve as a global event bus, for folks who
	  // want global "pubsub" in a convenient place.
	  _.extend(Backbone, Events);

	  // Backbone.Model
	  // --------------

	  // Backbone **Models** are the basic data object in the framework --
	  // frequently representing a row in a table in a database on your server.
	  // A discrete chunk of data and a bunch of useful, related methods for
	  // performing computations and transformations on that data.

	  // Create a new model with the specified attributes. A client id (`cid`)
	  // is automatically generated and assigned for you.
	  var Model = Backbone.Model = function(attributes, options) {
	    var attrs = attributes || {};
	    options || (options = {});
	    this.cid = _.uniqueId('c');
	    this.attributes = {};
	    if (options.collection) this.collection = options.collection;
	    if (options.parse) attrs = this.parse(attrs, options) || {};
	    attrs = _.defaults({}, attrs, _.result(this, 'defaults'));
	    this.set(attrs, options);
	    this.changed = {};
	    this.initialize.apply(this, arguments);
	  };

	  // Attach all inheritable methods to the Model prototype.
	  _.extend(Model.prototype, Events, {

	    // A hash of attributes whose current and previous value differ.
	    changed: null,

	    // The value returned during the last failed validation.
	    validationError: null,

	    // The default name for the JSON `id` attribute is `"id"`. MongoDB and
	    // CouchDB users may want to set this to `"_id"`.
	    idAttribute: 'id',

	    // Initialize is an empty function by default. Override it with your own
	    // initialization logic.
	    initialize: function(){},

	    // Return a copy of the model's `attributes` object.
	    toJSON: function(options) {
	      return _.clone(this.attributes);
	    },

	    // Proxy `Backbone.sync` by default -- but override this if you need
	    // custom syncing semantics for *this* particular model.
	    sync: function() {
	      return Backbone.sync.apply(this, arguments);
	    },

	    // Get the value of an attribute.
	    get: function(attr) {
	      return this.attributes[attr];
	    },

	    // Get the HTML-escaped value of an attribute.
	    escape: function(attr) {
	      return _.escape(this.get(attr));
	    },

	    // Returns `true` if the attribute contains a value that is not null
	    // or undefined.
	    has: function(attr) {
	      return this.get(attr) != null;
	    },

	    // Set a hash of model attributes on the object, firing `"change"`. This is
	    // the core primitive operation of a model, updating the data and notifying
	    // anyone who needs to know about the change in state. The heart of the beast.
	    set: function(key, val, options) {
	      var attr, attrs, unset, changes, silent, changing, prev, current;
	      if (key == null) return this;

	      // Handle both `"key", value` and `{key: value}` -style arguments.
	      if (typeof key === 'object') {
	        attrs = key;
	        options = val;
	      } else {
	        (attrs = {})[key] = val;
	      }

	      options || (options = {});

	      // Run validation.
	      if (!this._validate(attrs, options)) return false;

	      // Extract attributes and options.
	      unset           = options.unset;
	      silent          = options.silent;
	      changes         = [];
	      changing        = this._changing;
	      this._changing  = true;

	      if (!changing) {
	        this._previousAttributes = _.clone(this.attributes);
	        this.changed = {};
	      }
	      current = this.attributes, prev = this._previousAttributes;

	      // Check for changes of `id`.
	      if (this.idAttribute in attrs) this.id = attrs[this.idAttribute];

	      // For each `set` attribute, update or delete the current value.
	      for (attr in attrs) {
	        val = attrs[attr];
	        if (!_.isEqual(current[attr], val)) changes.push(attr);
	        if (!_.isEqual(prev[attr], val)) {
	          this.changed[attr] = val;
	        } else {
	          delete this.changed[attr];
	        }
	        unset ? delete current[attr] : current[attr] = val;
	      }

	      // Trigger all relevant attribute changes.
	      if (!silent) {
	        if (changes.length) this._pending = options;
	        for (var i = 0, l = changes.length; i < l; i++) {
	          this.trigger('change:' + changes[i], this, current[changes[i]], options);
	        }
	      }

	      // You might be wondering why there's a `while` loop here. Changes can
	      // be recursively nested within `"change"` events.
	      if (changing) return this;
	      if (!silent) {
	        while (this._pending) {
	          options = this._pending;
	          this._pending = false;
	          this.trigger('change', this, options);
	        }
	      }
	      this._pending = false;
	      this._changing = false;
	      return this;
	    },

	    // Remove an attribute from the model, firing `"change"`. `unset` is a noop
	    // if the attribute doesn't exist.
	    unset: function(attr, options) {
	      return this.set(attr, void 0, _.extend({}, options, {unset: true}));
	    },

	    // Clear all attributes on the model, firing `"change"`.
	    clear: function(options) {
	      var attrs = {};
	      for (var key in this.attributes) attrs[key] = void 0;
	      return this.set(attrs, _.extend({}, options, {unset: true}));
	    },

	    // Determine if the model has changed since the last `"change"` event.
	    // If you specify an attribute name, determine if that attribute has changed.
	    hasChanged: function(attr) {
	      if (attr == null) return !_.isEmpty(this.changed);
	      return _.has(this.changed, attr);
	    },

	    // Return an object containing all the attributes that have changed, or
	    // false if there are no changed attributes. Useful for determining what
	    // parts of a view need to be updated and/or what attributes need to be
	    // persisted to the server. Unset attributes will be set to undefined.
	    // You can also pass an attributes object to diff against the model,
	    // determining if there *would be* a change.
	    changedAttributes: function(diff) {
	      if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;
	      var val, changed = false;
	      var old = this._changing ? this._previousAttributes : this.attributes;
	      for (var attr in diff) {
	        if (_.isEqual(old[attr], (val = diff[attr]))) continue;
	        (changed || (changed = {}))[attr] = val;
	      }
	      return changed;
	    },

	    // Get the previous value of an attribute, recorded at the time the last
	    // `"change"` event was fired.
	    previous: function(attr) {
	      if (attr == null || !this._previousAttributes) return null;
	      return this._previousAttributes[attr];
	    },

	    // Get all of the attributes of the model at the time of the previous
	    // `"change"` event.
	    previousAttributes: function() {
	      return _.clone(this._previousAttributes);
	    },

	    // Fetch the model from the server. If the server's representation of the
	    // model differs from its current attributes, they will be overridden,
	    // triggering a `"change"` event.
	    fetch: function(options) {
	      options = options ? _.clone(options) : {};
	      if (options.parse === void 0) options.parse = true;
	      var model = this;
	      var success = options.success;
	      options.success = function(resp) {
	        if (!model.set(model.parse(resp, options), options)) return false;
	        if (success) success(model, resp, options);
	        model.trigger('sync', model, resp, options);
	      };
	      wrapError(this, options);
	      return this.sync('read', this, options);
	    },

	    // Set a hash of model attributes, and sync the model to the server.
	    // If the server returns an attributes hash that differs, the model's
	    // state will be `set` again.
	    save: function(key, val, options) {
	      var attrs, method, xhr, attributes = this.attributes;

	      // Handle both `"key", value` and `{key: value}` -style arguments.
	      if (key == null || typeof key === 'object') {
	        attrs = key;
	        options = val;
	      } else {
	        (attrs = {})[key] = val;
	      }

	      options = _.extend({validate: true}, options);

	      // If we're not waiting and attributes exist, save acts as
	      // `set(attr).save(null, opts)` with validation. Otherwise, check if
	      // the model will be valid when the attributes, if any, are set.
	      if (attrs && !options.wait) {
	        if (!this.set(attrs, options)) return false;
	      } else {
	        if (!this._validate(attrs, options)) return false;
	      }

	      // Set temporary attributes if `{wait: true}`.
	      if (attrs && options.wait) {
	        this.attributes = _.extend({}, attributes, attrs);
	      }

	      // After a successful server-side save, the client is (optionally)
	      // updated with the server-side state.
	      if (options.parse === void 0) options.parse = true;
	      var model = this;
	      var success = options.success;
	      options.success = function(resp) {
	        // Ensure attributes are restored during synchronous saves.
	        model.attributes = attributes;
	        var serverAttrs = model.parse(resp, options);
	        if (options.wait) serverAttrs = _.extend(attrs || {}, serverAttrs);
	        if (_.isObject(serverAttrs) && !model.set(serverAttrs, options)) {
	          return false;
	        }
	        if (success) success(model, resp, options);
	        model.trigger('sync', model, resp, options);
	      };
	      wrapError(this, options);

	      method = this.isNew() ? 'create' : (options.patch ? 'patch' : 'update');
	      if (method === 'patch') options.attrs = attrs;
	      xhr = this.sync(method, this, options);

	      // Restore attributes.
	      if (attrs && options.wait) this.attributes = attributes;

	      return xhr;
	    },

	    // Destroy this model on the server if it was already persisted.
	    // Optimistically removes the model from its collection, if it has one.
	    // If `wait: true` is passed, waits for the server to respond before removal.
	    destroy: function(options) {
	      options = options ? _.clone(options) : {};
	      var model = this;
	      var success = options.success;

	      var destroy = function() {
	        model.trigger('destroy', model, model.collection, options);
	      };

	      options.success = function(resp) {
	        if (options.wait || model.isNew()) destroy();
	        if (success) success(model, resp, options);
	        if (!model.isNew()) model.trigger('sync', model, resp, options);
	      };

	      if (this.isNew()) {
	        options.success();
	        return false;
	      }
	      wrapError(this, options);

	      var xhr = this.sync('delete', this, options);
	      if (!options.wait) destroy();
	      return xhr;
	    },

	    // Default URL for the model's representation on the server -- if you're
	    // using Backbone's restful methods, override this to change the endpoint
	    // that will be called.
	    url: function() {
	      var base =
	        _.result(this, 'urlRoot') ||
	        _.result(this.collection, 'url') ||
	        urlError();
	      if (this.isNew()) return base;
	      return base.replace(/([^\/])$/, '$1/') + encodeURIComponent(this.id);
	    },

	    // **parse** converts a response into the hash of attributes to be `set` on
	    // the model. The default implementation is just to pass the response along.
	    parse: function(resp, options) {
	      return resp;
	    },

	    // Create a new model with identical attributes to this one.
	    clone: function() {
	      return new this.constructor(this.attributes);
	    },

	    // A model is new if it has never been saved to the server, and lacks an id.
	    isNew: function() {
	      return !this.has(this.idAttribute);
	    },

	    // Check if the model is currently in a valid state.
	    isValid: function(options) {
	      return this._validate({}, _.extend(options || {}, { validate: true }));
	    },

	    // Run validation against the next complete set of model attributes,
	    // returning `true` if all is well. Otherwise, fire an `"invalid"` event.
	    _validate: function(attrs, options) {
	      if (!options.validate || !this.validate) return true;
	      attrs = _.extend({}, this.attributes, attrs);
	      var error = this.validationError = this.validate(attrs, options) || null;
	      if (!error) return true;
	      this.trigger('invalid', this, error, _.extend(options, {validationError: error}));
	      return false;
	    }

	  });

	  // Underscore methods that we want to implement on the Model.
	  var modelMethods = ['keys', 'values', 'pairs', 'invert', 'pick', 'omit'];

	  // Mix in each Underscore method as a proxy to `Model#attributes`.
	  _.each(modelMethods, function(method) {
	    Model.prototype[method] = function() {
	      var args = slice.call(arguments);
	      args.unshift(this.attributes);
	      return _[method].apply(_, args);
	    };
	  });

	  // Backbone.Collection
	  // -------------------

	  // If models tend to represent a single row of data, a Backbone Collection is
	  // more analagous to a table full of data ... or a small slice or page of that
	  // table, or a collection of rows that belong together for a particular reason
	  // -- all of the messages in this particular folder, all of the documents
	  // belonging to this particular author, and so on. Collections maintain
	  // indexes of their models, both in order, and for lookup by `id`.

	  // Create a new **Collection**, perhaps to contain a specific type of `model`.
	  // If a `comparator` is specified, the Collection will maintain
	  // its models in sort order, as they're added and removed.
	  var Collection = Backbone.Collection = function(models, options) {
	    options || (options = {});
	    if (options.model) this.model = options.model;
	    if (options.comparator !== void 0) this.comparator = options.comparator;
	    this._reset();
	    this.initialize.apply(this, arguments);
	    if (models) this.reset(models, _.extend({silent: true}, options));
	  };

	  // Default options for `Collection#set`.
	  var setOptions = {add: true, remove: true, merge: true};
	  var addOptions = {add: true, remove: false};

	  // Define the Collection's inheritable methods.
	  _.extend(Collection.prototype, Events, {

	    // The default model for a collection is just a **Backbone.Model**.
	    // This should be overridden in most cases.
	    model: Model,

	    // Initialize is an empty function by default. Override it with your own
	    // initialization logic.
	    initialize: function(){},

	    // The JSON representation of a Collection is an array of the
	    // models' attributes.
	    toJSON: function(options) {
	      return this.map(function(model){ return model.toJSON(options); });
	    },

	    // Proxy `Backbone.sync` by default.
	    sync: function() {
	      return Backbone.sync.apply(this, arguments);
	    },

	    // Add a model, or list of models to the set.
	    add: function(models, options) {
	      return this.set(models, _.extend({merge: false}, options, addOptions));
	    },

	    // Remove a model, or a list of models from the set.
	    remove: function(models, options) {
	      var singular = !_.isArray(models);
	      models = singular ? [models] : _.clone(models);
	      options || (options = {});
	      var i, l, index, model;
	      for (i = 0, l = models.length; i < l; i++) {
	        model = models[i] = this.get(models[i]);
	        if (!model) continue;
	        delete this._byId[model.id];
	        delete this._byId[model.cid];
	        index = this.indexOf(model);
	        this.models.splice(index, 1);
	        this.length--;
	        if (!options.silent) {
	          options.index = index;
	          model.trigger('remove', model, this, options);
	        }
	        this._removeReference(model, options);
	      }
	      return singular ? models[0] : models;
	    },

	    // Update a collection by `set`-ing a new list of models, adding new ones,
	    // removing models that are no longer present, and merging models that
	    // already exist in the collection, as necessary. Similar to **Model#set**,
	    // the core operation for updating the data contained by the collection.
	    set: function(models, options) {
	      options = _.defaults({}, options, setOptions);
	      if (options.parse) models = this.parse(models, options);
	      var singular = !_.isArray(models);
	      models = singular ? (models ? [models] : []) : _.clone(models);
	      var i, l, id, model, attrs, existing, sort;
	      var at = options.at;
	      var targetModel = this.model;
	      var sortable = this.comparator && (at == null) && options.sort !== false;
	      var sortAttr = _.isString(this.comparator) ? this.comparator : null;
	      var toAdd = [], toRemove = [], modelMap = {};
	      var add = options.add, merge = options.merge, remove = options.remove;
	      var order = !sortable && add && remove ? [] : false;

	      // Turn bare objects into model references, and prevent invalid models
	      // from being added.
	      for (i = 0, l = models.length; i < l; i++) {
	        attrs = models[i] || {};
	        if (attrs instanceof Model) {
	          id = model = attrs;
	        } else {
	          id = attrs[targetModel.prototype.idAttribute || 'id'];
	        }

	        // If a duplicate is found, prevent it from being added and
	        // optionally merge it into the existing model.
	        if (existing = this.get(id)) {
	          if (remove) modelMap[existing.cid] = true;
	          if (merge) {
	            attrs = attrs === model ? model.attributes : attrs;
	            if (options.parse) attrs = existing.parse(attrs, options);
	            existing.set(attrs, options);
	            if (sortable && !sort && existing.hasChanged(sortAttr)) sort = true;
	          }
	          models[i] = existing;

	        // If this is a new, valid model, push it to the `toAdd` list.
	        } else if (add) {
	          model = models[i] = this._prepareModel(attrs, options);
	          if (!model) continue;
	          toAdd.push(model);
	          this._addReference(model, options);
	        }

	        // Do not add multiple models with the same `id`.
	        model = existing || model;
	        if (order && (model.isNew() || !modelMap[model.id])) order.push(model);
	        modelMap[model.id] = true;
	      }

	      // Remove nonexistent models if appropriate.
	      if (remove) {
	        for (i = 0, l = this.length; i < l; ++i) {
	          if (!modelMap[(model = this.models[i]).cid]) toRemove.push(model);
	        }
	        if (toRemove.length) this.remove(toRemove, options);
	      }

	      // See if sorting is needed, update `length` and splice in new models.
	      if (toAdd.length || (order && order.length)) {
	        if (sortable) sort = true;
	        this.length += toAdd.length;
	        if (at != null) {
	          for (i = 0, l = toAdd.length; i < l; i++) {
	            this.models.splice(at + i, 0, toAdd[i]);
	          }
	        } else {
	          if (order) this.models.length = 0;
	          var orderedModels = order || toAdd;
	          for (i = 0, l = orderedModels.length; i < l; i++) {
	            this.models.push(orderedModels[i]);
	          }
	        }
	      }

	      // Silently sort the collection if appropriate.
	      if (sort) this.sort({silent: true});

	      // Unless silenced, it's time to fire all appropriate add/sort events.
	      if (!options.silent) {
	        for (i = 0, l = toAdd.length; i < l; i++) {
	          (model = toAdd[i]).trigger('add', model, this, options);
	        }
	        if (sort || (order && order.length)) this.trigger('sort', this, options);
	      }

	      // Return the added (or merged) model (or models).
	      return singular ? models[0] : models;
	    },

	    // When you have more items than you want to add or remove individually,
	    // you can reset the entire set with a new list of models, without firing
	    // any granular `add` or `remove` events. Fires `reset` when finished.
	    // Useful for bulk operations and optimizations.
	    reset: function(models, options) {
	      options || (options = {});
	      for (var i = 0, l = this.models.length; i < l; i++) {
	        this._removeReference(this.models[i], options);
	      }
	      options.previousModels = this.models;
	      this._reset();
	      models = this.add(models, _.extend({silent: true}, options));
	      if (!options.silent) this.trigger('reset', this, options);
	      return models;
	    },

	    // Add a model to the end of the collection.
	    push: function(model, options) {
	      return this.add(model, _.extend({at: this.length}, options));
	    },

	    // Remove a model from the end of the collection.
	    pop: function(options) {
	      var model = this.at(this.length - 1);
	      this.remove(model, options);
	      return model;
	    },

	    // Add a model to the beginning of the collection.
	    unshift: function(model, options) {
	      return this.add(model, _.extend({at: 0}, options));
	    },

	    // Remove a model from the beginning of the collection.
	    shift: function(options) {
	      var model = this.at(0);
	      this.remove(model, options);
	      return model;
	    },

	    // Slice out a sub-array of models from the collection.
	    slice: function() {
	      return slice.apply(this.models, arguments);
	    },

	    // Get a model from the set by id.
	    get: function(obj) {
	      if (obj == null) return void 0;
	      return this._byId[obj] || this._byId[obj.id] || this._byId[obj.cid];
	    },

	    // Get the model at the given index.
	    at: function(index) {
	      return this.models[index];
	    },

	    // Return models with matching attributes. Useful for simple cases of
	    // `filter`.
	    where: function(attrs, first) {
	      if (_.isEmpty(attrs)) return first ? void 0 : [];
	      return this[first ? 'find' : 'filter'](function(model) {
	        for (var key in attrs) {
	          if (attrs[key] !== model.get(key)) return false;
	        }
	        return true;
	      });
	    },

	    // Return the first model with matching attributes. Useful for simple cases
	    // of `find`.
	    findWhere: function(attrs) {
	      return this.where(attrs, true);
	    },

	    // Force the collection to re-sort itself. You don't need to call this under
	    // normal circumstances, as the set will maintain sort order as each item
	    // is added.
	    sort: function(options) {
	      if (!this.comparator) throw new Error('Cannot sort a set without a comparator');
	      options || (options = {});

	      // Run sort based on type of `comparator`.
	      if (_.isString(this.comparator) || this.comparator.length === 1) {
	        this.models = this.sortBy(this.comparator, this);
	      } else {
	        this.models.sort(_.bind(this.comparator, this));
	      }

	      if (!options.silent) this.trigger('sort', this, options);
	      return this;
	    },

	    // Pluck an attribute from each model in the collection.
	    pluck: function(attr) {
	      return _.invoke(this.models, 'get', attr);
	    },

	    // Fetch the default set of models for this collection, resetting the
	    // collection when they arrive. If `reset: true` is passed, the response
	    // data will be passed through the `reset` method instead of `set`.
	    fetch: function(options) {
	      options = options ? _.clone(options) : {};
	      if (options.parse === void 0) options.parse = true;
	      var success = options.success;
	      var collection = this;
	      options.success = function(resp) {
	        var method = options.reset ? 'reset' : 'set';
	        collection[method](resp, options);
	        if (success) success(collection, resp, options);
	        collection.trigger('sync', collection, resp, options);
	      };
	      wrapError(this, options);
	      return this.sync('read', this, options);
	    },

	    // Create a new instance of a model in this collection. Add the model to the
	    // collection immediately, unless `wait: true` is passed, in which case we
	    // wait for the server to agree.
	    create: function(model, options) {
	      options = options ? _.clone(options) : {};
	      if (!(model = this._prepareModel(model, options))) return false;
	      if (!options.wait) this.add(model, options);
	      var collection = this;
	      var success = options.success;
	      options.success = function(model, resp) {
	        if (options.wait) collection.add(model, options);
	        if (success) success(model, resp, options);
	      };
	      model.save(null, options);
	      return model;
	    },

	    // **parse** converts a response into a list of models to be added to the
	    // collection. The default implementation is just to pass it through.
	    parse: function(resp, options) {
	      return resp;
	    },

	    // Create a new collection with an identical list of models as this one.
	    clone: function() {
	      return new this.constructor(this.models);
	    },

	    // Private method to reset all internal state. Called when the collection
	    // is first initialized or reset.
	    _reset: function() {
	      this.length = 0;
	      this.models = [];
	      this._byId  = {};
	    },

	    // Prepare a hash of attributes (or other model) to be added to this
	    // collection.
	    _prepareModel: function(attrs, options) {
	      if (attrs instanceof Model) return attrs;
	      options = options ? _.clone(options) : {};
	      options.collection = this;
	      var model = new this.model(attrs, options);
	      if (!model.validationError) return model;
	      this.trigger('invalid', this, model.validationError, options);
	      return false;
	    },

	    // Internal method to create a model's ties to a collection.
	    _addReference: function(model, options) {
	      this._byId[model.cid] = model;
	      if (model.id != null) this._byId[model.id] = model;
	      if (!model.collection) model.collection = this;
	      model.on('all', this._onModelEvent, this);
	    },

	    // Internal method to sever a model's ties to a collection.
	    _removeReference: function(model, options) {
	      if (this === model.collection) delete model.collection;
	      model.off('all', this._onModelEvent, this);
	    },

	    // Internal method called every time a model in the set fires an event.
	    // Sets need to update their indexes when models change ids. All other
	    // events simply proxy through. "add" and "remove" events that originate
	    // in other collections are ignored.
	    _onModelEvent: function(event, model, collection, options) {
	      if ((event === 'add' || event === 'remove') && collection !== this) return;
	      if (event === 'destroy') this.remove(model, options);
	      if (model && event === 'change:' + model.idAttribute) {
	        delete this._byId[model.previous(model.idAttribute)];
	        if (model.id != null) this._byId[model.id] = model;
	      }
	      this.trigger.apply(this, arguments);
	    }

	  });

	  // Underscore methods that we want to implement on the Collection.
	  // 90% of the core usefulness of Backbone Collections is actually implemented
	  // right here:
	  var methods = ['forEach', 'each', 'map', 'collect', 'reduce', 'foldl',
	    'inject', 'reduceRight', 'foldr', 'find', 'detect', 'filter', 'select',
	    'reject', 'every', 'all', 'some', 'any', 'include', 'contains', 'invoke',
	    'max', 'min', 'toArray', 'size', 'first', 'head', 'take', 'initial', 'rest',
	    'tail', 'drop', 'last', 'without', 'difference', 'indexOf', 'shuffle',
	    'lastIndexOf', 'isEmpty', 'chain', 'sample'];

	  // Mix in each Underscore method as a proxy to `Collection#models`.
	  _.each(methods, function(method) {
	    Collection.prototype[method] = function() {
	      var args = slice.call(arguments);
	      args.unshift(this.models);
	      return _[method].apply(_, args);
	    };
	  });

	  // Underscore methods that take a property name as an argument.
	  var attributeMethods = ['groupBy', 'countBy', 'sortBy', 'indexBy'];

	  // Use attributes instead of properties.
	  _.each(attributeMethods, function(method) {
	    Collection.prototype[method] = function(value, context) {
	      var iterator = _.isFunction(value) ? value : function(model) {
	        return model.get(value);
	      };
	      return _[method](this.models, iterator, context);
	    };
	  });

	  // Backbone.View
	  // -------------

	  // Backbone Views are almost more convention than they are actual code. A View
	  // is simply a JavaScript object that represents a logical chunk of UI in the
	  // DOM. This might be a single item, an entire list, a sidebar or panel, or
	  // even the surrounding frame which wraps your whole app. Defining a chunk of
	  // UI as a **View** allows you to define your DOM events declaratively, without
	  // having to worry about render order ... and makes it easy for the view to
	  // react to specific changes in the state of your models.

	  // Creating a Backbone.View creates its initial element outside of the DOM,
	  // if an existing element is not provided...
	  var View = Backbone.View = function(options) {
	    this.cid = _.uniqueId('view');
	    options || (options = {});
	    _.extend(this, _.pick(options, viewOptions));
	    this._ensureElement();
	    this.initialize.apply(this, arguments);
	    this.delegateEvents();
	  };

	  // Cached regex to split keys for `delegate`.
	  var delegateEventSplitter = /^(\S+)\s*(.*)$/;

	  // List of view options to be merged as properties.
	  var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];

	  // Set up all inheritable **Backbone.View** properties and methods.
	  _.extend(View.prototype, Events, {

	    // The default `tagName` of a View's element is `"div"`.
	    tagName: 'div',

	    // jQuery delegate for element lookup, scoped to DOM elements within the
	    // current view. This should be preferred to global lookups where possible.
	    $: function(selector) {
	      return this.$el.find(selector);
	    },

	    // Initialize is an empty function by default. Override it with your own
	    // initialization logic.
	    initialize: function(){},

	    // **render** is the core function that your view should override, in order
	    // to populate its element (`this.el`), with the appropriate HTML. The
	    // convention is for **render** to always return `this`.
	    render: function() {
	      return this;
	    },

	    // Remove this view by taking the element out of the DOM, and removing any
	    // applicable Backbone.Events listeners.
	    remove: function() {
	      this.$el.remove();
	      this.stopListening();
	      return this;
	    },

	    // Change the view's element (`this.el` property), including event
	    // re-delegation.
	    setElement: function(element, delegate) {
	      if (this.$el) this.undelegateEvents();
	      this.$el = element instanceof Backbone.$ ? element : Backbone.$(element);
	      this.el = this.$el[0];
	      if (delegate !== false) this.delegateEvents();
	      return this;
	    },

	    // Set callbacks, where `this.events` is a hash of
	    //
	    // *{"event selector": "callback"}*
	    //
	    //     {
	    //       'mousedown .title':  'edit',
	    //       'click .button':     'save',
	    //       'click .open':       function(e) { ... }
	    //     }
	    //
	    // pairs. Callbacks will be bound to the view, with `this` set properly.
	    // Uses event delegation for efficiency.
	    // Omitting the selector binds the event to `this.el`.
	    // This only works for delegate-able events: not `focus`, `blur`, and
	    // not `change`, `submit`, and `reset` in Internet Explorer.
	    delegateEvents: function(events) {
	      if (!(events || (events = _.result(this, 'events')))) return this;
	      this.undelegateEvents();
	      for (var key in events) {
	        var method = events[key];
	        if (!_.isFunction(method)) method = this[events[key]];
	        if (!method) continue;

	        var match = key.match(delegateEventSplitter);
	        var eventName = match[1], selector = match[2];
	        method = _.bind(method, this);
	        eventName += '.delegateEvents' + this.cid;
	        if (selector === '') {
	          this.$el.on(eventName, method);
	        } else {
	          this.$el.on(eventName, selector, method);
	        }
	      }
	      return this;
	    },

	    // Clears all callbacks previously bound to the view with `delegateEvents`.
	    // You usually don't need to use this, but may wish to if you have multiple
	    // Backbone views attached to the same DOM element.
	    undelegateEvents: function() {
	      this.$el.off('.delegateEvents' + this.cid);
	      return this;
	    },

	    // Ensure that the View has a DOM element to render into.
	    // If `this.el` is a string, pass it through `$()`, take the first
	    // matching element, and re-assign it to `el`. Otherwise, create
	    // an element from the `id`, `className` and `tagName` properties.
	    _ensureElement: function() {
	      if (!this.el) {
	        var attrs = _.extend({}, _.result(this, 'attributes'));
	        if (this.id) attrs.id = _.result(this, 'id');
	        if (this.className) attrs['class'] = _.result(this, 'className');
	        var $el = Backbone.$('<' + _.result(this, 'tagName') + '>').attr(attrs);
	        this.setElement($el, false);
	      } else {
	        this.setElement(_.result(this, 'el'), false);
	      }
	    }

	  });

	  // Backbone.sync
	  // -------------

	  // Override this function to change the manner in which Backbone persists
	  // models to the server. You will be passed the type of request, and the
	  // model in question. By default, makes a RESTful Ajax request
	  // to the model's `url()`. Some possible customizations could be:
	  //
	  // * Use `setTimeout` to batch rapid-fire updates into a single request.
	  // * Send up the models as XML instead of JSON.
	  // * Persist models via WebSockets instead of Ajax.
	  //
	  // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests
	  // as `POST`, with a `_method` parameter containing the true HTTP method,
	  // as well as all requests with the body as `application/x-www-form-urlencoded`
	  // instead of `application/json` with the model in a param named `model`.
	  // Useful when interfacing with server-side languages like **PHP** that make
	  // it difficult to read the body of `PUT` requests.
	  Backbone.sync = function(method, model, options) {
	    var type = methodMap[method];

	    // Default options, unless specified.
	    _.defaults(options || (options = {}), {
	      emulateHTTP: Backbone.emulateHTTP,
	      emulateJSON: Backbone.emulateJSON
	    });

	    // Default JSON-request options.
	    var params = {type: type, dataType: 'json'};

	    // Ensure that we have a URL.
	    if (!options.url) {
	      params.url = _.result(model, 'url') || urlError();
	    }

	    // Ensure that we have the appropriate request data.
	    if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {
	      params.contentType = 'application/json';
	      params.data = JSON.stringify(options.attrs || model.toJSON(options));
	    }

	    // For older servers, emulate JSON by encoding the request into an HTML-form.
	    if (options.emulateJSON) {
	      params.contentType = 'application/x-www-form-urlencoded';
	      params.data = params.data ? {model: params.data} : {};
	    }

	    // For older servers, emulate HTTP by mimicking the HTTP method with `_method`
	    // And an `X-HTTP-Method-Override` header.
	    if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {
	      params.type = 'POST';
	      if (options.emulateJSON) params.data._method = type;
	      var beforeSend = options.beforeSend;
	      options.beforeSend = function(xhr) {
	        xhr.setRequestHeader('X-HTTP-Method-Override', type);
	        if (beforeSend) return beforeSend.apply(this, arguments);
	      };
	    }

	    // Don't process data on a non-GET request.
	    if (params.type !== 'GET' && !options.emulateJSON) {
	      params.processData = false;
	    }

	    // If we're sending a `PATCH` request, and we're in an old Internet Explorer
	    // that still has ActiveX enabled by default, override jQuery to use that
	    // for XHR instead. Remove this line when jQuery supports `PATCH` on IE8.
	    if (params.type === 'PATCH' && noXhrPatch) {
	      params.xhr = function() {
	        return new ActiveXObject("Microsoft.XMLHTTP");
	      };
	    }

	    // Make the request, allowing the user to override any Ajax options.
	    var xhr = options.xhr = Backbone.ajax(_.extend(params, options));
	    model.trigger('request', model, xhr, options);
	    return xhr;
	  };

	  var noXhrPatch =
	    typeof window !== 'undefined' && !!window.ActiveXObject &&
	      !(window.XMLHttpRequest && (new XMLHttpRequest).dispatchEvent);

	  // Map from CRUD to HTTP for our default `Backbone.sync` implementation.
	  var methodMap = {
	    'create': 'POST',
	    'update': 'PUT',
	    'patch':  'PATCH',
	    'delete': 'DELETE',
	    'read':   'GET'
	  };

	  // Set the default implementation of `Backbone.ajax` to proxy through to `$`.
	  // Override this if you'd like to use a different library.
	  Backbone.ajax = function() {
	    return Backbone.$.ajax.apply(Backbone.$, arguments);
	  };

	  // Backbone.Router
	  // ---------------

	  // Routers map faux-URLs to actions, and fire events when routes are
	  // matched. Creating a new one sets its `routes` hash, if not set statically.
	  var Router = Backbone.Router = function(options) {
	    options || (options = {});
	    if (options.routes) this.routes = options.routes;
	    this._bindRoutes();
	    this.initialize.apply(this, arguments);
	  };

	  // Cached regular expressions for matching named param parts and splatted
	  // parts of route strings.
	  var optionalParam = /\((.*?)\)/g;
	  var namedParam    = /(\(\?)?:\w+/g;
	  var splatParam    = /\*\w+/g;
	  var escapeRegExp  = /[\-{}\[\]+?.,\\\^$|#\s]/g;

	  // Set up all inheritable **Backbone.Router** properties and methods.
	  _.extend(Router.prototype, Events, {

	    // Initialize is an empty function by default. Override it with your own
	    // initialization logic.
	    initialize: function(){},

	    // Manually bind a single named route to a callback. For example:
	    //
	    //     this.route('search/:query/p:num', 'search', function(query, num) {
	    //       ...
	    //     });
	    //
	    route: function(route, name, callback) {
	      if (!_.isRegExp(route)) route = this._routeToRegExp(route);
	      if (_.isFunction(name)) {
	        callback = name;
	        name = '';
	      }
	      if (!callback) callback = this[name];
	      var router = this;
	      Backbone.history.route(route, function(fragment) {
	        var args = router._extractParameters(route, fragment);
	        router.execute(callback, args);
	        router.trigger.apply(router, ['route:' + name].concat(args));
	        router.trigger('route', name, args);
	        Backbone.history.trigger('route', router, name, args);
	      });
	      return this;
	    },

	    // Execute a route handler with the provided parameters.  This is an
	    // excellent place to do pre-route setup or post-route cleanup.
	    execute: function(callback, args) {
	      if (callback) callback.apply(this, args);
	    },

	    // Simple proxy to `Backbone.history` to save a fragment into the history.
	    navigate: function(fragment, options) {
	      Backbone.history.navigate(fragment, options);
	      return this;
	    },

	    // Bind all defined routes to `Backbone.history`. We have to reverse the
	    // order of the routes here to support behavior where the most general
	    // routes can be defined at the bottom of the route map.
	    _bindRoutes: function() {
	      if (!this.routes) return;
	      this.routes = _.result(this, 'routes');
	      var route, routes = _.keys(this.routes);
	      while ((route = routes.pop()) != null) {
	        this.route(route, this.routes[route]);
	      }
	    },

	    // Convert a route string into a regular expression, suitable for matching
	    // against the current location hash.
	    _routeToRegExp: function(route) {
	      route = route.replace(escapeRegExp, '\\$&')
	                   .replace(optionalParam, '(?:$1)?')
	                   .replace(namedParam, function(match, optional) {
	                     return optional ? match : '([^/?]+)';
	                   })
	                   .replace(splatParam, '([^?]*?)');
	      return new RegExp('^' + route + '(?:\\?([\\s\\S]*))?$');
	    },

	    // Given a route, and a URL fragment that it matches, return the array of
	    // extracted decoded parameters. Empty or unmatched parameters will be
	    // treated as `null` to normalize cross-browser behavior.
	    _extractParameters: function(route, fragment) {
	      var params = route.exec(fragment).slice(1);
	      return _.map(params, function(param, i) {
	        // Don't decode the search params.
	        if (i === params.length - 1) return param || null;
	        return param ? decodeURIComponent(param) : null;
	      });
	    }

	  });

	  // Backbone.History
	  // ----------------

	  // Handles cross-browser history management, based on either
	  // [pushState](http://diveintohtml5.info/history.html) and real URLs, or
	  // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)
	  // and URL fragments. If the browser supports neither (old IE, natch),
	  // falls back to polling.
	  var History = Backbone.History = function() {
	    this.handlers = [];
	    _.bindAll(this, 'checkUrl');

	    // Ensure that `History` can be used outside of the browser.
	    if (typeof window !== 'undefined') {
	      this.location = window.location;
	      this.history = window.history;
	    }
	  };

	  // Cached regex for stripping a leading hash/slash and trailing space.
	  var routeStripper = /^[#\/]|\s+$/g;

	  // Cached regex for stripping leading and trailing slashes.
	  var rootStripper = /^\/+|\/+$/g;

	  // Cached regex for detecting MSIE.
	  var isExplorer = /msie [\w.]+/;

	  // Cached regex for removing a trailing slash.
	  var trailingSlash = /\/$/;

	  // Cached regex for stripping urls of hash.
	  var pathStripper = /#.*$/;

	  // Has the history handling already been started?
	  History.started = false;

	  // Set up all inheritable **Backbone.History** properties and methods.
	  _.extend(History.prototype, Events, {

	    // The default interval to poll for hash changes, if necessary, is
	    // twenty times a second.
	    interval: 50,

	    // Are we at the app root?
	    atRoot: function() {
	      return this.location.pathname.replace(/[^\/]$/, '$&/') === this.root;
	    },

	    // Gets the true hash value. Cannot use location.hash directly due to bug
	    // in Firefox where location.hash will always be decoded.
	    getHash: function(window) {
	      var match = (window || this).location.href.match(/#(.*)$/);
	      return match ? match[1] : '';
	    },

	    // Get the cross-browser normalized URL fragment, either from the URL,
	    // the hash, or the override.
	    getFragment: function(fragment, forcePushState) {
	      if (fragment == null) {
	        if (this._hasPushState || !this._wantsHashChange || forcePushState) {
	          fragment = decodeURI(this.location.pathname + this.location.search);
	          var root = this.root.replace(trailingSlash, '');
	          if (!fragment.indexOf(root)) fragment = fragment.slice(root.length);
	        } else {
	          fragment = this.getHash();
	        }
	      }
	      return fragment.replace(routeStripper, '');
	    },

	    // Start the hash change handling, returning `true` if the current URL matches
	    // an existing route, and `false` otherwise.
	    start: function(options) {
	      if (History.started) throw new Error("Backbone.history has already been started");
	      History.started = true;

	      // Figure out the initial configuration. Do we need an iframe?
	      // Is pushState desired ... is it available?
	      this.options          = _.extend({root: '/'}, this.options, options);
	      this.root             = this.options.root;
	      this._wantsHashChange = this.options.hashChange !== false;
	      this._wantsPushState  = !!this.options.pushState;
	      this._hasPushState    = !!(this.options.pushState && this.history && this.history.pushState);
	      var fragment          = this.getFragment();
	      var docMode           = document.documentMode;
	      var oldIE             = (isExplorer.exec(navigator.userAgent.toLowerCase()) && (!docMode || docMode <= 7));

	      // Normalize root to always include a leading and trailing slash.
	      this.root = ('/' + this.root + '/').replace(rootStripper, '/');

	      if (oldIE && this._wantsHashChange) {
	        var frame = Backbone.$('<iframe src="javascript:0" tabindex="-1">');
	        this.iframe = frame.hide().appendTo('body')[0].contentWindow;
	        this.navigate(fragment);
	      }

	      // Depending on whether we're using pushState or hashes, and whether
	      // 'onhashchange' is supported, determine how we check the URL state.
	      if (this._hasPushState) {
	        Backbone.$(window).on('popstate', this.checkUrl);
	      } else if (this._wantsHashChange && ('onhashchange' in window) && !oldIE) {
	        Backbone.$(window).on('hashchange', this.checkUrl);
	      } else if (this._wantsHashChange) {
	        this._checkUrlInterval = setInterval(this.checkUrl, this.interval);
	      }

	      // Determine if we need to change the base url, for a pushState link
	      // opened by a non-pushState browser.
	      this.fragment = fragment;
	      var loc = this.location;

	      // Transition from hashChange to pushState or vice versa if both are
	      // requested.
	      if (this._wantsHashChange && this._wantsPushState) {

	        // If we've started off with a route from a `pushState`-enabled
	        // browser, but we're currently in a browser that doesn't support it...
	        if (!this._hasPushState && !this.atRoot()) {
	          this.fragment = this.getFragment(null, true);
	          this.location.replace(this.root + '#' + this.fragment);
	          // Return immediately as browser will do redirect to new url
	          return true;

	        // Or if we've started out with a hash-based route, but we're currently
	        // in a browser where it could be `pushState`-based instead...
	        } else if (this._hasPushState && this.atRoot() && loc.hash) {
	          this.fragment = this.getHash().replace(routeStripper, '');
	          this.history.replaceState({}, document.title, this.root + this.fragment);
	        }

	      }

	      if (!this.options.silent) return this.loadUrl();
	    },

	    // Disable Backbone.history, perhaps temporarily. Not useful in a real app,
	    // but possibly useful for unit testing Routers.
	    stop: function() {
	      Backbone.$(window).off('popstate', this.checkUrl).off('hashchange', this.checkUrl);
	      if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);
	      History.started = false;
	    },

	    // Add a route to be tested when the fragment changes. Routes added later
	    // may override previous routes.
	    route: function(route, callback) {
	      this.handlers.unshift({route: route, callback: callback});
	    },

	    // Checks the current URL to see if it has changed, and if it has,
	    // calls `loadUrl`, normalizing across the hidden iframe.
	    checkUrl: function(e) {
	      var current = this.getFragment();
	      if (current === this.fragment && this.iframe) {
	        current = this.getFragment(this.getHash(this.iframe));
	      }
	      if (current === this.fragment) return false;
	      if (this.iframe) this.navigate(current);
	      this.loadUrl();
	    },

	    // Attempt to load the current URL fragment. If a route succeeds with a
	    // match, returns `true`. If no defined routes matches the fragment,
	    // returns `false`.
	    loadUrl: function(fragment) {
	      fragment = this.fragment = this.getFragment(fragment);
	      return _.any(this.handlers, function(handler) {
	        if (handler.route.test(fragment)) {
	          handler.callback(fragment);
	          return true;
	        }
	      });
	    },

	    // Save a fragment into the hash history, or replace the URL state if the
	    // 'replace' option is passed. You are responsible for properly URL-encoding
	    // the fragment in advance.
	    //
	    // The options object can contain `trigger: true` if you wish to have the
	    // route callback be fired (not usually desirable), or `replace: true`, if
	    // you wish to modify the current URL without adding an entry to the history.
	    navigate: function(fragment, options) {
	      if (!History.started) return false;
	      if (!options || options === true) options = {trigger: !!options};

	      var url = this.root + (fragment = this.getFragment(fragment || ''));

	      // Strip the hash for matching.
	      fragment = fragment.replace(pathStripper, '');

	      if (this.fragment === fragment) return;
	      this.fragment = fragment;

	      // Don't include a trailing slash on the root.
	      if (fragment === '' && url !== '/') url = url.slice(0, -1);

	      // If pushState is available, we use it to set the fragment as a real URL.
	      if (this._hasPushState) {
	        this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);

	      // If hash changes haven't been explicitly disabled, update the hash
	      // fragment to store history.
	      } else if (this._wantsHashChange) {
	        this._updateHash(this.location, fragment, options.replace);
	        if (this.iframe && (fragment !== this.getFragment(this.getHash(this.iframe)))) {
	          // Opening and closing the iframe tricks IE7 and earlier to push a
	          // history entry on hash-tag change.  When replace is true, we don't
	          // want this.
	          if(!options.replace) this.iframe.document.open().close();
	          this._updateHash(this.iframe.location, fragment, options.replace);
	        }

	      // If you've told us that you explicitly don't want fallback hashchange-
	      // based history, then `navigate` becomes a page refresh.
	      } else {
	        return this.location.assign(url);
	      }
	      if (options.trigger) return this.loadUrl(fragment);
	    },

	    // Update the hash location, either replacing the current entry, or adding
	    // a new one to the browser history.
	    _updateHash: function(location, fragment, replace) {
	      if (replace) {
	        var href = location.href.replace(/(javascript:|#).*$/, '');
	        location.replace(href + '#' + fragment);
	      } else {
	        // Some browsers require that `hash` contains a leading #.
	        location.hash = '#' + fragment;
	      }
	    }

	  });

	  // Create the default Backbone.history.
	  Backbone.history = new History;

	  // Helpers
	  // -------

	  // Helper function to correctly set up the prototype chain, for subclasses.
	  // Similar to `goog.inherits`, but uses a hash of prototype properties and
	  // class properties to be extended.
	  var extend = function(protoProps, staticProps) {
	    var parent = this;
	    var child;

	    // The constructor function for the new subclass is either defined by you
	    // (the "constructor" property in your `extend` definition), or defaulted
	    // by us to simply call the parent's constructor.
	    if (protoProps && _.has(protoProps, 'constructor')) {
	      child = protoProps.constructor;
	    } else {
	      child = function(){ return parent.apply(this, arguments); };
	    }

	    // Add static properties to the constructor function, if supplied.
	    _.extend(child, parent, staticProps);

	    // Set the prototype chain to inherit from `parent`, without calling
	    // `parent`'s constructor function.
	    var Surrogate = function(){ this.constructor = child; };
	    Surrogate.prototype = parent.prototype;
	    child.prototype = new Surrogate;

	    // Add prototype properties (instance properties) to the subclass,
	    // if supplied.
	    if (protoProps) _.extend(child.prototype, protoProps);

	    // Set a convenience property in case the parent's prototype is needed
	    // later.
	    child.__super__ = parent.prototype;

	    return child;
	  };

	  // Set up inheritance for the model, collection, router, view and history.
	  Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;

	  // Throw an error when a URL is needed, and none is supplied.
	  var urlError = function() {
	    throw new Error('A "url" property or function must be specified');
	  };

	  // Wrap an optional error callback with a fallback error event.
	  var wrapError = function(model, options) {
	    var error = options.error;
	    options.error = function(resp) {
	      if (error) error(model, resp, options);
	      model.trigger('error', model, resp, options);
	    };
	  };

	  return Backbone;

	}));


/***/ }),

/***/ "views/shared/litebar/apps/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        module,
	        __webpack_require__("views/shared/Menu"),
	        __webpack_require__("views/shared/splunkbar/MenuButton"),
	        __webpack_require__("views/shared/litebar/apps/MenuContents"),
	        __webpack_require__("views/shared/litebar/apps/MenuDialog"),
	        __webpack_require__("views/shared/litebar/apps/Master.pcssm")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        module,
	        MenuView,
	        MenuButtonView,
	        MenuContentsView,
	        MenuDialogView,
	        css
	    ){
	        return MenuView.extend({
	            moduleId: module.id,
	            css: css,
	            initialize: function() {
	                this.options.toggleView = new MenuButtonView({
	                    html: this.options.label.render().el.innerHTML,
	                    title: this.options.title || 'Splunk'
	                });

	                this.options.contentView = new MenuContentsView({
	                    apps: this.options.apps,
	                    model: {
	                        application: this.model.application
	                    }
	                });

	                MenuView.prototype.initialize.apply(this, arguments);
	                
	                this.children.dialog = new MenuDialogView({
	                    contentView: this.options.contentView
	                });
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/apps/MenuContents":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("shim/jquery"),
	        module,
	        __webpack_require__("views/Base"),
	        __webpack_require__("views/shared/delegates/StopScrollPropagation"),
	        __webpack_require__("views/shared/Icon"),
	        __webpack_require__(370),
	        __webpack_require__("views/shared/litebar/apps/MenuContents.pcssm"),
	        __webpack_require__("uri/route")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        module,
	        BaseView,
	        StopScrollPropagation,
	        IconView,
	        template,
	        css,
	        route
	    ){
	        return BaseView.extend({
	            moduleId: module.id,
	            template: template,
	            css: css,
	            initialize: function() {
	                BaseView.prototype.initialize.apply(this, arguments);

	                this.children.splunk = new IconView({icon: 'splunk'});
	                this.children.prompt = new IconView({icon: 'greaterRegistered'});
	                this.children.liteLogo = new IconView({icon: 'lite'});
	                this.children.check = new IconView({icon: 'check'});
	            },

	            appIcon: function(appId, appModel) {
	                if (appId == 'search') {
	                    var splunkIcon = new IconView({icon: 'greater'}).render().el;
	                    return splunkIcon.outerHTML;
	                } else {
	                    var iconSrc = route.appIcon(
	                        appModel.get('root'),
	                        appModel.get('locale'),
	                        appModel.get('owner'),
	                        appId);
	                    return '<img src="' + iconSrc + '" />';
	                }
	            },

	            render: function() {
	                var currentApp = this.model.application.get('app') || 'search',
	                    html = this.compiledTemplate({
	                        apps: this.options.apps,
	                        currentApp: (currentApp == 'system') ? 'search' : currentApp,
	                        css: this.css,
	                        appIcon: this.appIcon,
	                        appModel: this.model.application
	                    });

	                this.$el.html(html);
	                this.children.stopScrollPropagation = new StopScrollPropagation({el:this.$('[data-role=apps-list]')[0]});
	                this.children.splunk.render().prependTo(this.$('[data-role=logo]'));
	                this.children.prompt.render().prependTo(this.$('[data-role=gt]'));
	                this.children.liteLogo.render().prependTo(this.$('[data-role=lite-logo]'));
	                this.children.check.render().prependTo(this.$('[data-role=current-app-check]'));

	                return this;
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/system/Modal":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	         __webpack_require__("shim/jquery"),
	         __webpack_require__("require/underscore"),
	         module,
	         __webpack_require__("views/shared/ModalLocalClassNames"),
	         __webpack_require__("views/shared/Button"),
	         __webpack_require__("views/shared/splunkbar/system/ModalBody"),
	         __webpack_require__("uri/route")
	     ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, module, ModalView, ButtonView, ModalBody, route) {
	        return ModalView.extend({
	            moduleId: module.id,
	            initialize: function() {
	                this.options.bodyView = new ModalBody({
	                    model: {application: this.model.application}
	                });
	                this.options.title = _('Show All Settings').t();
	                this.options.buttonsLeft = [new ButtonView({label: _('Cancel').t(), action: 'close-modal'})];
	                this.options.buttonsRight = [new ButtonView({label:  _('Show').t(), action: 'show-more', style: 'primary'})];
	                this.options.buttonsRight[0].on('click', this.submit.bind(this));

	                ModalView.prototype.initialize.apply(this, arguments);
	            },
	            submit: function() {
	                $.when(this.collection.managers.showMore()).then(function() {
	                    this.collection.sections.reset();
	                }.bind(this));
	                this.hide();
	            }
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/apps/MenuContents.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(371);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuContents.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuContents.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/ModalLocalClassNames":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        module,
	        __webpack_require__("shim/jquery"),
	        __webpack_require__("require/underscore"),
	        __webpack_require__("views/Base"),
	        __webpack_require__("views/shared/Button"),
	        __webpack_require__("views/shared/delegates/StopScrollPropagation"),
	        __webpack_require__("views/shared/ModalLocalClassNames.pcssm"),
	        __webpack_require__("util/keyboard")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	            module,
	            $,
	            _,
	            Base,
	            Button,
	            StopScrollPropagation,
	            css,
	            keyboard
	            ) {

	        var HIDE_REASONS = {
	            ClickClose: 'clickClose',
	            ClickBackground: 'clickBackground',
	            PressEscape: 'pressEscape'
	        };

	        return Base.extend({
	                moduleId: module.id,
	                css: css,
	                attributes: {
	                    style: 'display:none',
	                    tabindex: -1,
	                    role: 'dialog'
	                },
	                initialize: function() {
	                    Base.prototype.initialize.apply(this, arguments);

	                    var defaults = {
	                        keyboard: true,
	                        showCloseButton: true,
	                        closeOnEscape: true,
	                        headerView: null,
	                        title: null,
	                        titleView: null,
	                        bodyView: null,
	                        bodyScrolling: true,
	                        bodyPadded: true,
	                        footerView: null,
	                        buttonsLeft: [],
	                        buttonsRight: [],
	                        inputSelector: 'a:visible, button:visible:not([disabled]), input[type="text"]:visible:not([disabled]), input[type="password"]:visible:not([disabled]), textarea:visible:not([disabled])'
	                    };
	                    _.defaults(this.options, defaults);

	                    this.keydownEventCode = null;
	                    this.keydownEventTarget = null;
	                    this.shown = false;

	                    this.children.closeButton = new Button({icon: 'close', style: 'pill', action: 'close-modal', title: 'close'});
	                    this.clearButtons(); //setup empty arrays
	                    //accessors
	                    this.setHeaderView(this.options.headerView);
	                    this.setBodyView(this.options.bodyView);
	                    this.setTitleView(this.options.titleView);
	                    this.setFooterView(this.options.footerView);
	                    this.setButtonsLeft(this.options.buttonsLeft);
	                    this.setButtonsRight(this.options.buttonsRight);
	                },

	                set: function(options) {
	                    _.each(options, function(value, key) {
	                        var functionName = 'set' + key.charAt(0).toUpperCase() + key.slice(1);

	                        if (typeof this[functionName] == 'function') {
	                           this[functionName](value);
	                        } else {
	                           this.options[key] = value;
	                           this.debouncedRender();
	                        }
	                    }, this);

	                    return this;
	                },
	                debouncedRender: function() {
	                    this.el.innerHTML && Base.prototype.debouncedRender.apply(this, arguments);
	                    return this;
	                },
	                setHeaderView: function(view) {
	                    this._setView(view, 'header');
	                    return this;
	                },
	                setTitleView: function(view) {
	                    this._setView(view, 'title');
	                    return this;
	                },
	                setBodyView: function(view) {
	                    this._setView(view, 'body');
	                    return this;
	                },
	                setFooterView: function(view) {
	                    this._setView(view, 'footer');
	                    return this;
	                },
	                _setView: function(view, location) {
	                    if (!view || this.children[location] == view) {
	                        return;
	                    }
	                    //this.el.innerHTML && this.$('[data-modal-role=' + location + ']').html(''); // need to clear existing html, but not safe :(
	                    this.children[location] && this.children[location].remove();
	                    this.children[location] = view.appendTo(this.$('[data-modal-role=' + location + ']'));
	                    this[location] = this.children[location];
	                    this.debouncedRender();
	                },

	                setButtonsLeft: function(views) {
	                    return this._setButtons(views, 'Left');
	                },
	                setButtonsRight: function(views) {
	                    return this._setButtons(views, 'Right');
	                },
	                _setButtons: function(views,  side) {
	                    this['clear' + side + 'Buttons']();
	                    this.children['buttons' + side] = views;
	                    this.debouncedRender();
	                    return this;
	                },

	                addLeftButtonView: function(view, index) {
	                    return this._addButtonView(view, index, 'Left');
	                },
	                addRightButtonView: function(view, index) {
	                    return this._addButtonView(view, index, 'Right');
	                },
	                _addButtonView: function(view, index, side) {
	                    var buttons = this.children['buttons' + side];
	                    if (typeof index == 'number') {
	                        buttons.splice(index, 0, view);
	                    } else {
	                        buttons.push(view);
	                    }
	                    this.debouncedRender();
	                    return this;
	                },

	                clearButtons: function() {
	                    this.clearLeftButtons();
	                    this.clearRightButtons();
	                    return this;
	                },
	                clearLeftButtons: function() {
	                    this.children.buttonsLeft && this.children.buttonsLeft.forEach(function(view) {view.remove();});
	                    this.children.buttonsLeft = [];
	                    this.debouncedRender();
	                    return this;
	                },
	                clearRightButtons: function() {
	                    this.children.buttonsRight && this.children.buttonsRight.forEach(function(view) {view.remove();});
	                    this.children.buttonsRight = [];
	                    this.debouncedRender();
	                    return this;
	                },

	                focus: function() {
	                    //focus on close by default
	                    this.children.closeButton && this.children.closeButton.$el.focus();

	                    // check for any inputs inside the body, focus the first visible one
	                    // if no inputs inside the body, focus to the first visible footer button.
	                    var $inputs = this.$('[data-modal-role=body], [data-modal-role=footer]').find(this.options.inputSelector);

	                    for(var i = 0; i < $inputs.length; i++) {
	                        var $input = $inputs.eq(i);
	                        if ($input.css('visibility') !== 'hidden') {
	                            $input.focus();
	                            break;
	                        }
	                    }
	                },

	                //if you extend this class and need your own events object then you need to declare it like:
	                // $.extend({}, Modal.prototype.events, {
	                events: {
	                    'click [data-action=close-modal]': function(e) {
	                        this.hide({reason:HIDE_REASONS.ClickClose});
	                    },
	                    'keydown': function(e) {
	                        var keyCode = e.which;
	                        this.keydownEventCode = e.which;
	                        this.keydownEventTarget = e.target;

	                        if (keyCode === keyboard.KEYS.TAB) {
	                            keyboard.handleCircularTabbing(this.$el, e);
	                        } else if (keyCode === keyboard.KEYS.ESCAPE && this.hide && this.options.closeOnEscape) {
	                            this.hide({reason:HIDE_REASONS.PressEscape});
	                        }
	                    },
	                    'keyup': function(e) {
	                        var keyCode = e.which;
	                        if (keyCode === keyboard.KEYS.ENTER && this.keydownEventCode === keyboard.KEYS.ENTER) {
	                            var $target = $(e.target);

	                            if(e.target !== this.keydownEventTarget && $(this.keydownEventTarget).is('input')  && $(this.keydownEventTarget).attr('type') === 'text')
	                                $target = $(this.keydownEventTarget);

	                            if ($target.is('input') && $target.attr('type') === 'text' && this.$el.find('.btn-primary:visible').length === 1) {
	                                // if the currently focused element is any kind of text input,
	                                // make sure to blur it so that any change listeners are notified
	                                if ($target.is(this.options.inputSelector)) {
	                                    $target.blur();
	                                }
	                                e.preventDefault();
	                                this.keydownEventCode = null;
	                                this.keydownEventTarget = null;
	                                this.$el.find('.btn-primary:visible').click();
	                            }
	                        }
	                    }
	                },
	                hide: function(params) {
	                    if (this.$el.attr('data-modal-state') === 'open') {
	                        this.$el.attr('data-modal-state', 'closed');
	                        this.$backdrop.attr('data-modal-state', 'closed');
	                        this.$el.one('transitionend', this.onHidden.bind(this));
	                        this.$backdrop.off();

	                        this.children.body && this.children.body.hide && this.children.body.hide();
	                        if (!params) {
	                            this.trigger("hide");
	                        } else {
	                            this.trigger("hide", {reason: params.reason});
	                        }
	                    }
	                },
	                onHidden: function() {
	                    this.$backdrop.hide();
	                    this.$el.off('transitionend');

	                    if (this.options.onHiddenRemove) {
	                        this.remove();
	                    } else {
	                        this.$el.hide();
	                    }
	                    this.shown = false;
	                    this.trigger("hidden");
	                },
	                backDropEventCallback: function() {
	                    this.hide({reason:HIDE_REASONS.ClickBackground});
	                },
	                show: function() {
	                    if (!this.$backdrop) {
	                        this.$backdrop =  $('<div class="' + this.css.backdrop + '"></div>');
	                    }
	                    this.options.closeOnEscape && this.$backdrop.on('click', this.backDropEventCallback.bind(this));

	                    this.render().$el.appendTo($('body')).show();
	                    this.$backdrop.appendTo($('body')).width(); //redraw

	                    this.$el.attr('data-modal-state', 'open');
	                    this.$backdrop.show().attr('data-modal-state', 'open');

	                    this.children.body && this.children.body.show && this.children.body.show();

	                    this.children.stopScrollPropagation = new StopScrollPropagation({el: this.el, selector: '[data-modal-role=body]'});
	                    this.focus();
	                    this.trigger("shown");
	                },
	                toggle: function() {
	                    this.$el.attr('data-modal-state') == 'open' ? this.hide() : this.show();
	                },
	                remove: function() {
	                    this.$backdrop && this.$backdrop.remove();
	                    Base.prototype.remove.apply(this, arguments);
	                },
	                render: function() {
	                    var html = this.compiledTemplate({
	                        css: this.css,
	                        scroll: this.options.bodyScrolling ? 'Scrolling' : '',
	                        padded: this.options.bodyPadded ? 'Padded' : '',
	                        hasHeaderView: !!this.children.header,
	                        hasBodyView: !!this.children.body,
	                        hasFooterView: !!this.children.footer,
	                        showFooter: (!!this.children.footer || !!this.children.buttonsRight.length || !!this.children.buttonsLeft.length),
	                        options: this.options
	                    });
	                    // prevents jQuery from removing event listeners upon multiple calls to this.$el.html(html)
	                    // so that events defined in the head/body/footer views fire correctly
	                    _.each(this.children, function(child) {
	                        child.$el && child.$el.detach();
	                    });

	                    this.$el.html(html);

	                    this.children.header && this.children.header.render().appendTo(this.$("[data-modal-role=header]"));
	                    this.children.header || (this.options.showCloseButton && this.children.closeButton.render().appendTo(this.$("[data-modal-role=close]")));
	                    this.children.title && this.children.title.render().replaceAll(this.$("[data-modal-role=title]"));
	                    this.children.body && this.children.body.render().appendTo(this.$("[data-modal-role=body]"));
	                    this.children.footer && this.children.footer.render().appendTo(this.$("[data-modal-role=footer]"));

	                    this.shown && this.children.body.show && this.children.body.show();

	                    _(this.children.buttonsLeft || []).each(function (view, index){
	                        view.render().appendTo(this.$("[data-modal-role=footer-buttons-left]"));
	                    }, this);

	                    _(this.children.buttonsRight || []).each(function (view, index){
	                        view.render().appendTo(this.$("[data-modal-role=footer-buttons-right]"));
	                    }, this);

	                    this.focus();
	                },
	                template: '\
	                    <% if (hasHeaderView) {%>\
	                        <div class="<%=css.headerWrapper%>" data-modal-role="header">\</div>\
	                    <% } else if (options.title || options.showCloseButton) {%>\
	                    <div class="<%=css.header%>" data-modal-role="header">\
	                        <h3 class="<%=css.title%>" data-modal-role="title"><%-options.title%></h3>\
	                        <div class="<%=css.closeWrapper%>" data-modal-role="close"></div>\
	                    </div>\
	                    <% }%>\
	                    <div class="<%= css["body" + scroll + padded] %>" data-modal-role="body">\
	                        <% if (!hasBodyView) {%>\
	                            <div class="<%=css.loading%>">Loading....</div>\
	                        <% }%>\
	                    </div>\
	                    <% if (showFooter) {%>\
	                    <div class="<%= hasFooterView ? css.footerWrapper : css.footer%>" data-modal-role="footer">\
	                        <div class="<%= css.buttonsLeft%>" data-modal-role="footer-buttons-left">\
	                        </div>\
	                        <div class="<%= css.buttonsRight%>" data-modal-role="footer-buttons-right">\
	                        </div>\
	                    </div>\
	                    <% }%>\
	                '
	            },
	            {
	                HIDE_REASONS: HIDE_REASONS
	            }
	        );
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/ModalLocalClassNames.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(283);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./ModalLocalClassNames.pcssm", function() {
				var newContent = require("!!../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./ModalLocalClassNames.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "models/services/server/ServerInfo":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("require/underscore"),
	    __webpack_require__("models/StaticIdSplunkDBase"),
	    __webpack_require__("shim/splunk.util")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	    _,
	    SplunkDBaseModel,
	    splunk_util
	) {
	    return SplunkDBaseModel.extend({
	        urlRoot: 'server/info',
	        initialize: function() {
	            SplunkDBaseModel.prototype.initialize.apply(this, arguments);
	        },
	        productDef: {
	            cloud: {
	                name: _('Splunk Cloud').t(),
	                logo: '&#xF002;',
	                iconName: 'cloudLogo'
	            },
	            enterprise: {
	                name: _('Splunk Enterprise').t(),
	                logo: '&#xF001;',
	                iconName: 'enterprise'
	            },
	            hunk: {
	                name: _('Hunk').t(),
	                logo: '&#xF000;',
	                iconName: 'hunk'
	            },
	            lite: {
	                name: _('Splunk Light').t(),
	                logo: '&#xF003;',
	                iconName: 'lite'
	            },
	            lite_free: {
	                name: _('Splunk Light Free').t(),
	                logo: '&#xF003;',
	                iconName: 'lite'
	            },
	            splunk: {
	                name: _('Splunk').t(),
	                logo: '&#xF001;',
	                iconName: 'enterprise'
	            }
	        },
	        _getProductDef: function(key){
	            var productDef = this.productDef[this.getBranding()];
	            return productDef ? productDef[key] : '';
	        },

	        getAttr: function(attr){
	            return this.entry.content.get(attr);
	        },
	        getBranding: function() {
	            return (this.isLite() || !this.isCloud()) ? this.getProductType() : (this.getInstanceType() || 'splunk');
	        },
	        getProductName: function(){
	            return this._getProductDef('name');
	        },
	        getProductLogo: function(){
	            return this._getProductDef('logo');
	        },
	        getProductIconName: function(){
	            return this._getProductDef('iconName');
	        },
	        getProductType: function(){
	            return this.getAttr('product_type');
	        },
	        getInstanceType: function(){
	            return this.getAttr('instance_type');
	        },

	        isProductType: function(productName){
	            return this.getProductType() === productName;
	        },
	        isInstanceType: function(instance){
	            return this.getInstanceType() === instance;
	        },
	        isCloud: function() {
	            return this.isInstanceType('cloud');
	        },
	        isEnterprise: function() {
	            return this.isProductType('enterprise');
	        },
	        isEnterpriseCloud: function() {
	            return this.isEnterprise() && this.isCloud();
	        },
	        isHunk: function() {
	            return this.isProductType('hunk');
	        },
	        isLite: function() {
	            return this.isLiteFree() || this.isLitePaid();
	        },
	        isLiteCloud: function(){
	            return this.isLite() && this.isCloud();
	        },
	        isLiteFree: function() {
	            return this.isProductType('lite_free');
	        },
	        isLitePaid: function() {
	            return this.isProductType('lite');
	        },

	        isTrial: function(){
	            return splunk_util.normalizeBoolean(this.getAttr('isTrial'));
	        },
	        isCloudTrial: function() {
	            // TODO: Remove 'cloudtrial' condition once Rainmakr removes all instances of it.
	            return this.isInstanceType('cloudtrial') || (this.isCloud() && this.isTrial());
	        },
	        isFreeLicense: function() {
	            return splunk_util.normalizeBoolean(this.getAttr('isFree'));
	        },

	        getAddOns: function() {
	            return this.getAttr('addOns');
	        },
	        getBuild: function() {
	            return this.getAttr('build');
	        },
	        getLicenseGroup: function() {
	            return this.getAttr('activeLicenseGroup');
	        },
	        getOsName: function() {
	            return this.getAttr('os_name');
	        },
	        getServerName: function() {
	            return this.getAttr('serverName');
	        },
	        getVersion: function() {
	            return this.getAttr('version');
	        },

	        hasAttr: function(attr){
	            return this.entry.content.has(attr);
	        },
	        hasAddOn: function(addOn) {
	            var addOns = this.getAddOns();
	            if (!addOns) {
	                return false;
	            }
	            return addOns.hasOwnProperty(addOn);
	        },
	        hasHadoopAddon: function() {
	            return this.hasAddOn('hadoop');
	        },
	        hasEnterpriseLicense: function() {
	            return this.getLicenseGroup() === 'Enterprise';
	        },
	        hasLiteLicense: function() {
	            return this.getLicenseGroup() === 'Lite';
	        },
	        hasForwarderLicense: function() {
	            return this.getLicenseGroup() === 'Forwarder';
	        },
	        isLicenseStatePreviouslyKeyed: function() {
	            return this.getAttr('licenseState') === 'PREVIOUS_KEYED_LICENSE';
	        },
	        isLicenseStateExpired: function() {
	            return this.getAttr('licenseState') === 'EXPIRED';
	        }
	    },
	    {
	        id: 'server-info'
	    });
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/apps/MenuDialog":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        module,
	        __webpack_require__("views/shared/MenuDialog"),
	        __webpack_require__("views/shared/litebar/apps/MenuDialog.pcssm")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        module,
	        MenuDialog,
	        css
	    ){
	        return MenuDialog.extend({
	            moduleId: module.id,
	            css: css
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/apps/MenuDialog.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(372);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuDialog.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuDialog.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/litebar/apps/Master.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(374);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/splunkbar/system/ModalBody":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	         __webpack_require__("shim/jquery"),
	         __webpack_require__("require/underscore"),
	         module,
	         __webpack_require__("views/Base"),
	         __webpack_require__("uri/route")
	     ], __WEBPACK_AMD_DEFINE_RESULT__ = function($, _, module, BaseView, route) {
	        return BaseView.extend({
	            moduleId: module.id,
	            initialize: function() {
	                BaseView.prototype.initialize.apply(this, arguments);
	            },
	            render: function() {
	                this.$el.html(this.compiledTemplate({
	                    docLink: route.docHelp(this.model.application.get("root"), this.model.application.get("locale"), 'manager.shclustering.settings.menu')
	                }));

	                return this;
	            },
	            template: '<%- _("Because search head clustering is enabled, some sections of the settings menu are hidden. Do you wish to re-enable the full settings menu?").t() %>\
	                <br><br>\
	                <%- _("Note that system settings modified via re-enabled menus will not be replicated across your search head cluster.").t() %>\
	                <br><br>\
	                <a href="<%=docLink%>" class="external" target="_blank"><%- _("Learn more about configuration changes under search head clustering").t() %></a>\
	            '
	        });
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "models/StaticIdSplunkDBase":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	        __webpack_require__("require/underscore"),
	        __webpack_require__("models/SplunkDBase")
	    ], __WEBPACK_AMD_DEFINE_RESULT__ = function(_, BaseModel){
	        var Model = BaseModel.extend(
	            {
	                initialize: function() {
	                    BaseModel.prototype.initialize.apply(this, arguments);
	                },
	                defaults: function() {
	                    // do a dynamic lookup of the current constructor so that this method is inheritance-friendly
	                    var RootClass = this.constructor,
	                        id = RootClass.id,
	                        extendedDefaults = {},
	                        defaults;
	                    
	                    if (!id) {
	                        throw new Error('You must set a class level id for this model.');
	                    }
	                    
	                    if (_.isFunction(BaseModel.prototype.defaults)){
	                        defaults = BaseModel.prototype.defaults.apply(this, arguments);
	                    } else {
	                        defaults = BaseModel.prototype.defaults || {};
	                    }
	                    
	                    extendedDefaults = _.extend({}, defaults);
	                    extendedDefaults[this.idAttribute] = id;
	                    return extendedDefaults;
	                },
	                clear: function(options) {
	                    options = options || {};
	                    var RootClass = this.constructor;
	                    BaseModel.prototype.clear.call(this, options);

	                    //always enforce that the id is set
	                    if (!options.setDefaults) {
	                        this.set(this.idAttribute, RootClass.id);
	                    }
	                    
	                    return this;
	                }
	            },
	            {
	                id: ""
	            }
	        );
	        
	        return Model;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/litebar/Master.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(373);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/footer/Master":
/***/ (function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [
	    __webpack_require__("shim/jquery"),
	    module,
	    __webpack_require__("views/Base"),
	    __webpack_require__("views/shared/aboutmodal/Master"),
	    __webpack_require__("models/services/server/ServerInfo"),
	    __webpack_require__("models/shared/Application"),
	    __webpack_require__("models/services/AppLocal"),
	    __webpack_require__("collections/services/AppLocals"),
	    __webpack_require__(376),
	    __webpack_require__("views/shared/footer/Master.pcssm"),
	    __webpack_require__("uri/route"),
	    __webpack_require__("util/splunkd_utils")
	], __WEBPACK_AMD_DEFINE_RESULT__ = function(
	        $,
	        module,
	        BaseView,
	        AboutDialogView,
	        ServerInfoModel,
	        ApplicationModel,
	        AppLocalModel,
	        AppsCollection,
	        footerTemplate,
	        css,
	        route,
	        splunkDUtils
	        ){
	        var View = BaseView.extend({
	                moduleId: module.id,
	                css: css,
	                template: footerTemplate,
	                initialize: function() {
	                    BaseView.prototype.initialize.apply(this, arguments);

	                    // can only render once we have application and appLocal ready
	                    var applicationModelDeferred = $.Deferred();
	                    var appLocalModelDeferred = $.Deferred();

	                    if (this.options.model.application.get('app')) {
	                        applicationModelDeferred.resolve();
	                    } else {
	                        this.options.model.application.on('change reset', applicationModelDeferred.resolve);
	                    }

	                    if (this.options.model.appLocal.entry.content.get('version')) {
	                        appLocalModelDeferred.resolve();
	                    } else {
	                        this.options.model.appLocal.entry.content.on('change', appLocalModelDeferred.resolve);
	                    }

	                    $.when(applicationModelDeferred, appLocalModelDeferred).done(this.render.bind(this));
	                },
	                events: {
	                    'click a[id=about]': function(e) {
	                        e.preventDefault();
	                        this.children.aboutDialog = new AboutDialogView({
	                            collection: this.options.collection.apps,
	                            model: {
	                                application: this.options.model.application,
	                                appLocal: this.options.model.appLocal,
	                                serverInfo: this.options.model.serverInfo
	                            },
	                            onHiddenRemove: true
	                        });
	                        //for compatibility with the module system, this needs to be wrapped in an extra div.
	                        this.modalWrapper = $('<div class="splunk-components">').appendTo("body").append(this.children.aboutDialog.render().el);
	                        this.children.aboutDialog.once('hidden', function() {
	                            this.modalWrapper.remove();
	                            // SPL-76438: set focus when the modal is closed.
	                            $(e.currentTarget).focus();
	                        }, this);

	                        this.children.aboutDialog.show();
	                    }
	                },
	                makeDocLink: function(location) {
	                    var app = this.model.application.get("app");
	                    return route.docHelpInAppContext(
	                        this.model.application.get("root"),
	                        this.model.application.get("locale"),
	                        location,
	                        app,
	                        this.model.appLocal.entry.content.get('version'),
	                        app === 'system' ? true : this.model.appLocal.isCoreApp(),
	                        this.model.appLocal.entry.content.get('docs_section_override')
	                    );
	                },
	                makeDocLinkForPage: function() {
	                    //this is the generic doc link based on the current location
	                    var link = '/help',
	                        location;

	                    if(this.model.application.get('page') === '_admin'){
	                        // making help link for manager page
	                        location = 'manager';
	                        if(window && window.location && typeof window.location.pathname === 'string'){
	                            //get the location from the browser
	                            var pathname = window.location.pathname;
	                            //remove '/manager/' and all characters before
	                            pathname = pathname.substring(pathname.indexOf('/manager/')+9);
	                            //next we should have app namespace to remove
	                            pathname = pathname.substring(pathname.indexOf('/')+1);
	                            //change slashes to dots
	                            pathname = pathname.replace(new RegExp('/', 'g'), '.');
	                            location += '.'+pathname;
	                        }

	                        link = route.docHelp(
	                            this.model.application.get("root"),
	                            this.model.application.get("locale"),
	                            location
	                        );

	                    } else {
	                        // making help link for app page
	                        // location is in form: app.<app_name>.<page_name>
	                        location = [
	                            'app',
	                            this.model.application.get('app'),
	                            this.model.application.get('page')
	                        ].join(".");

	                        link = this.makeDocLink(location);

	                    }
	                    return link;
	                },
	                render: function() {
	                    var html = this.compiledTemplate({
	                        docLink: this.makeDocLinkForPage(),
	                        css: css
	                    });
	                    this.$el.html(html);
	                    return this;
	                }
	            },
	            {
	                create: function(options){
	                    options = options || {};
	                    options.model = options.model || {};
	                    options.collection = options.collection || {};
	                    if (!options.model.serverInfo) {
	                        options.model.serverInfo = new ServerInfoModel();
	                        options.model.serverInfo.fetch();
	                    }
	                    var applicationDfd = $.Deferred();
	                    if(!options.model.application){
	                        options.model.application = new ApplicationModel();
	                    }

	                    if (options.model.application.get('app')) {
	                        applicationDfd.resolve();
	                    } else {
	                        options.model.application.on('change', applicationDfd.resolve);
	                    }

	                    if(!options.model.appLocal) {
	                        options.model.appLocal = new AppLocalModel();
	                        applicationDfd.done(function() {
	                            if (options.model.application.get("app") !== 'system') {
	                                options.model.appLocal.fetch({
	                                    url: splunkDUtils.fullpath(options.model.appLocal.url + "/" + encodeURIComponent(options.model.application.get("app"))),
	                                    data: {
	                                        app: options.model.application.get("app"),
	                                        owner: options.model.application.get("owner")
	                                    }
	                                });
	                            }
	                        });
	                    }

	                    if (!options.collection.apps) {
	                        options.collection.apps = new AppsCollection();
	                        options.collection.apps.fetch({
	                            data: {
	                                sort_key: 'name',
	                                sort_dir: 'desc',
	                                app: '-' ,
	                                owner: options.model.application.get('owner'),
	                                search: 'visible=true AND disabled=0 AND name!=launcher',
	                                count:-1
	                            }
	                        });
	                    }

	                    return new View(options);
	                }
	            });
	        return View;
	    }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ }),

/***/ "views/shared/splunkbar/system/MenuContents.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(285);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuContents.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuContents.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/footer/Master.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(377);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm", function() {
				var newContent = require("!!../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./Master.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ }),

/***/ "views/shared/splunkbar/apps/MenuContents.pcssm":
/***/ (function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag

	// load the styles
	var content = __webpack_require__(278);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(270)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuContents.pcssm", function() {
				var newContent = require("!!../../../../../../../../../../build-home/splunk-home/lib/node_modules/css-loader/index.js?modules&importLoaders=1&localIdentName=[local]---modules-nav-enterprise---7-0.0---[hash:base64:5]!../../../../../../../../../../build-home/splunk-home/lib/node_modules/postcss-loader/index.js!./MenuContents.pcssm");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ })

/******/ });