text: (function webpackUniversalModuleDefinition(root, factory) {
  	if(typeof exports === 'object' && typeof module === 'object')
  		module.exports = factory(require("d3"), require("moment"));
  	else if(typeof define === 'function' && define.amd)
  		define("d3Foresight", ["d3", "moment"], factory);
  	else if(typeof exports === 'object')
  		exports["d3Foresight"] = factory(require("d3"), require("moment"));
  	else
  		root["d3Foresight"] = factory(root["d3"], root["moment"]);
  })(window, function(__WEBPACK_EXTERNAL_MODULE_d3__, __WEBPACK_EXTERNAL_MODULE_moment__) {
  return /******/ (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] = {
  /******/ 			i: moduleId,
  /******/ 			l: false,
  /******/ 			exports: {}
  /******/ 		};
  /******/
  /******/ 		// Execute the module function
  /******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  /******/
  /******/ 		// Flag the module as loaded
  /******/ 		module.l = 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;
  /******/
  /******/ 	// define getter function for harmony exports
  /******/ 	__webpack_require__.d = function(exports, name, getter) {
  /******/ 		if(!__webpack_require__.o(exports, name)) {
  /******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
  /******/ 		}
  /******/ 	};
  /******/
  /******/ 	// define __esModule on exports
  /******/ 	__webpack_require__.r = function(exports) {
  /******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
  /******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
  /******/ 		}
  /******/ 		Object.defineProperty(exports, '__esModule', { value: true });
  /******/ 	};
  /******/
  /******/ 	// create a fake namespace object
  /******/ 	// mode & 1: value is a module id, require it
  /******/ 	// mode & 2: merge all properties of value into the ns
  /******/ 	// mode & 4: return value when already ns object
  /******/ 	// mode & 8|1: behave like require
  /******/ 	__webpack_require__.t = function(value, mode) {
  /******/ 		if(mode & 1) value = __webpack_require__(value);
  /******/ 		if(mode & 8) return value;
  /******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
  /******/ 		var ns = Object.create(null);
  /******/ 		__webpack_require__.r(ns);
  /******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
  /******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
  /******/ 		return ns;
  /******/ 	};
  /******/
  /******/ 	// getDefaultExport function for compatibility with non-harmony modules
  /******/ 	__webpack_require__.n = function(module) {
  /******/ 		var getter = module && module.__esModule ?
  /******/ 			function getDefault() { return module['default']; } :
  /******/ 			function getModuleExports() { return module; };
  /******/ 		__webpack_require__.d(getter, 'a', getter);
  /******/ 		return getter;
  /******/ 	};
  /******/
  /******/ 	// Object.prototype.hasOwnProperty.call
  /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
  /******/
  /******/ 	// __webpack_public_path__
  /******/ 	__webpack_require__.p = "";
  /******/
  /******/
  /******/ 	// Load entry module and return exports
  /******/ 	return __webpack_require__(__webpack_require__.s = "./src/index.ts");
  /******/ })
  /************************************************************************/
  /******/ ({
  
  /***/ "./node_modules/ajv/lib/ajv.js":
  /*!*************************************!*\
    !*** ./node_modules/ajv/lib/ajv.js ***!
    \*************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nvar compileSchema = __webpack_require__(/*! ./compile */ \"./node_modules/ajv/lib/compile/index.js\")\n  , resolve = __webpack_require__(/*! ./compile/resolve */ \"./node_modules/ajv/lib/compile/resolve.js\")\n  , Cache = __webpack_require__(/*! ./cache */ \"./node_modules/ajv/lib/cache.js\")\n  , SchemaObject = __webpack_require__(/*! ./compile/schema_obj */ \"./node_modules/ajv/lib/compile/schema_obj.js\")\n  , stableStringify = __webpack_require__(/*! fast-json-stable-stringify */ \"./node_modules/fast-json-stable-stringify/index.js\")\n  , formats = __webpack_require__(/*! ./compile/formats */ \"./node_modules/ajv/lib/compile/formats.js\")\n  , rules = __webpack_require__(/*! ./compile/rules */ \"./node_modules/ajv/lib/compile/rules.js\")\n  , $dataMetaSchema = __webpack_require__(/*! ./data */ \"./node_modules/ajv/lib/data.js\")\n  , util = __webpack_require__(/*! ./compile/util */ \"./node_modules/ajv/lib/compile/util.js\");\n\nmodule.exports = Ajv;\n\nAjv.prototype.validate = validate;\nAjv.prototype.compile = compile;\nAjv.prototype.addSchema = addSchema;\nAjv.prototype.addMetaSchema = addMetaSchema;\nAjv.prototype.validateSchema = validateSchema;\nAjv.prototype.getSchema = getSchema;\nAjv.prototype.removeSchema = removeSchema;\nAjv.prototype.addFormat = addFormat;\nAjv.prototype.errorsText = errorsText;\n\nAjv.prototype._addSchema = _addSchema;\nAjv.prototype._compile = _compile;\n\nAjv.prototype.compileAsync = __webpack_require__(/*! ./compile/async */ \"./node_modules/ajv/lib/compile/async.js\");\nvar customKeyword = __webpack_require__(/*! ./keyword */ \"./node_modules/ajv/lib/keyword.js\");\nAjv.prototype.addKeyword = customKeyword.add;\nAjv.prototype.getKeyword = customKeyword.get;\nAjv.prototype.removeKeyword = customKeyword.remove;\n\nvar errorClasses = __webpack_require__(/*! ./compile/error_classes */ \"./node_modules/ajv/lib/compile/error_classes.js\");\nAjv.ValidationError = errorClasses.Validation;\nAjv.MissingRefError = errorClasses.MissingRef;\nAjv.$dataMetaSchema = $dataMetaSchema;\n\nvar META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema';\n\nvar META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes' ];\nvar META_SUPPORT_DATA = ['/properties'];\n\n/**\n * Creates validator instance.\n * Usage: `Ajv(opts)`\n * @param {Object} opts optional options\n * @return {Object} ajv instance\n */\nfunction Ajv(opts) {\n  if (!(this instanceof Ajv)) return new Ajv(opts);\n  opts = this._opts = util.copy(opts) || {};\n  setLogger(this);\n  this._schemas = {};\n  this._refs = {};\n  this._fragments = {};\n  this._formats = formats(opts.format);\n  var schemaUriFormat = this._schemaUriFormat = this._formats['uri-reference'];\n  this._schemaUriFormatFunc = function (str) { return schemaUriFormat.test(str); };\n\n  this._cache = opts.cache || new Cache;\n  this._loadingSchemas = {};\n  this._compilations = [];\n  this.RULES = rules();\n  this._getId = chooseGetId(opts);\n\n  opts.loopRequired = opts.loopRequired || Infinity;\n  if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;\n  if (opts.serialize === undefined) opts.serialize = stableStringify;\n  this._metaOpts = getMetaSchemaOptions(this);\n\n  if (opts.formats) addInitialFormats(this);\n  addDraft6MetaSchema(this);\n  if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);\n  addInitialSchemas(this);\n}\n\n\n\n/**\n * Validate data using schema\n * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize.\n * @this   Ajv\n * @param  {String|Object} schemaKeyRef key, ref or schema object\n * @param  {Any} data to be validated\n * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).\n */\nfunction validate(schemaKeyRef, data) {\n  var v;\n  if (typeof schemaKeyRef == 'string') {\n    v = this.getSchema(schemaKeyRef);\n    if (!v) throw new Error('no schema with key or ref \"' + schemaKeyRef + '\"');\n  } else {\n    var schemaObj = this._addSchema(schemaKeyRef);\n    v = schemaObj.validate || this._compile(schemaObj);\n  }\n\n  var valid = v(data);\n  if (v.$async !== true) this.errors = v.errors;\n  return valid;\n}\n\n\n/**\n * Create validating function for passed schema.\n * @this   Ajv\n * @param  {Object} schema schema object\n * @param  {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords.\n * @return {Function} validating function\n */\nfunction compile(schema, _meta) {\n  var schemaObj = this._addSchema(schema, undefined, _meta);\n  return schemaObj.validate || this._compile(schemaObj);\n}\n\n\n/**\n * Adds schema to the instance.\n * @this   Ajv\n * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.\n * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n * @return {Ajv} this for method chaining\n */\nfunction addSchema(schema, key, _skipValidation, _meta) {\n  if (Array.isArray(schema)){\n    for (var i=0; i<schema.length; i++) this.addSchema(schema[i], undefined, _skipValidation, _meta);\n    return this;\n  }\n  var id = this._getId(schema);\n  if (id !== undefined && typeof id != 'string')\n    throw new Error('schema id must be string');\n  key = resolve.normalizeId(key || id);\n  checkUnique(this, key);\n  this._schemas[key] = this._addSchema(schema, _skipValidation, _meta, true);\n  return this;\n}\n\n\n/**\n * Add schema that will be used to validate other schemas\n * options in META_IGNORE_OPTIONS are alway set to false\n * @this   Ajv\n * @param {Object} schema schema object\n * @param {String} key optional schema key\n * @param {Boolean} skipValidation true to skip schema validation, can be used to override validateSchema option for meta-schema\n * @return {Ajv} this for method chaining\n */\nfunction addMetaSchema(schema, key, skipValidation) {\n  this.addSchema(schema, key, skipValidation, true);\n  return this;\n}\n\n\n/**\n * Validate schema\n * @this   Ajv\n * @param {Object} schema schema to validate\n * @param {Boolean} throwOrLogError pass true to throw (or log) an error if invalid\n * @return {Boolean} true if schema is valid\n */\nfunction validateSchema(schema, throwOrLogError) {\n  var $schema = schema.$schema;\n  if ($schema !== undefined && typeof $schema != 'string')\n    throw new Error('$schema must be a string');\n  $schema = $schema || this._opts.defaultMeta || defaultMeta(this);\n  if (!$schema) {\n    this.logger.warn('meta-schema not available');\n    this.errors = null;\n    return true;\n  }\n  var currentUriFormat = this._formats.uri;\n  this._formats.uri = typeof currentUriFormat == 'function'\n                      ? this._schemaUriFormatFunc\n                      : this._schemaUriFormat;\n  var valid;\n  try { valid = this.validate($schema, schema); }\n  finally { this._formats.uri = currentUriFormat; }\n  if (!valid && throwOrLogError) {\n    var message = 'schema is invalid: ' + this.errorsText();\n    if (this._opts.validateSchema == 'log') this.logger.error(message);\n    else throw new Error(message);\n  }\n  return valid;\n}\n\n\nfunction defaultMeta(self) {\n  var meta = self._opts.meta;\n  self._opts.defaultMeta = typeof meta == 'object'\n                            ? self._getId(meta) || meta\n                            : self.getSchema(META_SCHEMA_ID)\n                              ? META_SCHEMA_ID\n                              : undefined;\n  return self._opts.defaultMeta;\n}\n\n\n/**\n * Get compiled schema from the instance by `key` or `ref`.\n * @this   Ajv\n * @param  {String} keyRef `key` that was passed to `addSchema` or full schema reference (`schema.id` or resolved id).\n * @return {Function} schema validating function (with property `schema`).\n */\nfunction getSchema(keyRef) {\n  var schemaObj = _getSchemaObj(this, keyRef);\n  switch (typeof schemaObj) {\n    case 'object': return schemaObj.validate || this._compile(schemaObj);\n    case 'string': return this.getSchema(schemaObj);\n    case 'undefined': return _getSchemaFragment(this, keyRef);\n  }\n}\n\n\nfunction _getSchemaFragment(self, ref) {\n  var res = resolve.schema.call(self, { schema: {} }, ref);\n  if (res) {\n    var schema = res.schema\n      , root = res.root\n      , baseId = res.baseId;\n    var v = compileSchema.call(self, schema, root, undefined, baseId);\n    self._fragments[ref] = new SchemaObject({\n      ref: ref,\n      fragment: true,\n      schema: schema,\n      root: root,\n      baseId: baseId,\n      validate: v\n    });\n    return v;\n  }\n}\n\n\nfunction _getSchemaObj(self, keyRef) {\n  keyRef = resolve.normalizeId(keyRef);\n  return self._schemas[keyRef] || self._refs[keyRef] || self._fragments[keyRef];\n}\n\n\n/**\n * Remove cached schema(s).\n * If no parameter is passed all schemas but meta-schemas are removed.\n * If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n * Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n * @this   Ajv\n * @param  {String|Object|RegExp} schemaKeyRef key, ref, pattern to match key/ref or schema object\n * @return {Ajv} this for method chaining\n */\nfunction removeSchema(schemaKeyRef) {\n  if (schemaKeyRef instanceof RegExp) {\n    _removeAllSchemas(this, this._schemas, schemaKeyRef);\n    _removeAllSchemas(this, this._refs, schemaKeyRef);\n    return this;\n  }\n  switch (typeof schemaKeyRef) {\n    case 'undefined':\n      _removeAllSchemas(this, this._schemas);\n      _removeAllSchemas(this, this._refs);\n      this._cache.clear();\n      return this;\n    case 'string':\n      var schemaObj = _getSchemaObj(this, schemaKeyRef);\n      if (schemaObj) this._cache.del(schemaObj.cacheKey);\n      delete this._schemas[schemaKeyRef];\n      delete this._refs[schemaKeyRef];\n      return this;\n    case 'object':\n      var serialize = this._opts.serialize;\n      var cacheKey = serialize ? serialize(schemaKeyRef) : schemaKeyRef;\n      this._cache.del(cacheKey);\n      var id = this._getId(schemaKeyRef);\n      if (id) {\n        id = resolve.normalizeId(id);\n        delete this._schemas[id];\n        delete this._refs[id];\n      }\n  }\n  return this;\n}\n\n\nfunction _removeAllSchemas(self, schemas, regex) {\n  for (var keyRef in schemas) {\n    var schemaObj = schemas[keyRef];\n    if (!schemaObj.meta && (!regex || regex.test(keyRef))) {\n      self._cache.del(schemaObj.cacheKey);\n      delete schemas[keyRef];\n    }\n  }\n}\n\n\n/* @this   Ajv */\nfunction _addSchema(schema, skipValidation, meta, shouldAddSchema) {\n  if (typeof schema != 'object' && typeof schema != 'boolean')\n    throw new Error('schema should be object or boolean');\n  var serialize = this._opts.serialize;\n  var cacheKey = serialize ? serialize(schema) : schema;\n  var cached = this._cache.get(cacheKey);\n  if (cached) return cached;\n\n  shouldAddSchema = shouldAddSchema || this._opts.addUsedSchema !== false;\n\n  var id = resolve.normalizeId(this._getId(schema));\n  if (id && shouldAddSchema) checkUnique(this, id);\n\n  var willValidate = this._opts.validateSchema !== false && !skipValidation;\n  var recursiveMeta;\n  if (willValidate && !(recursiveMeta = id && id == resolve.normalizeId(schema.$schema)))\n    this.validateSchema(schema, true);\n\n  var localRefs = resolve.ids.call(this, schema);\n\n  var schemaObj = new SchemaObject({\n    id: id,\n    schema: schema,\n    localRefs: localRefs,\n    cacheKey: cacheKey,\n    meta: meta\n  });\n\n  if (id[0] != '#' && shouldAddSchema) this._refs[id] = schemaObj;\n  this._cache.put(cacheKey, schemaObj);\n\n  if (willValidate && recursiveMeta) this.validateSchema(schema, true);\n\n  return schemaObj;\n}\n\n\n/* @this   Ajv */\nfunction _compile(schemaObj, root) {\n  if (schemaObj.compiling) {\n    schemaObj.validate = callValidate;\n    callValidate.schema = schemaObj.schema;\n    callValidate.errors = null;\n    callValidate.root = root ? root : callValidate;\n    if (schemaObj.schema.$async === true)\n      callValidate.$async = true;\n    return callValidate;\n  }\n  schemaObj.compiling = true;\n\n  var currentOpts;\n  if (schemaObj.meta) {\n    currentOpts = this._opts;\n    this._opts = this._metaOpts;\n  }\n\n  var v;\n  try { v = compileSchema.call(this, schemaObj.schema, root, schemaObj.localRefs); }\n  finally {\n    schemaObj.compiling = false;\n    if (schemaObj.meta) this._opts = currentOpts;\n  }\n\n  schemaObj.validate = v;\n  schemaObj.refs = v.refs;\n  schemaObj.refVal = v.refVal;\n  schemaObj.root = v.root;\n  return v;\n\n\n  function callValidate() {\n    var _validate = schemaObj.validate;\n    var result = _validate.apply(null, arguments);\n    callValidate.errors = _validate.errors;\n    return result;\n  }\n}\n\n\nfunction chooseGetId(opts) {\n  switch (opts.schemaId) {\n    case 'auto': return _get$IdOrId;\n    case 'id': return _getId;\n    default: return _get$Id;\n  }\n}\n\n/* @this   Ajv */\nfunction _getId(schema) {\n  if (schema.$id) this.logger.warn('schema $id ignored', schema.$id);\n  return schema.id;\n}\n\n/* @this   Ajv */\nfunction _get$Id(schema) {\n  if (schema.id) this.logger.warn('schema id ignored', schema.id);\n  return schema.$id;\n}\n\n\nfunction _get$IdOrId(schema) {\n  if (schema.$id && schema.id && schema.$id != schema.id)\n    throw new Error('schema $id is different from id');\n  return schema.$id || schema.id;\n}\n\n\n/**\n * Convert array of error message objects to string\n * @this   Ajv\n * @param  {Array<Object>} errors optional array of validation errors, if not passed errors from the instance are used.\n * @param  {Object} options optional options with properties `separator` and `dataVar`.\n * @return {String} human readable string with all errors descriptions\n */\nfunction errorsText(errors, options) {\n  errors = errors || this.errors;\n  if (!errors) return 'No errors';\n  options = options || {};\n  var separator = options.separator === undefined ? ', ' : options.separator;\n  var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;\n\n  var text = '';\n  for (var i=0; i<errors.length; i++) {\n    var e = errors[i];\n    if (e) text += dataVar + e.dataPath + ' ' + e.message + separator;\n  }\n  return text.slice(0, -separator.length);\n}\n\n\n/**\n * Add custom format\n * @this   Ajv\n * @param {String} name format name\n * @param {String|RegExp|Function} format string is converted to RegExp; function should return boolean (true when valid)\n * @return {Ajv} this for method chaining\n */\nfunction addFormat(name, format) {\n  if (typeof format == 'string') format = new RegExp(format);\n  this._formats[name] = format;\n  return this;\n}\n\n\nfunction addDraft6MetaSchema(self) {\n  var $dataSchema;\n  if (self._opts.$data) {\n    $dataSchema = __webpack_require__(/*! ./refs/data.json */ \"./node_modules/ajv/lib/refs/data.json\");\n    self.addMetaSchema($dataSchema, $dataSchema.$id, true);\n  }\n  if (self._opts.meta === false) return;\n  var metaSchema = __webpack_require__(/*! ./refs/json-schema-draft-07.json */ \"./node_modules/ajv/lib/refs/json-schema-draft-07.json\");\n  if (self._opts.$data) metaSchema = $dataMetaSchema(metaSchema, META_SUPPORT_DATA);\n  self.addMetaSchema(metaSchema, META_SCHEMA_ID, true);\n  self._refs['http://json-schema.org/schema'] = META_SCHEMA_ID;\n}\n\n\nfunction addInitialSchemas(self) {\n  var optsSchemas = self._opts.schemas;\n  if (!optsSchemas) return;\n  if (Array.isArray(optsSchemas)) self.addSchema(optsSchemas);\n  else for (var key in optsSchemas) self.addSchema(optsSchemas[key], key);\n}\n\n\nfunction addInitialFormats(self) {\n  for (var name in self._opts.formats) {\n    var format = self._opts.formats[name];\n    self.addFormat(name, format);\n  }\n}\n\n\nfunction checkUnique(self, id) {\n  if (self._schemas[id] || self._refs[id])\n    throw new Error('schema with key or id \"' + id + '\" already exists');\n}\n\n\nfunction getMetaSchemaOptions(self) {\n  var metaOpts = util.copy(self._opts);\n  for (var i=0; i<META_IGNORE_OPTIONS.length; i++)\n    delete metaOpts[META_IGNORE_OPTIONS[i]];\n  return metaOpts;\n}\n\n\nfunction setLogger(self) {\n  var logger = self._opts.logger;\n  if (logger === false) {\n    self.logger = {log: noop, warn: noop, error: noop};\n  } else {\n    if (logger === undefined) logger = console;\n    if (!(typeof logger == 'object' && logger.log && logger.warn && logger.error))\n      throw new Error('logger must implement log, warn and error methods');\n    self.logger = logger;\n  }\n}\n\n\nfunction noop() {}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/ajv.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/cache.js":
  /*!***************************************!*\
    !*** ./node_modules/ajv/lib/cache.js ***!
    \***************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\n\nvar Cache = module.exports = function Cache() {\n  this._cache = {};\n};\n\n\nCache.prototype.put = function Cache_put(key, value) {\n  this._cache[key] = value;\n};\n\n\nCache.prototype.get = function Cache_get(key) {\n  return this._cache[key];\n};\n\n\nCache.prototype.del = function Cache_del(key) {\n  delete this._cache[key];\n};\n\n\nCache.prototype.clear = function Cache_clear() {\n  this._cache = {};\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/cache.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/compile/async.js":
  /*!***********************************************!*\
    !*** ./node_modules/ajv/lib/compile/async.js ***!
    \***********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nvar MissingRefError = __webpack_require__(/*! ./error_classes */ \"./node_modules/ajv/lib/compile/error_classes.js\").MissingRef;\n\nmodule.exports = compileAsync;\n\n\n/**\n * Creates validating function for passed schema with asynchronous loading of missing schemas.\n * `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n * @this  Ajv\n * @param {Object}   schema schema object\n * @param {Boolean}  meta optional true to compile meta-schema; this parameter can be skipped\n * @param {Function} callback an optional node-style callback, it is called with 2 parameters: error (or null) and validating function.\n * @return {Promise} promise that resolves with a validating function.\n */\nfunction compileAsync(schema, meta, callback) {\n  /* eslint no-shadow: 0 */\n  /* global Promise */\n  /* jshint validthis: true */\n  var self = this;\n  if (typeof this._opts.loadSchema != 'function')\n    throw new Error('options.loadSchema should be a function');\n\n  if (typeof meta == 'function') {\n    callback = meta;\n    meta = undefined;\n  }\n\n  var p = loadMetaSchemaOf(schema).then(function () {\n    var schemaObj = self._addSchema(schema, undefined, meta);\n    return schemaObj.validate || _compileAsync(schemaObj);\n  });\n\n  if (callback) {\n    p.then(\n      function(v) { callback(null, v); },\n      callback\n    );\n  }\n\n  return p;\n\n\n  function loadMetaSchemaOf(sch) {\n    var $schema = sch.$schema;\n    return $schema && !self.getSchema($schema)\n            ? compileAsync.call(self, { $ref: $schema }, true)\n            : Promise.resolve();\n  }\n\n\n  function _compileAsync(schemaObj) {\n    try { return self._compile(schemaObj); }\n    catch(e) {\n      if (e instanceof MissingRefError) return loadMissingSchema(e);\n      throw e;\n    }\n\n\n    function loadMissingSchema(e) {\n      var ref = e.missingSchema;\n      if (added(ref)) throw new Error('Schema ' + ref + ' is loaded but ' + e.missingRef + ' cannot be resolved');\n\n      var schemaPromise = self._loadingSchemas[ref];\n      if (!schemaPromise) {\n        schemaPromise = self._loadingSchemas[ref] = self._opts.loadSchema(ref);\n        schemaPromise.then(removePromise, removePromise);\n      }\n\n      return schemaPromise.then(function (sch) {\n        if (!added(ref)) {\n          return loadMetaSchemaOf(sch).then(function () {\n            if (!added(ref)) self.addSchema(sch, ref, undefined, meta);\n          });\n        }\n      }).then(function() {\n        return _compileAsync(schemaObj);\n      });\n\n      function removePromise() {\n        delete self._loadingSchemas[ref];\n      }\n\n      function added(ref) {\n        return self._refs[ref] || self._schemas[ref];\n      }\n    }\n  }\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/compile/async.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/compile/error_classes.js":
  /*!*******************************************************!*\
    !*** ./node_modules/ajv/lib/compile/error_classes.js ***!
    \*******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nvar resolve = __webpack_require__(/*! ./resolve */ \"./node_modules/ajv/lib/compile/resolve.js\");\n\nmodule.exports = {\n  Validation: errorSubclass(ValidationError),\n  MissingRef: errorSubclass(MissingRefError)\n};\n\n\nfunction ValidationError(errors) {\n  this.message = 'validation failed';\n  this.errors = errors;\n  this.ajv = this.validation = true;\n}\n\n\nMissingRefError.message = function (baseId, ref) {\n  return 'can\\'t resolve reference ' + ref + ' from id ' + baseId;\n};\n\n\nfunction MissingRefError(baseId, ref, message) {\n  this.message = message || MissingRefError.message(baseId, ref);\n  this.missingRef = resolve.url(baseId, ref);\n  this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef));\n}\n\n\nfunction errorSubclass(Subclass) {\n  Subclass.prototype = Object.create(Error.prototype);\n  Subclass.prototype.constructor = Subclass;\n  return Subclass;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/compile/error_classes.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/compile/formats.js":
  /*!*************************************************!*\
    !*** ./node_modules/ajv/lib/compile/formats.js ***!
    \*************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nvar util = __webpack_require__(/*! ./util */ \"./node_modules/ajv/lib/compile/util.js\");\n\nvar DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/;\nvar DAYS = [0,31,28,31,30,31,30,31,31,30,31,30,31];\nvar TIME = /^(\\d\\d):(\\d\\d):(\\d\\d)(\\.\\d+)?(z|[+-]\\d\\d:\\d\\d)?$/i;\nvar HOSTNAME = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*$/i;\nvar URI = /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\nvar URIREF = /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\n// uri-template: https://tools.ietf.org/html/rfc6570\nvar URITEMPLATE = /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i;\n// For the source: https://gist.github.com/dperini/729294\n// For test cases: https://mathiasbynens.be/demo/url-regex\n// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.\n// var URL = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!10(?:\\.\\d{1,3}){3})(?!127(?:\\.\\d{1,3}){3})(?!169\\.254(?:\\.\\d{1,3}){2})(?!192\\.168(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-?)*[a-z\\u{00a1}-\\u{ffff}0-9]+)(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-?)*[a-z\\u{00a1}-\\u{ffff}0-9]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu;\nvar URL = /^(?:(?:http[s\\u017F]?|ftp):\\/\\/)(?:(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+(?::(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?@)?(?:(?!10(?:\\.[0-9]{1,3}){3})(?!127(?:\\.[0-9]{1,3}){3})(?!169\\.254(?:\\.[0-9]{1,3}){2})(?!192\\.168(?:\\.[0-9]{1,3}){2})(?!172\\.(?:1[6-9]|2[0-9]|3[01])(?:\\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-?)*(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)(?:\\.(?:(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-?)*(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)*(?:\\.(?:(?:[KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\\/(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?$/i;\nvar UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;\nvar JSON_POINTER = /^(?:\\/(?:[^~/]|~0|~1)*)*$/;\nvar JSON_POINTER_URI_FRAGMENT = /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;\nvar RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/;\n\n\nmodule.exports = formats;\n\nfunction formats(mode) {\n  mode = mode == 'full' ? 'full' : 'fast';\n  return util.copy(formats[mode]);\n}\n\n\nformats.fast = {\n  // date: http://tools.ietf.org/html/rfc3339#section-5.6\n  date: /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/,\n  // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n  time: /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d:\\d\\d)?$/i,\n  'date-time': /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d:\\d\\d)$/i,\n  // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n  uri: /^(?:[a-z][a-z0-9+-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n  'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n  'uri-template': URITEMPLATE,\n  url: URL,\n  // email (sources from jsen validator):\n  // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n  // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')\n  email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n  hostname: HOSTNAME,\n  // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n  ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n  // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses\n  ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n  regex: regex,\n  // uuid: http://tools.ietf.org/html/rfc4122\n  uuid: UUID,\n  // JSON-pointer: https://tools.ietf.org/html/rfc6901\n  // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n  'json-pointer': JSON_POINTER,\n  'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n  // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n  'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nformats.full = {\n  date: date,\n  time: time,\n  'date-time': date_time,\n  uri: uri,\n  'uri-reference': URIREF,\n  'uri-template': URITEMPLATE,\n  url: URL,\n  email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&''*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n  hostname: hostname,\n  ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n  ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n  regex: regex,\n  uuid: UUID,\n  'json-pointer': JSON_POINTER,\n  'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n  'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nfunction isLeapYear(year) {\n  // https://tools.ietf.org/html/rfc3339#appendix-C\n  return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\n\nfunction date(str) {\n  // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n  var matches = str.match(DATE);\n  if (!matches) return false;\n\n  var year = +matches[1];\n  var month = +matches[2];\n  var day = +matches[3];\n\n  return month >= 1 && month <= 12 && day >= 1 &&\n          day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]);\n}\n\n\nfunction time(str, full) {\n  var matches = str.match(TIME);\n  if (!matches) return false;\n\n  var hour = matches[1];\n  var minute = matches[2];\n  var second = matches[3];\n  var timeZone = matches[5];\n  return ((hour <= 23 && minute <= 59 && second <= 59) ||\n          (hour == 23 && minute == 59 && second == 60)) &&\n         (!full || timeZone);\n}\n\n\nvar DATE_TIME_SEPARATOR = /t|\\s/i;\nfunction date_time(str) {\n  // http://tools.ietf.org/html/rfc3339#section-5.6\n  var dateTime = str.split(DATE_TIME_SEPARATOR);\n  return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true);\n}\n\n\nfunction hostname(str) {\n  // https://tools.ietf.org/html/rfc1034#section-3.5\n  // https://tools.ietf.org/html/rfc1123#section-2\n  return str.length <= 255 && HOSTNAME.test(str);\n}\n\n\nvar NOT_URI_FRAGMENT = /\\/|:/;\nfunction uri(str) {\n  // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n  return NOT_URI_FRAGMENT.test(str) && URI.test(str);\n}\n\n\nvar Z_ANCHOR = /[^\\\\]\\\\Z/;\nfunction regex(str) {\n  if (Z_ANCHOR.test(str)) return false;\n  try {\n    new RegExp(str);\n    return true;\n  } catch(e) {\n    return false;\n  }\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/compile/formats.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/compile/index.js":
  /*!***********************************************!*\
    !*** ./node_modules/ajv/lib/compile/index.js ***!
    \***********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nvar resolve = __webpack_require__(/*! ./resolve */ \"./node_modules/ajv/lib/compile/resolve.js\")\n  , util = __webpack_require__(/*! ./util */ \"./node_modules/ajv/lib/compile/util.js\")\n  , errorClasses = __webpack_require__(/*! ./error_classes */ \"./node_modules/ajv/lib/compile/error_classes.js\")\n  , stableStringify = __webpack_require__(/*! fast-json-stable-stringify */ \"./node_modules/fast-json-stable-stringify/index.js\");\n\nvar validateGenerator = __webpack_require__(/*! ../dotjs/validate */ \"./node_modules/ajv/lib/dotjs/validate.js\");\n\n/**\n * Functions below are used inside compiled validations function\n */\n\nvar ucs2length = util.ucs2length;\nvar equal = __webpack_require__(/*! fast-deep-equal */ \"./node_modules/fast-deep-equal/index.js\");\n\n// this error is thrown by async schemas to return validation errors via exception\nvar ValidationError = errorClasses.Validation;\n\nmodule.exports = compile;\n\n\n/**\n * Compiles schema to validation function\n * @this   Ajv\n * @param  {Object} schema schema object\n * @param  {Object} root object with information about the root schema for this schema\n * @param  {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution\n * @param  {String} baseId base ID for IDs in the schema\n * @return {Function} validation function\n */\nfunction compile(schema, root, localRefs, baseId) {\n  /* jshint validthis: true, evil: true */\n  /* eslint no-shadow: 0 */\n  var self = this\n    , opts = this._opts\n    , refVal = [ undefined ]\n    , refs = {}\n    , patterns = []\n    , patternsHash = {}\n    , defaults = []\n    , defaultsHash = {}\n    , customRules = [];\n\n  root = root || { schema: schema, refVal: refVal, refs: refs };\n\n  var c = checkCompiling.call(this, schema, root, baseId);\n  var compilation = this._compilations[c.index];\n  if (c.compiling) return (compilation.callValidate = callValidate);\n\n  var formats = this._formats;\n  var RULES = this.RULES;\n\n  try {\n    var v = localCompile(schema, root, localRefs, baseId);\n    compilation.validate = v;\n    var cv = compilation.callValidate;\n    if (cv) {\n      cv.schema = v.schema;\n      cv.errors = null;\n      cv.refs = v.refs;\n      cv.refVal = v.refVal;\n      cv.root = v.root;\n      cv.$async = v.$async;\n      if (opts.sourceCode) cv.source = v.source;\n    }\n    return v;\n  } finally {\n    endCompiling.call(this, schema, root, baseId);\n  }\n\n  function callValidate() {\n    var validate = compilation.validate;\n    var result = validate.apply(null, arguments);\n    callValidate.errors = validate.errors;\n    return result;\n  }\n\n  function localCompile(_schema, _root, localRefs, baseId) {\n    var isRoot = !_root || (_root && _root.schema == _schema);\n    if (_root.schema != root.schema)\n      return compile.call(self, _schema, _root, localRefs, baseId);\n\n    var $async = _schema.$async === true;\n\n    var sourceCode = validateGenerator({\n      isTop: true,\n      schema: _schema,\n      isRoot: isRoot,\n      baseId: baseId,\n      root: _root,\n      schemaPath: '',\n      errSchemaPath: '#',\n      errorPath: '\"\"',\n      MissingRefError: errorClasses.MissingRef,\n      RULES: RULES,\n      validate: validateGenerator,\n      util: util,\n      resolve: resolve,\n      resolveRef: resolveRef,\n      usePattern: usePattern,\n      useDefault: useDefault,\n      useCustomRule: useCustomRule,\n      opts: opts,\n      formats: formats,\n      logger: self.logger,\n      self: self\n    });\n\n    sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode)\n                   + vars(defaults, defaultCode) + vars(customRules, customRuleCode)\n                   + sourceCode;\n\n    if (opts.processCode) sourceCode = opts.processCode(sourceCode);\n    // console.log('\\n\\n\\n *** \\n', JSON.stringify(sourceCode));\n    var validate;\n    try {\n      var makeValidate = new Function(\n        'self',\n        'RULES',\n        'formats',\n        'root',\n        'refVal',\n        'defaults',\n        'customRules',\n        'equal',\n        'ucs2length',\n        'ValidationError',\n        sourceCode\n      );\n\n      validate = makeValidate(\n        self,\n        RULES,\n        formats,\n        root,\n        refVal,\n        defaults,\n        customRules,\n        equal,\n        ucs2length,\n        ValidationError\n      );\n\n      refVal[0] = validate;\n    } catch(e) {\n      self.logger.error('Error compiling schema, function code:', sourceCode);\n      throw e;\n    }\n\n    validate.schema = _schema;\n    validate.errors = null;\n    validate.refs = refs;\n    validate.refVal = refVal;\n    validate.root = isRoot ? validate : _root;\n    if ($async) validate.$async = true;\n    if (opts.sourceCode === true) {\n      validate.source = {\n        code: sourceCode,\n        patterns: patterns,\n        defaults: defaults\n      };\n    }\n\n    return validate;\n  }\n\n  function resolveRef(baseId, ref, isRoot) {\n    ref = resolve.url(baseId, ref);\n    var refIndex = refs[ref];\n    var _refVal, refCode;\n    if (refIndex !== undefined) {\n      _refVal = refVal[refIndex];\n      refCode = 'refVal[' + refIndex + ']';\n      return resolvedRef(_refVal, refCode);\n    }\n    if (!isRoot && root.refs) {\n      var rootRefId = root.refs[ref];\n      if (rootRefId !== undefined) {\n        _refVal = root.refVal[rootRefId];\n        refCode = addLocalRef(ref, _refVal);\n        return resolvedRef(_refVal, refCode);\n      }\n    }\n\n    refCode = addLocalRef(ref);\n    var v = resolve.call(self, localCompile, root, ref);\n    if (v === undefined) {\n      var localSchema = localRefs && localRefs[ref];\n      if (localSchema) {\n        v = resolve.inlineRef(localSchema, opts.inlineRefs)\n            ? localSchema\n            : compile.call(self, localSchema, root, localRefs, baseId);\n      }\n    }\n\n    if (v === undefined) {\n      removeLocalRef(ref);\n    } else {\n      replaceLocalRef(ref, v);\n      return resolvedRef(v, refCode);\n    }\n  }\n\n  function addLocalRef(ref, v) {\n    var refId = refVal.length;\n    refVal[refId] = v;\n    refs[ref] = refId;\n    return 'refVal' + refId;\n  }\n\n  function removeLocalRef(ref) {\n    delete refs[ref];\n  }\n\n  function replaceLocalRef(ref, v) {\n    var refId = refs[ref];\n    refVal[refId] = v;\n  }\n\n  function resolvedRef(refVal, code) {\n    return typeof refVal == 'object' || typeof refVal == 'boolean'\n            ? { code: code, schema: refVal, inline: true }\n            : { code: code, $async: refVal && !!refVal.$async };\n  }\n\n  function usePattern(regexStr) {\n    var index = patternsHash[regexStr];\n    if (index === undefined) {\n      index = patternsHash[regexStr] = patterns.length;\n      patterns[index] = regexStr;\n    }\n    return 'pattern' + index;\n  }\n\n  function useDefault(value) {\n    switch (typeof value) {\n      case 'boolean':\n      case 'number':\n        return '' + value;\n      case 'string':\n        return util.toQuotedString(value);\n      case 'object':\n        if (value === null) return 'null';\n        var valueStr = stableStringify(value);\n        var index = defaultsHash[valueStr];\n        if (index === undefined) {\n          index = defaultsHash[valueStr] = defaults.length;\n          defaults[index] = value;\n        }\n        return 'default' + index;\n    }\n  }\n\n  function useCustomRule(rule, schema, parentSchema, it) {\n    var validateSchema = rule.definition.validateSchema;\n    if (validateSchema && self._opts.validateSchema !== false) {\n      var valid = validateSchema(schema);\n      if (!valid) {\n        var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);\n        if (self._opts.validateSchema == 'log') self.logger.error(message);\n        else throw new Error(message);\n      }\n    }\n\n    var compile = rule.definition.compile\n      , inline = rule.definition.inline\n      , macro = rule.definition.macro;\n\n    var validate;\n    if (compile) {\n      validate = compile.call(self, schema, parentSchema, it);\n    } else if (macro) {\n      validate = macro.call(self, schema, parentSchema, it);\n      if (opts.validateSchema !== false) self.validateSchema(validate, true);\n    } else if (inline) {\n      validate = inline.call(self, it, rule.keyword, schema, parentSchema);\n    } else {\n      validate = rule.definition.validate;\n      if (!validate) return;\n    }\n\n    if (validate === undefined)\n      throw new Error('custom keyword \"' + rule.keyword + '\"failed to compile');\n\n    var index = customRules.length;\n    customRules[index] = validate;\n\n    return {\n      code: 'customRule' + index,\n      validate: validate\n    };\n  }\n}\n\n\n/**\n * Checks if the schema is currently compiled\n * @this   Ajv\n * @param  {Object} schema schema to compile\n * @param  {Object} root root object\n * @param  {String} baseId base schema ID\n * @return {Object} object with properties \"index\" (compilation index) and \"compiling\" (boolean)\n */\nfunction checkCompiling(schema, root, baseId) {\n  /* jshint validthis: true */\n  var index = compIndex.call(this, schema, root, baseId);\n  if (index >= 0) return { index: index, compiling: true };\n  index = this._compilations.length;\n  this._compilations[index] = {\n    schema: schema,\n    root: root,\n    baseId: baseId\n  };\n  return { index: index, compiling: false };\n}\n\n\n/**\n * Removes the schema from the currently compiled list\n * @this   Ajv\n * @param  {Object} schema schema to compile\n * @param  {Object} root root object\n * @param  {String} baseId base schema ID\n */\nfunction endCompiling(schema, root, baseId) {\n  /* jshint validthis: true */\n  var i = compIndex.call(this, schema, root, baseId);\n  if (i >= 0) this._compilations.splice(i, 1);\n}\n\n\n/**\n * Index of schema compilation in the currently compiled list\n * @this   Ajv\n * @param  {Object} schema schema to compile\n * @param  {Object} root root object\n * @param  {String} baseId base schema ID\n * @return {Integer} compilation index\n */\nfunction compIndex(schema, root, baseId) {\n  /* jshint validthis: true */\n  for (var i=0; i<this._compilations.length; i++) {\n    var c = this._compilations[i];\n    if (c.schema == schema && c.root == root && c.baseId == baseId) return i;\n  }\n  return -1;\n}\n\n\nfunction patternCode(i, patterns) {\n  return 'var pattern' + i + ' = new RegExp(' + util.toQuotedString(patterns[i]) + ');';\n}\n\n\nfunction defaultCode(i) {\n  return 'var default' + i + ' = defaults[' + i + '];';\n}\n\n\nfunction refValCode(i, refVal) {\n  return refVal[i] === undefined ? '' : 'var refVal' + i + ' = refVal[' + i + '];';\n}\n\n\nfunction customRuleCode(i) {\n  return 'var customRule' + i + ' = customRules[' + i + '];';\n}\n\n\nfunction vars(arr, statement) {\n  if (!arr.length) return '';\n  var code = '';\n  for (var i=0; i<arr.length; i++)\n    code += statement(i, arr);\n  return code;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/compile/index.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/compile/resolve.js":
  /*!*************************************************!*\
    !*** ./node_modules/ajv/lib/compile/resolve.js ***!
    \*************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nvar url = __webpack_require__(/*! url */ \"./node_modules/url/url.js\")\n  , equal = __webpack_require__(/*! fast-deep-equal */ \"./node_modules/fast-deep-equal/index.js\")\n  , util = __webpack_require__(/*! ./util */ \"./node_modules/ajv/lib/compile/util.js\")\n  , SchemaObject = __webpack_require__(/*! ./schema_obj */ \"./node_modules/ajv/lib/compile/schema_obj.js\")\n  , traverse = __webpack_require__(/*! json-schema-traverse */ \"./node_modules/json-schema-traverse/index.js\");\n\nmodule.exports = resolve;\n\nresolve.normalizeId = normalizeId;\nresolve.fullPath = getFullPath;\nresolve.url = resolveUrl;\nresolve.ids = resolveIds;\nresolve.inlineRef = inlineRef;\nresolve.schema = resolveSchema;\n\n/**\n * [resolve and compile the references ($ref)]\n * @this   Ajv\n * @param  {Function} compile reference to schema compilation funciton (localCompile)\n * @param  {Object} root object with information about the root schema for the current schema\n * @param  {String} ref reference to resolve\n * @return {Object|Function} schema object (if the schema can be inlined) or validation function\n */\nfunction resolve(compile, root, ref) {\n  /* jshint validthis: true */\n  var refVal = this._refs[ref];\n  if (typeof refVal == 'string') {\n    if (this._refs[refVal]) refVal = this._refs[refVal];\n    else return resolve.call(this, compile, root, refVal);\n  }\n\n  refVal = refVal || this._schemas[ref];\n  if (refVal instanceof SchemaObject) {\n    return inlineRef(refVal.schema, this._opts.inlineRefs)\n            ? refVal.schema\n            : refVal.validate || this._compile(refVal);\n  }\n\n  var res = resolveSchema.call(this, root, ref);\n  var schema, v, baseId;\n  if (res) {\n    schema = res.schema;\n    root = res.root;\n    baseId = res.baseId;\n  }\n\n  if (schema instanceof SchemaObject) {\n    v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId);\n  } else if (schema !== undefined) {\n    v = inlineRef(schema, this._opts.inlineRefs)\n        ? schema\n        : compile.call(this, schema, root, undefined, baseId);\n  }\n\n  return v;\n}\n\n\n/**\n * Resolve schema, its root and baseId\n * @this Ajv\n * @param  {Object} root root object with properties schema, refVal, refs\n * @param  {String} ref  reference to resolve\n * @return {Object} object with properties schema, root, baseId\n */\nfunction resolveSchema(root, ref) {\n  /* jshint validthis: true */\n  var p = url.parse(ref, false, true)\n    , refPath = _getFullPath(p)\n    , baseId = getFullPath(this._getId(root.schema));\n  if (refPath !== baseId) {\n    var id = normalizeId(refPath);\n    var refVal = this._refs[id];\n    if (typeof refVal == 'string') {\n      return resolveRecursive.call(this, root, refVal, p);\n    } else if (refVal instanceof SchemaObject) {\n      if (!refVal.validate) this._compile(refVal);\n      root = refVal;\n    } else {\n      refVal = this._schemas[id];\n      if (refVal instanceof SchemaObject) {\n        if (!refVal.validate) this._compile(refVal);\n        if (id == normalizeId(ref))\n          return { schema: refVal, root: root, baseId: baseId };\n        root = refVal;\n      } else {\n        return;\n      }\n    }\n    if (!root.schema) return;\n    baseId = getFullPath(this._getId(root.schema));\n  }\n  return getJsonPointer.call(this, p, baseId, root.schema, root);\n}\n\n\n/* @this Ajv */\nfunction resolveRecursive(root, ref, parsedRef) {\n  /* jshint validthis: true */\n  var res = resolveSchema.call(this, root, ref);\n  if (res) {\n    var schema = res.schema;\n    var baseId = res.baseId;\n    root = res.root;\n    var id = this._getId(schema);\n    if (id) baseId = resolveUrl(baseId, id);\n    return getJsonPointer.call(this, parsedRef, baseId, schema, root);\n  }\n}\n\n\nvar PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']);\n/* @this Ajv */\nfunction getJsonPointer(parsedRef, baseId, schema, root) {\n  /* jshint validthis: true */\n  parsedRef.hash = parsedRef.hash || '';\n  if (parsedRef.hash.slice(0,2) != '#/') return;\n  var parts = parsedRef.hash.split('/');\n\n  for (var i = 1; i < parts.length; i++) {\n    var part = parts[i];\n    if (part) {\n      part = util.unescapeFragment(part);\n      schema = schema[part];\n      if (schema === undefined) break;\n      var id;\n      if (!PREVENT_SCOPE_CHANGE[part]) {\n        id = this._getId(schema);\n        if (id) baseId = resolveUrl(baseId, id);\n        if (schema.$ref) {\n          var $ref = resolveUrl(baseId, schema.$ref);\n          var res = resolveSchema.call(this, root, $ref);\n          if (res) {\n            schema = res.schema;\n            root = res.root;\n            baseId = res.baseId;\n          }\n        }\n      }\n    }\n  }\n  if (schema !== undefined && schema !== root.schema)\n    return { schema: schema, root: root, baseId: baseId };\n}\n\n\nvar SIMPLE_INLINED = util.toHash([\n  'type', 'format', 'pattern',\n  'maxLength', 'minLength',\n  'maxProperties', 'minProperties',\n  'maxItems', 'minItems',\n  'maximum', 'minimum',\n  'uniqueItems', 'multipleOf',\n  'required', 'enum'\n]);\nfunction inlineRef(schema, limit) {\n  if (limit === false) return false;\n  if (limit === undefined || limit === true) return checkNoRef(schema);\n  else if (limit) return countKeys(schema) <= limit;\n}\n\n\nfunction checkNoRef(schema) {\n  var item;\n  if (Array.isArray(schema)) {\n    for (var i=0; i<schema.length; i++) {\n      item = schema[i];\n      if (typeof item == 'object' && !checkNoRef(item)) return false;\n    }\n  } else {\n    for (var key in schema) {\n      if (key == '$ref') return false;\n      item = schema[key];\n      if (typeof item == 'object' && !checkNoRef(item)) return false;\n    }\n  }\n  return true;\n}\n\n\nfunction countKeys(schema) {\n  var count = 0, item;\n  if (Array.isArray(schema)) {\n    for (var i=0; i<schema.length; i++) {\n      item = schema[i];\n      if (typeof item == 'object') count += countKeys(item);\n      if (count == Infinity) return Infinity;\n    }\n  } else {\n    for (var key in schema) {\n      if (key == '$ref') return Infinity;\n      if (SIMPLE_INLINED[key]) {\n        count++;\n      } else {\n        item = schema[key];\n        if (typeof item == 'object') count += countKeys(item) + 1;\n        if (count == Infinity) return Infinity;\n      }\n    }\n  }\n  return count;\n}\n\n\nfunction getFullPath(id, normalize) {\n  if (normalize !== false) id = normalizeId(id);\n  var p = url.parse(id, false, true);\n  return _getFullPath(p);\n}\n\n\nfunction _getFullPath(p) {\n  var protocolSeparator = p.protocol || p.href.slice(0,2) == '//' ? '//' : '';\n  return (p.protocol||'') + protocolSeparator + (p.host||'') + (p.path||'')  + '#';\n}\n\n\nvar TRAILING_SLASH_HASH = /#\\/?$/;\nfunction normalizeId(id) {\n  return id ? id.replace(TRAILING_SLASH_HASH, '') : '';\n}\n\n\nfunction resolveUrl(baseId, id) {\n  id = normalizeId(id);\n  return url.resolve(baseId, id);\n}\n\n\n/* @this Ajv */\nfunction resolveIds(schema) {\n  var schemaId = normalizeId(this._getId(schema));\n  var baseIds = {'': schemaId};\n  var fullPaths = {'': getFullPath(schemaId, false)};\n  var localRefs = {};\n  var self = this;\n\n  traverse(schema, {allKeys: true}, function(sch, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n    if (jsonPtr === '') return;\n    var id = self._getId(sch);\n    var baseId = baseIds[parentJsonPtr];\n    var fullPath = fullPaths[parentJsonPtr] + '/' + parentKeyword;\n    if (keyIndex !== undefined)\n      fullPath += '/' + (typeof keyIndex == 'number' ? keyIndex : util.escapeFragment(keyIndex));\n\n    if (typeof id == 'string') {\n      id = baseId = normalizeId(baseId ? url.resolve(baseId, id) : id);\n\n      var refVal = self._refs[id];\n      if (typeof refVal == 'string') refVal = self._refs[refVal];\n      if (refVal && refVal.schema) {\n        if (!equal(sch, refVal.schema))\n          throw new Error('id \"' + id + '\" resolves to more than one schema');\n      } else if (id != normalizeId(fullPath)) {\n        if (id[0] == '#') {\n          if (localRefs[id] && !equal(sch, localRefs[id]))\n            throw new Error('id \"' + id + '\" resolves to more than one schema');\n          localRefs[id] = sch;\n        } else {\n          self._refs[id] = fullPath;\n        }\n      }\n    }\n    baseIds[jsonPtr] = baseId;\n    fullPaths[jsonPtr] = fullPath;\n  });\n\n  return localRefs;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/compile/resolve.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/compile/rules.js":
  /*!***********************************************!*\
    !*** ./node_modules/ajv/lib/compile/rules.js ***!
    \***********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nvar ruleModules = __webpack_require__(/*! ../dotjs */ \"./node_modules/ajv/lib/dotjs/index.js\")\n  , toHash = __webpack_require__(/*! ./util */ \"./node_modules/ajv/lib/compile/util.js\").toHash;\n\nmodule.exports = function rules() {\n  var RULES = [\n    { type: 'number',\n      rules: [ { 'maximum': ['exclusiveMaximum'] },\n               { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] },\n    { type: 'string',\n      rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },\n    { type: 'array',\n      rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] },\n    { type: 'object',\n      rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames',\n               { 'properties': ['additionalProperties', 'patternProperties'] } ] },\n    { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] }\n  ];\n\n  var ALL = [ 'type', '$comment' ];\n  var KEYWORDS = [\n    '$schema', '$id', 'id', '$data', 'title',\n    'description', 'default', 'definitions',\n    'examples', 'readOnly', 'writeOnly',\n    'contentMediaType', 'contentEncoding',\n    'additionalItems', 'then', 'else'\n  ];\n  var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];\n  RULES.all = toHash(ALL);\n  RULES.types = toHash(TYPES);\n\n  RULES.forEach(function (group) {\n    group.rules = group.rules.map(function (keyword) {\n      var implKeywords;\n      if (typeof keyword == 'object') {\n        var key = Object.keys(keyword)[0];\n        implKeywords = keyword[key];\n        keyword = key;\n        implKeywords.forEach(function (k) {\n          ALL.push(k);\n          RULES.all[k] = true;\n        });\n      }\n      ALL.push(keyword);\n      var rule = RULES.all[keyword] = {\n        keyword: keyword,\n        code: ruleModules[keyword],\n        implements: implKeywords\n      };\n      return rule;\n    });\n\n    RULES.all.$comment = {\n      keyword: '$comment',\n      code: ruleModules.$comment\n    };\n\n    if (group.type) RULES.types[group.type] = group;\n  });\n\n  RULES.keywords = toHash(ALL.concat(KEYWORDS));\n  RULES.custom = {};\n\n  return RULES;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/compile/rules.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/compile/schema_obj.js":
  /*!****************************************************!*\
    !*** ./node_modules/ajv/lib/compile/schema_obj.js ***!
    \****************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nvar util = __webpack_require__(/*! ./util */ \"./node_modules/ajv/lib/compile/util.js\");\n\nmodule.exports = SchemaObject;\n\nfunction SchemaObject(obj) {\n  util.copy(obj, this);\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/compile/schema_obj.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/compile/ucs2length.js":
  /*!****************************************************!*\
    !*** ./node_modules/ajv/lib/compile/ucs2length.js ***!
    \****************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\n// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nmodule.exports = function ucs2length(str) {\n  var length = 0\n    , len = str.length\n    , pos = 0\n    , value;\n  while (pos < len) {\n    length++;\n    value = str.charCodeAt(pos++);\n    if (value >= 0xD800 && value <= 0xDBFF && pos < len) {\n      // high surrogate, and there is a next character\n      value = str.charCodeAt(pos);\n      if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate\n    }\n  }\n  return length;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/compile/ucs2length.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/compile/util.js":
  /*!**********************************************!*\
    !*** ./node_modules/ajv/lib/compile/util.js ***!
    \**********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\n\nmodule.exports = {\n  copy: copy,\n  checkDataType: checkDataType,\n  checkDataTypes: checkDataTypes,\n  coerceToTypes: coerceToTypes,\n  toHash: toHash,\n  getProperty: getProperty,\n  escapeQuotes: escapeQuotes,\n  equal: __webpack_require__(/*! fast-deep-equal */ \"./node_modules/fast-deep-equal/index.js\"),\n  ucs2length: __webpack_require__(/*! ./ucs2length */ \"./node_modules/ajv/lib/compile/ucs2length.js\"),\n  varOccurences: varOccurences,\n  varReplace: varReplace,\n  cleanUpCode: cleanUpCode,\n  finalCleanUpCode: finalCleanUpCode,\n  schemaHasRules: schemaHasRules,\n  schemaHasRulesExcept: schemaHasRulesExcept,\n  toQuotedString: toQuotedString,\n  getPathExpr: getPathExpr,\n  getPath: getPath,\n  getData: getData,\n  unescapeFragment: unescapeFragment,\n  unescapeJsonPointer: unescapeJsonPointer,\n  escapeFragment: escapeFragment,\n  escapeJsonPointer: escapeJsonPointer\n};\n\n\nfunction copy(o, to) {\n  to = to || {};\n  for (var key in o) to[key] = o[key];\n  return to;\n}\n\n\nfunction checkDataType(dataType, data, negate) {\n  var EQUAL = negate ? ' !== ' : ' === '\n    , AND = negate ? ' || ' : ' && '\n    , OK = negate ? '!' : ''\n    , NOT = negate ? '' : '!';\n  switch (dataType) {\n    case 'null': return data + EQUAL + 'null';\n    case 'array': return OK + 'Array.isArray(' + data + ')';\n    case 'object': return '(' + OK + data + AND +\n                          'typeof ' + data + EQUAL + '\"object\"' + AND +\n                          NOT + 'Array.isArray(' + data + '))';\n    case 'integer': return '(typeof ' + data + EQUAL + '\"number\"' + AND +\n                           NOT + '(' + data + ' % 1)' +\n                           AND + data + EQUAL + data + ')';\n    default: return 'typeof ' + data + EQUAL + '\"' + dataType + '\"';\n  }\n}\n\n\nfunction checkDataTypes(dataTypes, data) {\n  switch (dataTypes.length) {\n    case 1: return checkDataType(dataTypes[0], data, true);\n    default:\n      var code = '';\n      var types = toHash(dataTypes);\n      if (types.array && types.object) {\n        code = types.null ? '(': '(!' + data + ' || ';\n        code += 'typeof ' + data + ' !== \"object\")';\n        delete types.null;\n        delete types.array;\n        delete types.object;\n      }\n      if (types.number) delete types.integer;\n      for (var t in types)\n        code += (code ? ' && ' : '' ) + checkDataType(t, data, true);\n\n      return code;\n  }\n}\n\n\nvar COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);\nfunction coerceToTypes(optionCoerceTypes, dataTypes) {\n  if (Array.isArray(dataTypes)) {\n    var types = [];\n    for (var i=0; i<dataTypes.length; i++) {\n      var t = dataTypes[i];\n      if (COERCE_TO_TYPES[t]) types[types.length] = t;\n      else if (optionCoerceTypes === 'array' && t === 'array') types[types.length] = t;\n    }\n    if (types.length) return types;\n  } else if (COERCE_TO_TYPES[dataTypes]) {\n    return [dataTypes];\n  } else if (optionCoerceTypes === 'array' && dataTypes === 'array') {\n    return ['array'];\n  }\n}\n\n\nfunction toHash(arr) {\n  var hash = {};\n  for (var i=0; i<arr.length; i++) hash[arr[i]] = true;\n  return hash;\n}\n\n\nvar IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;\nvar SINGLE_QUOTE = /'|\\\\/g;\nfunction getProperty(key) {\n  return typeof key == 'number'\n          ? '[' + key + ']'\n          : IDENTIFIER.test(key)\n            ? '.' + key\n            : \"['\" + escapeQuotes(key) + \"']\";\n}\n\n\nfunction escapeQuotes(str) {\n  return str.replace(SINGLE_QUOTE, '\\\\$&')\n            .replace(/\\n/g, '\\\\n')\n            .replace(/\\r/g, '\\\\r')\n            .replace(/\\f/g, '\\\\f')\n            .replace(/\\t/g, '\\\\t');\n}\n\n\nfunction varOccurences(str, dataVar) {\n  dataVar += '[^0-9]';\n  var matches = str.match(new RegExp(dataVar, 'g'));\n  return matches ? matches.length : 0;\n}\n\n\nfunction varReplace(str, dataVar, expr) {\n  dataVar += '([^0-9])';\n  expr = expr.replace(/\\$/g, '$$$$');\n  return str.replace(new RegExp(dataVar, 'g'), expr + '$1');\n}\n\n\nvar EMPTY_ELSE = /else\\s*{\\s*}/g\n  , EMPTY_IF_NO_ELSE = /if\\s*\\([^)]+\\)\\s*\\{\\s*\\}(?!\\s*else)/g\n  , EMPTY_IF_WITH_ELSE = /if\\s*\\(([^)]+)\\)\\s*\\{\\s*\\}\\s*else(?!\\s*if)/g;\nfunction cleanUpCode(out) {\n  return out.replace(EMPTY_ELSE, '')\n            .replace(EMPTY_IF_NO_ELSE, '')\n            .replace(EMPTY_IF_WITH_ELSE, 'if (!($1))');\n}\n\n\nvar ERRORS_REGEXP = /[^v.]errors/g\n  , REMOVE_ERRORS = /var errors = 0;|var vErrors = null;|validate.errors = vErrors;/g\n  , REMOVE_ERRORS_ASYNC = /var errors = 0;|var vErrors = null;/g\n  , RETURN_VALID = 'return errors === 0;'\n  , RETURN_TRUE = 'validate.errors = null; return true;'\n  , RETURN_ASYNC = /if \\(errors === 0\\) return data;\\s*else throw new ValidationError\\(vErrors\\);/\n  , RETURN_DATA_ASYNC = 'return data;'\n  , ROOTDATA_REGEXP = /[^A-Za-z_$]rootData[^A-Za-z0-9_$]/g\n  , REMOVE_ROOTDATA = /if \\(rootData === undefined\\) rootData = data;/;\n\nfunction finalCleanUpCode(out, async) {\n  var matches = out.match(ERRORS_REGEXP);\n  if (matches && matches.length == 2) {\n    out = async\n          ? out.replace(REMOVE_ERRORS_ASYNC, '')\n               .replace(RETURN_ASYNC, RETURN_DATA_ASYNC)\n          : out.replace(REMOVE_ERRORS, '')\n               .replace(RETURN_VALID, RETURN_TRUE);\n  }\n\n  matches = out.match(ROOTDATA_REGEXP);\n  if (!matches || matches.length !== 3) return out;\n  return out.replace(REMOVE_ROOTDATA, '');\n}\n\n\nfunction schemaHasRules(schema, rules) {\n  if (typeof schema == 'boolean') return !schema;\n  for (var key in schema) if (rules[key]) return true;\n}\n\n\nfunction schemaHasRulesExcept(schema, rules, exceptKeyword) {\n  if (typeof schema == 'boolean') return !schema && exceptKeyword != 'not';\n  for (var key in schema) if (key != exceptKeyword && rules[key]) return true;\n}\n\n\nfunction toQuotedString(str) {\n  return '\\'' + escapeQuotes(str) + '\\'';\n}\n\n\nfunction getPathExpr(currentPath, expr, jsonPointers, isNumber) {\n  var path = jsonPointers // false by default\n              ? '\\'/\\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \\'~0\\').replace(/\\\\//g, \\'~1\\')')\n              : (isNumber ? '\\'[\\' + ' + expr + ' + \\']\\'' : '\\'[\\\\\\'\\' + ' + expr + ' + \\'\\\\\\']\\'');\n  return joinPaths(currentPath, path);\n}\n\n\nfunction getPath(currentPath, prop, jsonPointers) {\n  var path = jsonPointers // false by default\n              ? toQuotedString('/' + escapeJsonPointer(prop))\n              : toQuotedString(getProperty(prop));\n  return joinPaths(currentPath, path);\n}\n\n\nvar JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/;\nvar RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/;\nfunction getData($data, lvl, paths) {\n  var up, jsonPointer, data, matches;\n  if ($data === '') return 'rootData';\n  if ($data[0] == '/') {\n    if (!JSON_POINTER.test($data)) throw new Error('Invalid JSON-pointer: ' + $data);\n    jsonPointer = $data;\n    data = 'rootData';\n  } else {\n    matches = $data.match(RELATIVE_JSON_POINTER);\n    if (!matches) throw new Error('Invalid JSON-pointer: ' + $data);\n    up = +matches[1];\n    jsonPointer = matches[2];\n    if (jsonPointer == '#') {\n      if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);\n      return paths[lvl - up];\n    }\n\n    if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);\n    data = 'data' + ((lvl - up) || '');\n    if (!jsonPointer) return data;\n  }\n\n  var expr = data;\n  var segments = jsonPointer.split('/');\n  for (var i=0; i<segments.length; i++) {\n    var segment = segments[i];\n    if (segment) {\n      data += getProperty(unescapeJsonPointer(segment));\n      expr += ' && ' + data;\n    }\n  }\n  return expr;\n}\n\n\nfunction joinPaths (a, b) {\n  if (a == '\"\"') return b;\n  return (a + ' + ' + b).replace(/' \\+ '/g, '');\n}\n\n\nfunction unescapeFragment(str) {\n  return unescapeJsonPointer(decodeURIComponent(str));\n}\n\n\nfunction escapeFragment(str) {\n  return encodeURIComponent(escapeJsonPointer(str));\n}\n\n\nfunction escapeJsonPointer(str) {\n  return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n\n\nfunction unescapeJsonPointer(str) {\n  return str.replace(/~1/g, '/').replace(/~0/g, '~');\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/compile/util.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/data.js":
  /*!**************************************!*\
    !*** ./node_modules/ajv/lib/data.js ***!
    \**************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nvar KEYWORDS = [\n  'multipleOf',\n  'maximum',\n  'exclusiveMaximum',\n  'minimum',\n  'exclusiveMinimum',\n  'maxLength',\n  'minLength',\n  'pattern',\n  'additionalItems',\n  'maxItems',\n  'minItems',\n  'uniqueItems',\n  'maxProperties',\n  'minProperties',\n  'required',\n  'additionalProperties',\n  'enum',\n  'format',\n  'const'\n];\n\nmodule.exports = function (metaSchema, keywordsJsonPointers) {\n  for (var i=0; i<keywordsJsonPointers.length; i++) {\n    metaSchema = JSON.parse(JSON.stringify(metaSchema));\n    var segments = keywordsJsonPointers[i].split('/');\n    var keywords = metaSchema;\n    var j;\n    for (j=1; j<segments.length; j++)\n      keywords = keywords[segments[j]];\n\n    for (j=0; j<KEYWORDS.length; j++) {\n      var key = KEYWORDS[j];\n      var schema = keywords[key];\n      if (schema) {\n        keywords[key] = {\n          anyOf: [\n            schema,\n            { $ref: 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#' }\n          ]\n        };\n      }\n    }\n  }\n\n  return metaSchema;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/data.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/_limit.js":
  /*!**********************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/_limit.js ***!
    \**********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate__limit(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $isMax = $keyword == 'maximum',\n    $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum',\n    $schemaExcl = it.schema[$exclusiveKeyword],\n    $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data,\n    $op = $isMax ? '<' : '>',\n    $notOp = $isMax ? '>' : '<',\n    $errorKeyword = undefined;\n  if ($isDataExcl) {\n    var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),\n      $exclusive = 'exclusive' + $lvl,\n      $exclType = 'exclType' + $lvl,\n      $exclIsNumber = 'exclIsNumber' + $lvl,\n      $opExpr = 'op' + $lvl,\n      $opStr = '\\' + ' + $opExpr + ' + \\'';\n    out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';\n    $schemaValueExcl = 'schemaExcl' + $lvl;\n    out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \\'boolean\\' && ' + ($exclType) + ' != \\'undefined\\' && ' + ($exclType) + ' != \\'number\\') { ';\n    var $errorKeyword = $exclusiveKeyword;\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = ''; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ($errorKeyword || '_exclusiveLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'' + ($exclusiveKeyword) + ' should be boolean\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    var __err = out;\n    out = $$outStack.pop();\n    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError([' + (__err) + ']); ';\n      } else {\n        out += ' validate.errors = [' + (__err) + ']; return false; ';\n      }\n    } else {\n      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    }\n    out += ' } else if ( ';\n    if ($isData) {\n      out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n    }\n    out += ' ' + ($exclType) + ' == \\'number\\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \\'' + ($op) + '\\' : \\'' + ($op) + '=\\'; ';\n    if ($schema === undefined) {\n      $errorKeyword = $exclusiveKeyword;\n      $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n      $schemaValue = $schemaValueExcl;\n      $isData = $isDataExcl;\n    }\n  } else {\n    var $exclIsNumber = typeof $schemaExcl == 'number',\n      $opStr = $op;\n    if ($exclIsNumber && $isData) {\n      var $opExpr = '\\'' + $opStr + '\\'';\n      out += ' if ( ';\n      if ($isData) {\n        out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n      }\n      out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { ';\n    } else {\n      if ($exclIsNumber && $schema === undefined) {\n        $exclusive = true;\n        $errorKeyword = $exclusiveKeyword;\n        $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n        $schemaValue = $schemaExcl;\n        $notOp += '=';\n      } else {\n        if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);\n        if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {\n          $exclusive = true;\n          $errorKeyword = $exclusiveKeyword;\n          $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n          $notOp += '=';\n        } else {\n          $exclusive = false;\n          $opStr += '=';\n        }\n      }\n      var $opExpr = '\\'' + $opStr + '\\'';\n      out += ' if ( ';\n      if ($isData) {\n        out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n      }\n      out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { ';\n    }\n  }\n  $errorKeyword = $errorKeyword || $keyword;\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ($errorKeyword || '_limit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should be ' + ($opStr) + ' ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue);\n      } else {\n        out += '' + ($schemaValue) + '\\'';\n      }\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' } ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/_limit.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/_limitItems.js":
  /*!***************************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/_limitItems.js ***!
    \***************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate__limitItems(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $op = $keyword == 'maxItems' ? '>' : '<';\n  out += 'if ( ';\n  if ($isData) {\n    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n  }\n  out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n  var $errorKeyword = $keyword;\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ($errorKeyword || '_limitItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should NOT have ';\n      if ($keyword == 'maxItems') {\n        out += 'more';\n      } else {\n        out += 'less';\n      }\n      out += ' than ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + ($schema);\n      }\n      out += ' items\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/_limitItems.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/_limitLength.js":
  /*!****************************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/_limitLength.js ***!
    \****************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate__limitLength(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $op = $keyword == 'maxLength' ? '>' : '<';\n  out += 'if ( ';\n  if ($isData) {\n    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n  }\n  if (it.opts.unicode === false) {\n    out += ' ' + ($data) + '.length ';\n  } else {\n    out += ' ucs2length(' + ($data) + ') ';\n  }\n  out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';\n  var $errorKeyword = $keyword;\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ($errorKeyword || '_limitLength') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should NOT be ';\n      if ($keyword == 'maxLength') {\n        out += 'longer';\n      } else {\n        out += 'shorter';\n      }\n      out += ' than ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + ($schema);\n      }\n      out += ' characters\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/_limitLength.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/_limitProperties.js":
  /*!********************************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/_limitProperties.js ***!
    \********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate__limitProperties(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $op = $keyword == 'maxProperties' ? '>' : '<';\n  out += 'if ( ';\n  if ($isData) {\n    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n  }\n  out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n  var $errorKeyword = $keyword;\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ($errorKeyword || '_limitProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should NOT have ';\n      if ($keyword == 'maxProperties') {\n        out += 'more';\n      } else {\n        out += 'less';\n      }\n      out += ' than ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + ($schema);\n      }\n      out += ' properties\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/_limitProperties.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/allOf.js":
  /*!*********************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/allOf.js ***!
    \*********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_allOf(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $currentBaseId = $it.baseId,\n    $allSchemasEmpty = true;\n  var arr1 = $schema;\n  if (arr1) {\n    var $sch, $i = -1,\n      l1 = arr1.length - 1;\n    while ($i < l1) {\n      $sch = arr1[$i += 1];\n      if (it.util.schemaHasRules($sch, it.RULES.all)) {\n        $allSchemasEmpty = false;\n        $it.schema = $sch;\n        $it.schemaPath = $schemaPath + '[' + $i + ']';\n        $it.errSchemaPath = $errSchemaPath + '/' + $i;\n        out += '  ' + (it.validate($it)) + ' ';\n        $it.baseId = $currentBaseId;\n        if ($breakOnError) {\n          out += ' if (' + ($nextValid) + ') { ';\n          $closingBraces += '}';\n        }\n      }\n    }\n  }\n  if ($breakOnError) {\n    if ($allSchemasEmpty) {\n      out += ' if (true) { ';\n    } else {\n      out += ' ' + ($closingBraces.slice(0, -1)) + ' ';\n    }\n  }\n  out = it.util.cleanUpCode(out);\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/allOf.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/anyOf.js":
  /*!*********************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/anyOf.js ***!
    \*********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_anyOf(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $noEmptySchema = $schema.every(function($sch) {\n    return it.util.schemaHasRules($sch, it.RULES.all);\n  });\n  if ($noEmptySchema) {\n    var $currentBaseId = $it.baseId;\n    out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false;  ';\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    var arr1 = $schema;\n    if (arr1) {\n      var $sch, $i = -1,\n        l1 = arr1.length - 1;\n      while ($i < l1) {\n        $sch = arr1[$i += 1];\n        $it.schema = $sch;\n        $it.schemaPath = $schemaPath + '[' + $i + ']';\n        $it.errSchemaPath = $errSchemaPath + '/' + $i;\n        out += '  ' + (it.validate($it)) + ' ';\n        $it.baseId = $currentBaseId;\n        out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { ';\n        $closingBraces += '}';\n      }\n    }\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('anyOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should match some schema in anyOf\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError(vErrors); ';\n      } else {\n        out += ' validate.errors = vErrors; return false; ';\n      }\n    }\n    out += ' } else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n    if (it.opts.allErrors) {\n      out += ' } ';\n    }\n    out = it.util.cleanUpCode(out);\n  } else {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/anyOf.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/comment.js":
  /*!***********************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/comment.js ***!
    \***********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_comment(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $schema = it.schema[$keyword];\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $comment = it.util.toQuotedString($schema);\n  if (it.opts.$comment === true) {\n    out += ' console.log(' + ($comment) + ');';\n  } else if (typeof it.opts.$comment == 'function') {\n    out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);';\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/comment.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/const.js":
  /*!*********************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/const.js ***!
    \*********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_const(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  if (!$isData) {\n    out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';\n  }\n  out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') {   ';\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('const') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should be equal to constant\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' }';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/const.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/contains.js":
  /*!************************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/contains.js ***!
    \************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_contains(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $idx = 'i' + $lvl,\n    $dataNxt = $it.dataLevel = it.dataLevel + 1,\n    $nextData = 'data' + $dataNxt,\n    $currentBaseId = it.baseId,\n    $nonEmptySchema = it.util.schemaHasRules($schema, it.RULES.all);\n  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n  if ($nonEmptySchema) {\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n    $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n    var $passData = $data + '[' + $idx + ']';\n    $it.dataPathArr[$dataNxt] = $idx;\n    var $code = it.validate($it);\n    $it.baseId = $currentBaseId;\n    if (it.util.varOccurences($code, $nextData) < 2) {\n      out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n    } else {\n      out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n    }\n    out += ' if (' + ($nextValid) + ') break; }  ';\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {';\n  } else {\n    out += ' if (' + ($data) + '.length == 0) {';\n  }\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('contains') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should contain a valid item\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' } else { ';\n  if ($nonEmptySchema) {\n    out += '  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n  }\n  if (it.opts.allErrors) {\n    out += ' } ';\n  }\n  out = it.util.cleanUpCode(out);\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/contains.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/custom.js":
  /*!**********************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/custom.js ***!
    \**********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_custom(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $rule = this,\n    $definition = 'definition' + $lvl,\n    $rDef = $rule.definition,\n    $closingBraces = '';\n  var $compile, $inline, $macro, $ruleValidate, $validateCode;\n  if ($isData && $rDef.$data) {\n    $validateCode = 'keywordValidate' + $lvl;\n    var $validateSchema = $rDef.validateSchema;\n    out += ' var ' + ($definition) + ' = RULES.custom[\\'' + ($keyword) + '\\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;';\n  } else {\n    $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);\n    if (!$ruleValidate) return;\n    $schemaValue = 'validate.schema' + $schemaPath;\n    $validateCode = $ruleValidate.code;\n    $compile = $rDef.compile;\n    $inline = $rDef.inline;\n    $macro = $rDef.macro;\n  }\n  var $ruleErrs = $validateCode + '.errors',\n    $i = 'i' + $lvl,\n    $ruleErr = 'ruleErr' + $lvl,\n    $asyncKeyword = $rDef.async;\n  if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema');\n  if (!($inline || $macro)) {\n    out += '' + ($ruleErrs) + ' = null;';\n  }\n  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n  if ($isData && $rDef.$data) {\n    $closingBraces += '}';\n    out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { ';\n    if ($validateSchema) {\n      $closingBraces += '}';\n      out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { ';\n    }\n  }\n  if ($inline) {\n    if ($rDef.statements) {\n      out += ' ' + ($ruleValidate.validate) + ' ';\n    } else {\n      out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; ';\n    }\n  } else if ($macro) {\n    var $it = it.util.copy(it);\n    var $closingBraces = '';\n    $it.level++;\n    var $nextValid = 'valid' + $it.level;\n    $it.schema = $ruleValidate.validate;\n    $it.schemaPath = '';\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    var $code = it.validate($it).replace(/validate\\.schema/g, $validateCode);\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' ' + ($code);\n  } else {\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = '';\n    out += '  ' + ($validateCode) + '.call( ';\n    if (it.opts.passContext) {\n      out += 'this';\n    } else {\n      out += 'self';\n    }\n    if ($compile || $rDef.schema === false) {\n      out += ' , ' + ($data) + ' ';\n    } else {\n      out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' ';\n    }\n    out += ' , (dataPath || \\'\\')';\n    if (it.errorPath != '\"\"') {\n      out += ' + ' + (it.errorPath);\n    }\n    var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n      $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n    out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData )  ';\n    var def_callRuleValidate = out;\n    out = $$outStack.pop();\n    if ($rDef.errors === false) {\n      out += ' ' + ($valid) + ' = ';\n      if ($asyncKeyword) {\n        out += 'await ';\n      }\n      out += '' + (def_callRuleValidate) + '; ';\n    } else {\n      if ($asyncKeyword) {\n        $ruleErrs = 'customErrors' + $lvl;\n        out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } ';\n      } else {\n        out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; ';\n      }\n    }\n  }\n  if ($rDef.modifying) {\n    out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];';\n  }\n  out += '' + ($closingBraces);\n  if ($rDef.valid) {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n  } else {\n    out += ' if ( ';\n    if ($rDef.valid === undefined) {\n      out += ' !';\n      if ($macro) {\n        out += '' + ($nextValid);\n      } else {\n        out += '' + ($valid);\n      }\n    } else {\n      out += ' ' + (!$rDef.valid) + ' ';\n    }\n    out += ') { ';\n    $errorKeyword = $rule.keyword;\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = '';\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = ''; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ($errorKeyword || 'custom') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \\'' + ($rule.keyword) + '\\' } ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should pass \"' + ($rule.keyword) + '\" keyword validation\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    var __err = out;\n    out = $$outStack.pop();\n    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError([' + (__err) + ']); ';\n      } else {\n        out += ' validate.errors = [' + (__err) + ']; return false; ';\n      }\n    } else {\n      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    }\n    var def_customError = out;\n    out = $$outStack.pop();\n    if ($inline) {\n      if ($rDef.errors) {\n        if ($rDef.errors != 'full') {\n          out += '  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\"; } ';\n          if (it.opts.verbose) {\n            out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n          }\n          out += ' } ';\n        }\n      } else {\n        if ($rDef.errors === false) {\n          out += ' ' + (def_customError) + ' ';\n        } else {\n          out += ' if (' + ($errs) + ' == errors) { ' + (def_customError) + ' } else {  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\"; } ';\n          if (it.opts.verbose) {\n            out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n          }\n          out += ' } } ';\n        }\n      }\n    } else if ($macro) {\n      out += '   var err =   '; /* istanbul ignore else */\n      if (it.createErrors !== false) {\n        out += ' { keyword: \\'' + ($errorKeyword || 'custom') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \\'' + ($rule.keyword) + '\\' } ';\n        if (it.opts.messages !== false) {\n          out += ' , message: \\'should pass \"' + ($rule.keyword) + '\" keyword validation\\' ';\n        }\n        if (it.opts.verbose) {\n          out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n        }\n        out += ' } ';\n      } else {\n        out += ' {} ';\n      }\n      out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n      if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n        if (it.async) {\n          out += ' throw new ValidationError(vErrors); ';\n        } else {\n          out += ' validate.errors = vErrors; return false; ';\n        }\n      }\n    } else {\n      if ($rDef.errors === false) {\n        out += ' ' + (def_customError) + ' ';\n      } else {\n        out += ' if (Array.isArray(' + ($ruleErrs) + ')) { if (vErrors === null) vErrors = ' + ($ruleErrs) + '; else vErrors = vErrors.concat(' + ($ruleErrs) + '); errors = vErrors.length;  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + ';  ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\";  ';\n        if (it.opts.verbose) {\n          out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n        }\n        out += ' } } else { ' + (def_customError) + ' } ';\n      }\n    }\n    out += ' } ';\n    if ($breakOnError) {\n      out += ' else { ';\n    }\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/custom.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/dependencies.js":
  /*!****************************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/dependencies.js ***!
    \****************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_dependencies(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $schemaDeps = {},\n    $propertyDeps = {},\n    $ownProperties = it.opts.ownProperties;\n  for ($property in $schema) {\n    var $sch = $schema[$property];\n    var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;\n    $deps[$property] = $sch;\n  }\n  out += 'var ' + ($errs) + ' = errors;';\n  var $currentErrorPath = it.errorPath;\n  out += 'var missing' + ($lvl) + ';';\n  for (var $property in $propertyDeps) {\n    $deps = $propertyDeps[$property];\n    if ($deps.length) {\n      out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n      if ($ownProperties) {\n        out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n      }\n      if ($breakOnError) {\n        out += ' && ( ';\n        var arr1 = $deps;\n        if (arr1) {\n          var $propertyKey, $i = -1,\n            l1 = arr1.length - 1;\n          while ($i < l1) {\n            $propertyKey = arr1[$i += 1];\n            if ($i) {\n              out += ' || ';\n            }\n            var $prop = it.util.getProperty($propertyKey),\n              $useData = $data + $prop;\n            out += ' ( ( ' + ($useData) + ' === undefined ';\n            if ($ownProperties) {\n              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n            }\n            out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n          }\n        }\n        out += ')) {  ';\n        var $propertyPath = 'missing' + $lvl,\n          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n        if (it.opts._errorDataPathProperty) {\n          it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n        }\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'should have ';\n            if ($deps.length == 1) {\n              out += 'property ' + (it.util.escapeQuotes($deps[0]));\n            } else {\n              out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n            }\n            out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n      } else {\n        out += ' ) { ';\n        var arr2 = $deps;\n        if (arr2) {\n          var $propertyKey, i2 = -1,\n            l2 = arr2.length - 1;\n          while (i2 < l2) {\n            $propertyKey = arr2[i2 += 1];\n            var $prop = it.util.getProperty($propertyKey),\n              $missingProperty = it.util.escapeQuotes($propertyKey),\n              $useData = $data + $prop;\n            if (it.opts._errorDataPathProperty) {\n              it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n            }\n            out += ' if ( ' + ($useData) + ' === undefined ';\n            if ($ownProperties) {\n              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n            }\n            out += ') {  var err =   '; /* istanbul ignore else */\n            if (it.createErrors !== false) {\n              out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n              if (it.opts.messages !== false) {\n                out += ' , message: \\'should have ';\n                if ($deps.length == 1) {\n                  out += 'property ' + (it.util.escapeQuotes($deps[0]));\n                } else {\n                  out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n                }\n                out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n              }\n              if (it.opts.verbose) {\n                out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n              }\n              out += ' } ';\n            } else {\n              out += ' {} ';\n            }\n            out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n          }\n        }\n      }\n      out += ' }   ';\n      if ($breakOnError) {\n        $closingBraces += '}';\n        out += ' else { ';\n      }\n    }\n  }\n  it.errorPath = $currentErrorPath;\n  var $currentBaseId = $it.baseId;\n  for (var $property in $schemaDeps) {\n    var $sch = $schemaDeps[$property];\n    if (it.util.schemaHasRules($sch, it.RULES.all)) {\n      out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n      if ($ownProperties) {\n        out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n      }\n      out += ') { ';\n      $it.schema = $sch;\n      $it.schemaPath = $schemaPath + it.util.getProperty($property);\n      $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);\n      out += '  ' + (it.validate($it)) + ' ';\n      $it.baseId = $currentBaseId;\n      out += ' }  ';\n      if ($breakOnError) {\n        out += ' if (' + ($nextValid) + ') { ';\n        $closingBraces += '}';\n      }\n    }\n  }\n  if ($breakOnError) {\n    out += '   ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n  }\n  out = it.util.cleanUpCode(out);\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/dependencies.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/enum.js":
  /*!********************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/enum.js ***!
    \********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_enum(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $i = 'i' + $lvl,\n    $vSchema = 'schema' + $lvl;\n  if (!$isData) {\n    out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';';\n  }\n  out += 'var ' + ($valid) + ';';\n  if ($isData) {\n    out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n  }\n  out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }';\n  if ($isData) {\n    out += '  }  ';\n  }\n  out += ' if (!' + ($valid) + ') {   ';\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('enum') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should be equal to one of the allowed values\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' }';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/enum.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/format.js":
  /*!**********************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/format.js ***!
    \**********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_format(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  if (it.opts.format === false) {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n    return out;\n  }\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $unknownFormats = it.opts.unknownFormats,\n    $allowUnknown = Array.isArray($unknownFormats);\n  if ($isData) {\n    var $format = 'format' + $lvl,\n      $isObject = 'isObject' + $lvl,\n      $formatType = 'formatType' + $lvl;\n    out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \\'object\\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \\'string\\'; if (' + ($isObject) + ') { ';\n    if (it.async) {\n      out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; ';\n    }\n    out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if (  ';\n    if ($isData) {\n      out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n    }\n    out += ' (';\n    if ($unknownFormats != 'ignore') {\n      out += ' (' + ($schemaValue) + ' && !' + ($format) + ' ';\n      if ($allowUnknown) {\n        out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 ';\n      }\n      out += ') || ';\n    }\n    out += ' (' + ($format) + ' && ' + ($formatType) + ' == \\'' + ($ruleType) + '\\' && !(typeof ' + ($format) + ' == \\'function\\' ? ';\n    if (it.async) {\n      out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) ';\n    } else {\n      out += ' ' + ($format) + '(' + ($data) + ') ';\n    }\n    out += ' : ' + ($format) + '.test(' + ($data) + '))))) {';\n  } else {\n    var $format = it.formats[$schema];\n    if (!$format) {\n      if ($unknownFormats == 'ignore') {\n        it.logger.warn('unknown format \"' + $schema + '\" ignored in schema at path \"' + it.errSchemaPath + '\"');\n        if ($breakOnError) {\n          out += ' if (true) { ';\n        }\n        return out;\n      } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) {\n        if ($breakOnError) {\n          out += ' if (true) { ';\n        }\n        return out;\n      } else {\n        throw new Error('unknown format \"' + $schema + '\" is used in schema at path \"' + it.errSchemaPath + '\"');\n      }\n    }\n    var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate;\n    var $formatType = $isObject && $format.type || 'string';\n    if ($isObject) {\n      var $async = $format.async === true;\n      $format = $format.validate;\n    }\n    if ($formatType != $ruleType) {\n      if ($breakOnError) {\n        out += ' if (true) { ';\n      }\n      return out;\n    }\n    if ($async) {\n      if (!it.async) throw new Error('async format in sync schema');\n      var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';\n      out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { ';\n    } else {\n      out += ' if (! ';\n      var $formatRef = 'formats' + it.util.getProperty($schema);\n      if ($isObject) $formatRef += '.validate';\n      if (typeof $format == 'function') {\n        out += ' ' + ($formatRef) + '(' + ($data) + ') ';\n      } else {\n        out += ' ' + ($formatRef) + '.test(' + ($data) + ') ';\n      }\n      out += ') { ';\n    }\n  }\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('format') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format:  ';\n    if ($isData) {\n      out += '' + ($schemaValue);\n    } else {\n      out += '' + (it.util.toQuotedString($schema));\n    }\n    out += '  } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should match format \"';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + (it.util.escapeQuotes($schema));\n      }\n      out += '\"\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + (it.util.toQuotedString($schema));\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' } ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/format.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/if.js":
  /*!******************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/if.js ***!
    \******************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_if(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $thenSch = it.schema['then'],\n    $elseSch = it.schema['else'],\n    $thenPresent = $thenSch !== undefined && it.util.schemaHasRules($thenSch, it.RULES.all),\n    $elsePresent = $elseSch !== undefined && it.util.schemaHasRules($elseSch, it.RULES.all),\n    $currentBaseId = $it.baseId;\n  if ($thenPresent || $elsePresent) {\n    var $ifClause;\n    $it.createErrors = false;\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true;  ';\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    out += '  ' + (it.validate($it)) + ' ';\n    $it.baseId = $currentBaseId;\n    $it.createErrors = true;\n    out += '  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }  ';\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    if ($thenPresent) {\n      out += ' if (' + ($nextValid) + ') {  ';\n      $it.schema = it.schema['then'];\n      $it.schemaPath = it.schemaPath + '.then';\n      $it.errSchemaPath = it.errSchemaPath + '/then';\n      out += '  ' + (it.validate($it)) + ' ';\n      $it.baseId = $currentBaseId;\n      out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n      if ($thenPresent && $elsePresent) {\n        $ifClause = 'ifClause' + $lvl;\n        out += ' var ' + ($ifClause) + ' = \\'then\\'; ';\n      } else {\n        $ifClause = '\\'then\\'';\n      }\n      out += ' } ';\n      if ($elsePresent) {\n        out += ' else { ';\n      }\n    } else {\n      out += ' if (!' + ($nextValid) + ') { ';\n    }\n    if ($elsePresent) {\n      $it.schema = it.schema['else'];\n      $it.schemaPath = it.schemaPath + '.else';\n      $it.errSchemaPath = it.errSchemaPath + '/else';\n      out += '  ' + (it.validate($it)) + ' ';\n      $it.baseId = $currentBaseId;\n      out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n      if ($thenPresent && $elsePresent) {\n        $ifClause = 'ifClause' + $lvl;\n        out += ' var ' + ($ifClause) + ' = \\'else\\'; ';\n      } else {\n        $ifClause = '\\'else\\'';\n      }\n      out += ' } ';\n    }\n    out += ' if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('if') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should match \"\\' + ' + ($ifClause) + ' + \\'\" schema\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError(vErrors); ';\n      } else {\n        out += ' validate.errors = vErrors; return false; ';\n      }\n    }\n    out += ' }   ';\n    if ($breakOnError) {\n      out += ' else { ';\n    }\n    out = it.util.cleanUpCode(out);\n  } else {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/if.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/index.js":
  /*!*********************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/index.js ***!
    \*********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\n//all requires must be explicit because browserify won't work with dynamic requires\nmodule.exports = {\n  '$ref': __webpack_require__(/*! ./ref */ \"./node_modules/ajv/lib/dotjs/ref.js\"),\n  allOf: __webpack_require__(/*! ./allOf */ \"./node_modules/ajv/lib/dotjs/allOf.js\"),\n  anyOf: __webpack_require__(/*! ./anyOf */ \"./node_modules/ajv/lib/dotjs/anyOf.js\"),\n  '$comment': __webpack_require__(/*! ./comment */ \"./node_modules/ajv/lib/dotjs/comment.js\"),\n  const: __webpack_require__(/*! ./const */ \"./node_modules/ajv/lib/dotjs/const.js\"),\n  contains: __webpack_require__(/*! ./contains */ \"./node_modules/ajv/lib/dotjs/contains.js\"),\n  dependencies: __webpack_require__(/*! ./dependencies */ \"./node_modules/ajv/lib/dotjs/dependencies.js\"),\n  'enum': __webpack_require__(/*! ./enum */ \"./node_modules/ajv/lib/dotjs/enum.js\"),\n  format: __webpack_require__(/*! ./format */ \"./node_modules/ajv/lib/dotjs/format.js\"),\n  'if': __webpack_require__(/*! ./if */ \"./node_modules/ajv/lib/dotjs/if.js\"),\n  items: __webpack_require__(/*! ./items */ \"./node_modules/ajv/lib/dotjs/items.js\"),\n  maximum: __webpack_require__(/*! ./_limit */ \"./node_modules/ajv/lib/dotjs/_limit.js\"),\n  minimum: __webpack_require__(/*! ./_limit */ \"./node_modules/ajv/lib/dotjs/_limit.js\"),\n  maxItems: __webpack_require__(/*! ./_limitItems */ \"./node_modules/ajv/lib/dotjs/_limitItems.js\"),\n  minItems: __webpack_require__(/*! ./_limitItems */ \"./node_modules/ajv/lib/dotjs/_limitItems.js\"),\n  maxLength: __webpack_require__(/*! ./_limitLength */ \"./node_modules/ajv/lib/dotjs/_limitLength.js\"),\n  minLength: __webpack_require__(/*! ./_limitLength */ \"./node_modules/ajv/lib/dotjs/_limitLength.js\"),\n  maxProperties: __webpack_require__(/*! ./_limitProperties */ \"./node_modules/ajv/lib/dotjs/_limitProperties.js\"),\n  minProperties: __webpack_require__(/*! ./_limitProperties */ \"./node_modules/ajv/lib/dotjs/_limitProperties.js\"),\n  multipleOf: __webpack_require__(/*! ./multipleOf */ \"./node_modules/ajv/lib/dotjs/multipleOf.js\"),\n  not: __webpack_require__(/*! ./not */ \"./node_modules/ajv/lib/dotjs/not.js\"),\n  oneOf: __webpack_require__(/*! ./oneOf */ \"./node_modules/ajv/lib/dotjs/oneOf.js\"),\n  pattern: __webpack_require__(/*! ./pattern */ \"./node_modules/ajv/lib/dotjs/pattern.js\"),\n  properties: __webpack_require__(/*! ./properties */ \"./node_modules/ajv/lib/dotjs/properties.js\"),\n  propertyNames: __webpack_require__(/*! ./propertyNames */ \"./node_modules/ajv/lib/dotjs/propertyNames.js\"),\n  required: __webpack_require__(/*! ./required */ \"./node_modules/ajv/lib/dotjs/required.js\"),\n  uniqueItems: __webpack_require__(/*! ./uniqueItems */ \"./node_modules/ajv/lib/dotjs/uniqueItems.js\"),\n  validate: __webpack_require__(/*! ./validate */ \"./node_modules/ajv/lib/dotjs/validate.js\")\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/index.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/items.js":
  /*!*********************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/items.js ***!
    \*********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_items(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $idx = 'i' + $lvl,\n    $dataNxt = $it.dataLevel = it.dataLevel + 1,\n    $nextData = 'data' + $dataNxt,\n    $currentBaseId = it.baseId;\n  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n  if (Array.isArray($schema)) {\n    var $additionalItems = it.schema.additionalItems;\n    if ($additionalItems === false) {\n      out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; ';\n      var $currErrSchemaPath = $errSchemaPath;\n      $errSchemaPath = it.errSchemaPath + '/additionalItems';\n      out += '  if (!' + ($valid) + ') {   ';\n      var $$outStack = $$outStack || [];\n      $$outStack.push(out);\n      out = ''; /* istanbul ignore else */\n      if (it.createErrors !== false) {\n        out += ' { keyword: \\'' + ('additionalItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } ';\n        if (it.opts.messages !== false) {\n          out += ' , message: \\'should NOT have more than ' + ($schema.length) + ' items\\' ';\n        }\n        if (it.opts.verbose) {\n          out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n        }\n        out += ' } ';\n      } else {\n        out += ' {} ';\n      }\n      var __err = out;\n      out = $$outStack.pop();\n      if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n        if (it.async) {\n          out += ' throw new ValidationError([' + (__err) + ']); ';\n        } else {\n          out += ' validate.errors = [' + (__err) + ']; return false; ';\n        }\n      } else {\n        out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n      }\n      out += ' } ';\n      $errSchemaPath = $currErrSchemaPath;\n      if ($breakOnError) {\n        $closingBraces += '}';\n        out += ' else { ';\n      }\n    }\n    var arr1 = $schema;\n    if (arr1) {\n      var $sch, $i = -1,\n        l1 = arr1.length - 1;\n      while ($i < l1) {\n        $sch = arr1[$i += 1];\n        if (it.util.schemaHasRules($sch, it.RULES.all)) {\n          out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { ';\n          var $passData = $data + '[' + $i + ']';\n          $it.schema = $sch;\n          $it.schemaPath = $schemaPath + '[' + $i + ']';\n          $it.errSchemaPath = $errSchemaPath + '/' + $i;\n          $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);\n          $it.dataPathArr[$dataNxt] = $i;\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n          } else {\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n          }\n          out += ' }  ';\n          if ($breakOnError) {\n            out += ' if (' + ($nextValid) + ') { ';\n            $closingBraces += '}';\n          }\n        }\n      }\n    }\n    if (typeof $additionalItems == 'object' && it.util.schemaHasRules($additionalItems, it.RULES.all)) {\n      $it.schema = $additionalItems;\n      $it.schemaPath = it.schemaPath + '.additionalItems';\n      $it.errSchemaPath = it.errSchemaPath + '/additionalItems';\n      out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') {  for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n      $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n      var $passData = $data + '[' + $idx + ']';\n      $it.dataPathArr[$dataNxt] = $idx;\n      var $code = it.validate($it);\n      $it.baseId = $currentBaseId;\n      if (it.util.varOccurences($code, $nextData) < 2) {\n        out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n      } else {\n        out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n      }\n      if ($breakOnError) {\n        out += ' if (!' + ($nextValid) + ') break; ';\n      }\n      out += ' } }  ';\n      if ($breakOnError) {\n        out += ' if (' + ($nextValid) + ') { ';\n        $closingBraces += '}';\n      }\n    }\n  } else if (it.util.schemaHasRules($schema, it.RULES.all)) {\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    out += '  for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n    $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n    var $passData = $data + '[' + $idx + ']';\n    $it.dataPathArr[$dataNxt] = $idx;\n    var $code = it.validate($it);\n    $it.baseId = $currentBaseId;\n    if (it.util.varOccurences($code, $nextData) < 2) {\n      out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n    } else {\n      out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n    }\n    if ($breakOnError) {\n      out += ' if (!' + ($nextValid) + ') break; ';\n    }\n    out += ' }';\n  }\n  if ($breakOnError) {\n    out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n  }\n  out = it.util.cleanUpCode(out);\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/items.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/multipleOf.js":
  /*!**************************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/multipleOf.js ***!
    \**************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_multipleOf(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  out += 'var division' + ($lvl) + ';if (';\n  if ($isData) {\n    out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \\'number\\' || ';\n  }\n  out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';\n  if (it.opts.multipleOfPrecision) {\n    out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';\n  } else {\n    out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';\n  }\n  out += ' ) ';\n  if ($isData) {\n    out += '  )  ';\n  }\n  out += ' ) {   ';\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('multipleOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should be multiple of ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue);\n      } else {\n        out += '' + ($schemaValue) + '\\'';\n      }\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/multipleOf.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/not.js":
  /*!*******************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/not.js ***!
    \*******************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_not(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  if (it.util.schemaHasRules($schema, it.RULES.all)) {\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    out += ' var ' + ($errs) + ' = errors;  ';\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    $it.createErrors = false;\n    var $allErrorsOption;\n    if ($it.opts.allErrors) {\n      $allErrorsOption = $it.opts.allErrors;\n      $it.opts.allErrors = false;\n    }\n    out += ' ' + (it.validate($it)) + ' ';\n    $it.createErrors = true;\n    if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' if (' + ($nextValid) + ') {   ';\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = ''; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should NOT be valid\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    var __err = out;\n    out = $$outStack.pop();\n    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError([' + (__err) + ']); ';\n      } else {\n        out += ' validate.errors = [' + (__err) + ']; return false; ';\n      }\n    } else {\n      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    }\n    out += ' } else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n    if (it.opts.allErrors) {\n      out += ' } ';\n    }\n  } else {\n    out += '  var err =   '; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should NOT be valid\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    if ($breakOnError) {\n      out += ' if (false) { ';\n    }\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/not.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/oneOf.js":
  /*!*********************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/oneOf.js ***!
    \*********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_oneOf(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $currentBaseId = $it.baseId,\n    $prevValid = 'prevValid' + $lvl,\n    $passingSchemas = 'passingSchemas' + $lvl;\n  out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; ';\n  var $wasComposite = it.compositeRule;\n  it.compositeRule = $it.compositeRule = true;\n  var arr1 = $schema;\n  if (arr1) {\n    var $sch, $i = -1,\n      l1 = arr1.length - 1;\n    while ($i < l1) {\n      $sch = arr1[$i += 1];\n      if (it.util.schemaHasRules($sch, it.RULES.all)) {\n        $it.schema = $sch;\n        $it.schemaPath = $schemaPath + '[' + $i + ']';\n        $it.errSchemaPath = $errSchemaPath + '/' + $i;\n        out += '  ' + (it.validate($it)) + ' ';\n        $it.baseId = $currentBaseId;\n      } else {\n        out += ' var ' + ($nextValid) + ' = true; ';\n      }\n      if ($i) {\n        out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { ';\n        $closingBraces += '}';\n      }\n      out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }';\n    }\n  }\n  it.compositeRule = $it.compositeRule = $wasComposite;\n  out += '' + ($closingBraces) + 'if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('oneOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should match exactly one schema in oneOf\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError(vErrors); ';\n    } else {\n      out += ' validate.errors = vErrors; return false; ';\n    }\n  }\n  out += '} else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';\n  if (it.opts.allErrors) {\n    out += ' } ';\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/oneOf.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/pattern.js":
  /*!***********************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/pattern.js ***!
    \***********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_pattern(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema);\n  out += 'if ( ';\n  if ($isData) {\n    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n  }\n  out += ' !' + ($regexp) + '.test(' + ($data) + ') ) {   ';\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('pattern') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern:  ';\n    if ($isData) {\n      out += '' + ($schemaValue);\n    } else {\n      out += '' + (it.util.toQuotedString($schema));\n    }\n    out += '  } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should match pattern \"';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + (it.util.escapeQuotes($schema));\n      }\n      out += '\"\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + (it.util.toQuotedString($schema));\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/pattern.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/properties.js":
  /*!**************************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/properties.js ***!
    \**************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_properties(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $key = 'key' + $lvl,\n    $idx = 'idx' + $lvl,\n    $dataNxt = $it.dataLevel = it.dataLevel + 1,\n    $nextData = 'data' + $dataNxt,\n    $dataProperties = 'dataProperties' + $lvl;\n  var $schemaKeys = Object.keys($schema || {}),\n    $pProperties = it.schema.patternProperties || {},\n    $pPropertyKeys = Object.keys($pProperties),\n    $aProperties = it.schema.additionalProperties,\n    $someProperties = $schemaKeys.length || $pPropertyKeys.length,\n    $noAdditional = $aProperties === false,\n    $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,\n    $removeAdditional = it.opts.removeAdditional,\n    $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional,\n    $ownProperties = it.opts.ownProperties,\n    $currentBaseId = it.baseId;\n  var $required = it.schema.required;\n  if ($required && !(it.opts.v5 && $required.$data) && $required.length < it.opts.loopRequired) var $requiredHash = it.util.toHash($required);\n  out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';\n  if ($ownProperties) {\n    out += ' var ' + ($dataProperties) + ' = undefined;';\n  }\n  if ($checkAdditional) {\n    if ($ownProperties) {\n      out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n    } else {\n      out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n    }\n    if ($someProperties) {\n      out += ' var isAdditional' + ($lvl) + ' = !(false ';\n      if ($schemaKeys.length) {\n        if ($schemaKeys.length > 5) {\n          out += ' || validate.schema' + ($schemaPath) + '[' + ($key) + '] ';\n        } else {\n          var arr1 = $schemaKeys;\n          if (arr1) {\n            var $propertyKey, i1 = -1,\n              l1 = arr1.length - 1;\n            while (i1 < l1) {\n              $propertyKey = arr1[i1 += 1];\n              out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';\n            }\n          }\n        }\n      }\n      if ($pPropertyKeys.length) {\n        var arr2 = $pPropertyKeys;\n        if (arr2) {\n          var $pProperty, $i = -1,\n            l2 = arr2.length - 1;\n          while ($i < l2) {\n            $pProperty = arr2[$i += 1];\n            out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') ';\n          }\n        }\n      }\n      out += ' ); if (isAdditional' + ($lvl) + ') { ';\n    }\n    if ($removeAdditional == 'all') {\n      out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n    } else {\n      var $currentErrorPath = it.errorPath;\n      var $additionalProperty = '\\' + ' + $key + ' + \\'';\n      if (it.opts._errorDataPathProperty) {\n        it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n      }\n      if ($noAdditional) {\n        if ($removeAdditional) {\n          out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n        } else {\n          out += ' ' + ($nextValid) + ' = false; ';\n          var $currErrSchemaPath = $errSchemaPath;\n          $errSchemaPath = it.errSchemaPath + '/additionalProperties';\n          var $$outStack = $$outStack || [];\n          $$outStack.push(out);\n          out = ''; /* istanbul ignore else */\n          if (it.createErrors !== false) {\n            out += ' { keyword: \\'' + ('additionalProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \\'' + ($additionalProperty) + '\\' } ';\n            if (it.opts.messages !== false) {\n              out += ' , message: \\'';\n              if (it.opts._errorDataPathProperty) {\n                out += 'is an invalid additional property';\n              } else {\n                out += 'should NOT have additional properties';\n              }\n              out += '\\' ';\n            }\n            if (it.opts.verbose) {\n              out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n            }\n            out += ' } ';\n          } else {\n            out += ' {} ';\n          }\n          var __err = out;\n          out = $$outStack.pop();\n          if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n            if (it.async) {\n              out += ' throw new ValidationError([' + (__err) + ']); ';\n            } else {\n              out += ' validate.errors = [' + (__err) + ']; return false; ';\n            }\n          } else {\n            out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n          }\n          $errSchemaPath = $currErrSchemaPath;\n          if ($breakOnError) {\n            out += ' break; ';\n          }\n        }\n      } else if ($additionalIsSchema) {\n        if ($removeAdditional == 'failing') {\n          out += ' var ' + ($errs) + ' = errors;  ';\n          var $wasComposite = it.compositeRule;\n          it.compositeRule = $it.compositeRule = true;\n          $it.schema = $aProperties;\n          $it.schemaPath = it.schemaPath + '.additionalProperties';\n          $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n          $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n          var $passData = $data + '[' + $key + ']';\n          $it.dataPathArr[$dataNxt] = $key;\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n          } else {\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n          }\n          out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; }  ';\n          it.compositeRule = $it.compositeRule = $wasComposite;\n        } else {\n          $it.schema = $aProperties;\n          $it.schemaPath = it.schemaPath + '.additionalProperties';\n          $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n          $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n          var $passData = $data + '[' + $key + ']';\n          $it.dataPathArr[$dataNxt] = $key;\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n          } else {\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n          }\n          if ($breakOnError) {\n            out += ' if (!' + ($nextValid) + ') break; ';\n          }\n        }\n      }\n      it.errorPath = $currentErrorPath;\n    }\n    if ($someProperties) {\n      out += ' } ';\n    }\n    out += ' }  ';\n    if ($breakOnError) {\n      out += ' if (' + ($nextValid) + ') { ';\n      $closingBraces += '}';\n    }\n  }\n  var $useDefaults = it.opts.useDefaults && !it.compositeRule;\n  if ($schemaKeys.length) {\n    var arr3 = $schemaKeys;\n    if (arr3) {\n      var $propertyKey, i3 = -1,\n        l3 = arr3.length - 1;\n      while (i3 < l3) {\n        $propertyKey = arr3[i3 += 1];\n        var $sch = $schema[$propertyKey];\n        if (it.util.schemaHasRules($sch, it.RULES.all)) {\n          var $prop = it.util.getProperty($propertyKey),\n            $passData = $data + $prop,\n            $hasDefault = $useDefaults && $sch.default !== undefined;\n          $it.schema = $sch;\n          $it.schemaPath = $schemaPath + $prop;\n          $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);\n          $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);\n          $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            $code = it.util.varReplace($code, $nextData, $passData);\n            var $useData = $passData;\n          } else {\n            var $useData = $nextData;\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';\n          }\n          if ($hasDefault) {\n            out += ' ' + ($code) + ' ';\n          } else {\n            if ($requiredHash && $requiredHash[$propertyKey]) {\n              out += ' if ( ' + ($useData) + ' === undefined ';\n              if ($ownProperties) {\n                out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n              }\n              out += ') { ' + ($nextValid) + ' = false; ';\n              var $currentErrorPath = it.errorPath,\n                $currErrSchemaPath = $errSchemaPath,\n                $missingProperty = it.util.escapeQuotes($propertyKey);\n              if (it.opts._errorDataPathProperty) {\n                it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n              }\n              $errSchemaPath = it.errSchemaPath + '/required';\n              var $$outStack = $$outStack || [];\n              $$outStack.push(out);\n              out = ''; /* istanbul ignore else */\n              if (it.createErrors !== false) {\n                out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n                if (it.opts.messages !== false) {\n                  out += ' , message: \\'';\n                  if (it.opts._errorDataPathProperty) {\n                    out += 'is a required property';\n                  } else {\n                    out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n                  }\n                  out += '\\' ';\n                }\n                if (it.opts.verbose) {\n                  out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n                }\n                out += ' } ';\n              } else {\n                out += ' {} ';\n              }\n              var __err = out;\n              out = $$outStack.pop();\n              if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n                if (it.async) {\n                  out += ' throw new ValidationError([' + (__err) + ']); ';\n                } else {\n                  out += ' validate.errors = [' + (__err) + ']; return false; ';\n                }\n              } else {\n                out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n              }\n              $errSchemaPath = $currErrSchemaPath;\n              it.errorPath = $currentErrorPath;\n              out += ' } else { ';\n            } else {\n              if ($breakOnError) {\n                out += ' if ( ' + ($useData) + ' === undefined ';\n                if ($ownProperties) {\n                  out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n                }\n                out += ') { ' + ($nextValid) + ' = true; } else { ';\n              } else {\n                out += ' if (' + ($useData) + ' !== undefined ';\n                if ($ownProperties) {\n                  out += ' &&   Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n                }\n                out += ' ) { ';\n              }\n            }\n            out += ' ' + ($code) + ' } ';\n          }\n        }\n        if ($breakOnError) {\n          out += ' if (' + ($nextValid) + ') { ';\n          $closingBraces += '}';\n        }\n      }\n    }\n  }\n  if ($pPropertyKeys.length) {\n    var arr4 = $pPropertyKeys;\n    if (arr4) {\n      var $pProperty, i4 = -1,\n        l4 = arr4.length - 1;\n      while (i4 < l4) {\n        $pProperty = arr4[i4 += 1];\n        var $sch = $pProperties[$pProperty];\n        if (it.util.schemaHasRules($sch, it.RULES.all)) {\n          $it.schema = $sch;\n          $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);\n          $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);\n          if ($ownProperties) {\n            out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n          } else {\n            out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n          }\n          out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { ';\n          $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n          var $passData = $data + '[' + $key + ']';\n          $it.dataPathArr[$dataNxt] = $key;\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n          } else {\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n          }\n          if ($breakOnError) {\n            out += ' if (!' + ($nextValid) + ') break; ';\n          }\n          out += ' } ';\n          if ($breakOnError) {\n            out += ' else ' + ($nextValid) + ' = true; ';\n          }\n          out += ' }  ';\n          if ($breakOnError) {\n            out += ' if (' + ($nextValid) + ') { ';\n            $closingBraces += '}';\n          }\n        }\n      }\n    }\n  }\n  if ($breakOnError) {\n    out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n  }\n  out = it.util.cleanUpCode(out);\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/properties.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/propertyNames.js":
  /*!*****************************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/propertyNames.js ***!
    \*****************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_propertyNames(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  if (it.util.schemaHasRules($schema, it.RULES.all)) {\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    var $key = 'key' + $lvl,\n      $idx = 'idx' + $lvl,\n      $i = 'i' + $lvl,\n      $invalidName = '\\' + ' + $key + ' + \\'',\n      $dataNxt = $it.dataLevel = it.dataLevel + 1,\n      $nextData = 'data' + $dataNxt,\n      $dataProperties = 'dataProperties' + $lvl,\n      $ownProperties = it.opts.ownProperties,\n      $currentBaseId = it.baseId;\n    out += ' var ' + ($errs) + ' = errors; ';\n    if ($ownProperties) {\n      out += ' var ' + ($dataProperties) + ' = undefined; ';\n    }\n    if ($ownProperties) {\n      out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n    } else {\n      out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n    }\n    out += ' var startErrs' + ($lvl) + ' = errors; ';\n    var $passData = $key;\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    var $code = it.validate($it);\n    $it.baseId = $currentBaseId;\n    if (it.util.varOccurences($code, $nextData) < 2) {\n      out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n    } else {\n      out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n    }\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + '<errors; ' + ($i) + '++) { vErrors[' + ($i) + '].propertyName = ' + ($key) + '; }   var err =   '; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('propertyNames') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { propertyName: \\'' + ($invalidName) + '\\' } ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'property name \\\\\\'' + ($invalidName) + '\\\\\\' is invalid\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError(vErrors); ';\n      } else {\n        out += ' validate.errors = vErrors; return false; ';\n      }\n    }\n    if ($breakOnError) {\n      out += ' break; ';\n    }\n    out += ' } }';\n  }\n  if ($breakOnError) {\n    out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n  }\n  out = it.util.cleanUpCode(out);\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/propertyNames.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/ref.js":
  /*!*******************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/ref.js ***!
    \*******************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_ref(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $async, $refCode;\n  if ($schema == '#' || $schema == '#/') {\n    if (it.isRoot) {\n      $async = it.async;\n      $refCode = 'validate';\n    } else {\n      $async = it.root.schema.$async === true;\n      $refCode = 'root.refVal[0]';\n    }\n  } else {\n    var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot);\n    if ($refVal === undefined) {\n      var $message = it.MissingRefError.message(it.baseId, $schema);\n      if (it.opts.missingRefs == 'fail') {\n        it.logger.error($message);\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('$ref') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \\'' + (it.util.escapeQuotes($schema)) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'can\\\\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n        if ($breakOnError) {\n          out += ' if (false) { ';\n        }\n      } else if (it.opts.missingRefs == 'ignore') {\n        it.logger.warn($message);\n        if ($breakOnError) {\n          out += ' if (true) { ';\n        }\n      } else {\n        throw new it.MissingRefError(it.baseId, $schema, $message);\n      }\n    } else if ($refVal.inline) {\n      var $it = it.util.copy(it);\n      $it.level++;\n      var $nextValid = 'valid' + $it.level;\n      $it.schema = $refVal.schema;\n      $it.schemaPath = '';\n      $it.errSchemaPath = $schema;\n      var $code = it.validate($it).replace(/validate\\.schema/g, $refVal.code);\n      out += ' ' + ($code) + ' ';\n      if ($breakOnError) {\n        out += ' if (' + ($nextValid) + ') { ';\n      }\n    } else {\n      $async = $refVal.$async === true || (it.async && $refVal.$async !== false);\n      $refCode = $refVal.code;\n    }\n  }\n  if ($refCode) {\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = '';\n    if (it.opts.passContext) {\n      out += ' ' + ($refCode) + '.call(this, ';\n    } else {\n      out += ' ' + ($refCode) + '( ';\n    }\n    out += ' ' + ($data) + ', (dataPath || \\'\\')';\n    if (it.errorPath != '\"\"') {\n      out += ' + ' + (it.errorPath);\n    }\n    var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n      $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n    out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData)  ';\n    var __callValidate = out;\n    out = $$outStack.pop();\n    if ($async) {\n      if (!it.async) throw new Error('async schema referenced by sync schema');\n      if ($breakOnError) {\n        out += ' var ' + ($valid) + '; ';\n      }\n      out += ' try { await ' + (__callValidate) + '; ';\n      if ($breakOnError) {\n        out += ' ' + ($valid) + ' = true; ';\n      }\n      out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ';\n      if ($breakOnError) {\n        out += ' ' + ($valid) + ' = false; ';\n      }\n      out += ' } ';\n      if ($breakOnError) {\n        out += ' if (' + ($valid) + ') { ';\n      }\n    } else {\n      out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } ';\n      if ($breakOnError) {\n        out += ' else { ';\n      }\n    }\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/ref.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/required.js":
  /*!************************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/required.js ***!
    \************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_required(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $vSchema = 'schema' + $lvl;\n  if (!$isData) {\n    if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) {\n      var $required = [];\n      var arr1 = $schema;\n      if (arr1) {\n        var $property, i1 = -1,\n          l1 = arr1.length - 1;\n        while (i1 < l1) {\n          $property = arr1[i1 += 1];\n          var $propertySch = it.schema.properties[$property];\n          if (!($propertySch && it.util.schemaHasRules($propertySch, it.RULES.all))) {\n            $required[$required.length] = $property;\n          }\n        }\n      }\n    } else {\n      var $required = $schema;\n    }\n  }\n  if ($isData || $required.length) {\n    var $currentErrorPath = it.errorPath,\n      $loopRequired = $isData || $required.length >= it.opts.loopRequired,\n      $ownProperties = it.opts.ownProperties;\n    if ($breakOnError) {\n      out += ' var missing' + ($lvl) + '; ';\n      if ($loopRequired) {\n        if (!$isData) {\n          out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n        }\n        var $i = 'i' + $lvl,\n          $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n        if (it.opts._errorDataPathProperty) {\n          it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n        }\n        out += ' var ' + ($valid) + ' = true; ';\n        if ($isData) {\n          out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n        }\n        out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined ';\n        if ($ownProperties) {\n          out += ' &&   Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n        }\n        out += '; if (!' + ($valid) + ') break; } ';\n        if ($isData) {\n          out += '  }  ';\n        }\n        out += '  if (!' + ($valid) + ') {   ';\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'';\n            if (it.opts._errorDataPathProperty) {\n              out += 'is a required property';\n            } else {\n              out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n        out += ' } else { ';\n      } else {\n        out += ' if ( ';\n        var arr2 = $required;\n        if (arr2) {\n          var $propertyKey, $i = -1,\n            l2 = arr2.length - 1;\n          while ($i < l2) {\n            $propertyKey = arr2[$i += 1];\n            if ($i) {\n              out += ' || ';\n            }\n            var $prop = it.util.getProperty($propertyKey),\n              $useData = $data + $prop;\n            out += ' ( ( ' + ($useData) + ' === undefined ';\n            if ($ownProperties) {\n              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n            }\n            out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n          }\n        }\n        out += ') {  ';\n        var $propertyPath = 'missing' + $lvl,\n          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n        if (it.opts._errorDataPathProperty) {\n          it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n        }\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'';\n            if (it.opts._errorDataPathProperty) {\n              out += 'is a required property';\n            } else {\n              out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n        out += ' } else { ';\n      }\n    } else {\n      if ($loopRequired) {\n        if (!$isData) {\n          out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n        }\n        var $i = 'i' + $lvl,\n          $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n        if (it.opts._errorDataPathProperty) {\n          it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n        }\n        if ($isData) {\n          out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) {  var err =   '; /* istanbul ignore else */\n          if (it.createErrors !== false) {\n            out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n            if (it.opts.messages !== false) {\n              out += ' , message: \\'';\n              if (it.opts._errorDataPathProperty) {\n                out += 'is a required property';\n              } else {\n                out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n              }\n              out += '\\' ';\n            }\n            if (it.opts.verbose) {\n              out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n            }\n            out += ' } ';\n          } else {\n            out += ' {} ';\n          }\n          out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { ';\n        }\n        out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined ';\n        if ($ownProperties) {\n          out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n        }\n        out += ') {  var err =   '; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'';\n            if (it.opts._errorDataPathProperty) {\n              out += 'is a required property';\n            } else {\n              out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';\n        if ($isData) {\n          out += '  }  ';\n        }\n      } else {\n        var arr3 = $required;\n        if (arr3) {\n          var $propertyKey, i3 = -1,\n            l3 = arr3.length - 1;\n          while (i3 < l3) {\n            $propertyKey = arr3[i3 += 1];\n            var $prop = it.util.getProperty($propertyKey),\n              $missingProperty = it.util.escapeQuotes($propertyKey),\n              $useData = $data + $prop;\n            if (it.opts._errorDataPathProperty) {\n              it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n            }\n            out += ' if ( ' + ($useData) + ' === undefined ';\n            if ($ownProperties) {\n              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n            }\n            out += ') {  var err =   '; /* istanbul ignore else */\n            if (it.createErrors !== false) {\n              out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n              if (it.opts.messages !== false) {\n                out += ' , message: \\'';\n                if (it.opts._errorDataPathProperty) {\n                  out += 'is a required property';\n                } else {\n                  out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n                }\n                out += '\\' ';\n              }\n              if (it.opts.verbose) {\n                out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n              }\n              out += ' } ';\n            } else {\n              out += ' {} ';\n            }\n            out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n          }\n        }\n      }\n    }\n    it.errorPath = $currentErrorPath;\n  } else if ($breakOnError) {\n    out += ' if (true) {';\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/required.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/uniqueItems.js":
  /*!***************************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/uniqueItems.js ***!
    \***************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_uniqueItems(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  if (($schema || $isData) && it.opts.uniqueItems !== false) {\n    if ($isData) {\n      out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'boolean\\') ' + ($valid) + ' = false; else { ';\n    }\n    out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { ';\n    var $itemType = it.schema.items && it.schema.items.type,\n      $typeIsArray = Array.isArray($itemType);\n    if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) {\n      out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } ';\n    } else {\n      out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; ';\n      var $method = 'checkDataType' + ($typeIsArray ? 's' : '');\n      out += ' if (' + (it.util[$method]($itemType, 'item', true)) + ') continue; ';\n      if ($typeIsArray) {\n        out += ' if (typeof item == \\'string\\') item = \\'\"\\' + item; ';\n      }\n      out += ' if (typeof itemIndices[item] == \\'number\\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ';\n    }\n    out += ' } ';\n    if ($isData) {\n      out += '  }  ';\n    }\n    out += ' if (!' + ($valid) + ') {   ';\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = ''; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('uniqueItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should NOT have duplicate items (items ## \\' + j + \\' and \\' + i + \\' are identical)\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema:  ';\n        if ($isData) {\n          out += 'validate.schema' + ($schemaPath);\n        } else {\n          out += '' + ($schema);\n        }\n        out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    var __err = out;\n    out = $$outStack.pop();\n    if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError([' + (__err) + ']); ';\n      } else {\n        out += ' validate.errors = [' + (__err) + ']; return false; ';\n      }\n    } else {\n      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    }\n    out += ' } ';\n    if ($breakOnError) {\n      out += ' else { ';\n    }\n  } else {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/uniqueItems.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/dotjs/validate.js":
  /*!************************************************!*\
    !*** ./node_modules/ajv/lib/dotjs/validate.js ***!
    \************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nmodule.exports = function generate_validate(it, $keyword, $ruleType) {\n  var out = '';\n  var $async = it.schema.$async === true,\n    $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'),\n    $id = it.self._getId(it.schema);\n  if (it.isTop) {\n    out += ' var validate = ';\n    if ($async) {\n      it.async = true;\n      out += 'async ';\n    }\n    out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \\'use strict\\'; ';\n    if ($id && (it.opts.sourceCode || it.opts.processCode)) {\n      out += ' ' + ('/\\*# sourceURL=' + $id + ' */') + ' ';\n    }\n  }\n  if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) {\n    var $keyword = 'false schema';\n    var $lvl = it.level;\n    var $dataLvl = it.dataLevel;\n    var $schema = it.schema[$keyword];\n    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n    var $breakOnError = !it.opts.allErrors;\n    var $errorKeyword;\n    var $data = 'data' + ($dataLvl || '');\n    var $valid = 'valid' + $lvl;\n    if (it.schema === false) {\n      if (it.isTop) {\n        $breakOnError = true;\n      } else {\n        out += ' var ' + ($valid) + ' = false; ';\n      }\n      var $$outStack = $$outStack || [];\n      $$outStack.push(out);\n      out = ''; /* istanbul ignore else */\n      if (it.createErrors !== false) {\n        out += ' { keyword: \\'' + ($errorKeyword || 'false schema') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n        if (it.opts.messages !== false) {\n          out += ' , message: \\'boolean schema is false\\' ';\n        }\n        if (it.opts.verbose) {\n          out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n        }\n        out += ' } ';\n      } else {\n        out += ' {} ';\n      }\n      var __err = out;\n      out = $$outStack.pop();\n      if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n        if (it.async) {\n          out += ' throw new ValidationError([' + (__err) + ']); ';\n        } else {\n          out += ' validate.errors = [' + (__err) + ']; return false; ';\n        }\n      } else {\n        out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n      }\n    } else {\n      if (it.isTop) {\n        if ($async) {\n          out += ' return data; ';\n        } else {\n          out += ' validate.errors = null; return true; ';\n        }\n      } else {\n        out += ' var ' + ($valid) + ' = true; ';\n      }\n    }\n    if (it.isTop) {\n      out += ' }; return validate; ';\n    }\n    return out;\n  }\n  if (it.isTop) {\n    var $top = it.isTop,\n      $lvl = it.level = 0,\n      $dataLvl = it.dataLevel = 0,\n      $data = 'data';\n    it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema));\n    it.baseId = it.baseId || it.rootId;\n    delete it.isTop;\n    it.dataPathArr = [undefined];\n    out += ' var vErrors = null; ';\n    out += ' var errors = 0;     ';\n    out += ' if (rootData === undefined) rootData = data; ';\n  } else {\n    var $lvl = it.level,\n      $dataLvl = it.dataLevel,\n      $data = 'data' + ($dataLvl || '');\n    if ($id) it.baseId = it.resolve.url(it.baseId, $id);\n    if ($async && !it.async) throw new Error('async schema in sync schema');\n    out += ' var errs_' + ($lvl) + ' = errors;';\n  }\n  var $valid = 'valid' + $lvl,\n    $breakOnError = !it.opts.allErrors,\n    $closingBraces1 = '',\n    $closingBraces2 = '';\n  var $errorKeyword;\n  var $typeSchema = it.schema.type,\n    $typeIsArray = Array.isArray($typeSchema);\n  if ($typeIsArray && $typeSchema.length == 1) {\n    $typeSchema = $typeSchema[0];\n    $typeIsArray = false;\n  }\n  if (it.schema.$ref && $refKeywords) {\n    if (it.opts.extendRefs == 'fail') {\n      throw new Error('$ref: validation keywords used in schema at path \"' + it.errSchemaPath + '\" (see option extendRefs)');\n    } else if (it.opts.extendRefs !== true) {\n      $refKeywords = false;\n      it.logger.warn('$ref: keywords ignored in schema at path \"' + it.errSchemaPath + '\"');\n    }\n  }\n  if (it.schema.$comment && it.opts.$comment) {\n    out += ' ' + (it.RULES.all.$comment.code(it, '$comment'));\n  }\n  if ($typeSchema) {\n    if (it.opts.coerceTypes) {\n      var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema);\n    }\n    var $rulesGroup = it.RULES.types[$typeSchema];\n    if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) {\n      var $schemaPath = it.schemaPath + '.type',\n        $errSchemaPath = it.errSchemaPath + '/type';\n      var $schemaPath = it.schemaPath + '.type',\n        $errSchemaPath = it.errSchemaPath + '/type',\n        $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType';\n      out += ' if (' + (it.util[$method]($typeSchema, $data, true)) + ') { ';\n      if ($coerceToTypes) {\n        var $dataType = 'dataType' + $lvl,\n          $coerced = 'coerced' + $lvl;\n        out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; ';\n        if (it.opts.coerceTypes == 'array') {\n          out += ' if (' + ($dataType) + ' == \\'object\\' && Array.isArray(' + ($data) + ')) ' + ($dataType) + ' = \\'array\\'; ';\n        }\n        out += ' var ' + ($coerced) + ' = undefined; ';\n        var $bracesCoercion = '';\n        var arr1 = $coerceToTypes;\n        if (arr1) {\n          var $type, $i = -1,\n            l1 = arr1.length - 1;\n          while ($i < l1) {\n            $type = arr1[$i += 1];\n            if ($i) {\n              out += ' if (' + ($coerced) + ' === undefined) { ';\n              $bracesCoercion += '}';\n            }\n            if (it.opts.coerceTypes == 'array' && $type != 'array') {\n              out += ' if (' + ($dataType) + ' == \\'array\\' && ' + ($data) + '.length == 1) { ' + ($coerced) + ' = ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + ';  } ';\n            }\n            if ($type == 'string') {\n              out += ' if (' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\') ' + ($coerced) + ' = \\'\\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \\'\\'; ';\n            } else if ($type == 'number' || $type == 'integer') {\n              out += ' if (' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \\'string\\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' ';\n              if ($type == 'integer') {\n                out += ' && !(' + ($data) + ' % 1)';\n              }\n              out += ')) ' + ($coerced) + ' = +' + ($data) + '; ';\n            } else if ($type == 'boolean') {\n              out += ' if (' + ($data) + ' === \\'false\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \\'true\\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; ';\n            } else if ($type == 'null') {\n              out += ' if (' + ($data) + ' === \\'\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; ';\n            } else if (it.opts.coerceTypes == 'array' && $type == 'array') {\n              out += ' if (' + ($dataType) + ' == \\'string\\' || ' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; ';\n            }\n          }\n        }\n        out += ' ' + ($bracesCoercion) + ' if (' + ($coerced) + ' === undefined) {   ';\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n          if ($typeIsArray) {\n            out += '' + ($typeSchema.join(\",\"));\n          } else {\n            out += '' + ($typeSchema);\n          }\n          out += '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'should be ';\n            if ($typeIsArray) {\n              out += '' + ($typeSchema.join(\",\"));\n            } else {\n              out += '' + ($typeSchema);\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n        out += ' } else {  ';\n        var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n          $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n        out += ' ' + ($data) + ' = ' + ($coerced) + '; ';\n        if (!$dataLvl) {\n          out += 'if (' + ($parentData) + ' !== undefined)';\n        }\n        out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } ';\n      } else {\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n          if ($typeIsArray) {\n            out += '' + ($typeSchema.join(\",\"));\n          } else {\n            out += '' + ($typeSchema);\n          }\n          out += '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'should be ';\n            if ($typeIsArray) {\n              out += '' + ($typeSchema.join(\",\"));\n            } else {\n              out += '' + ($typeSchema);\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n      }\n      out += ' } ';\n    }\n  }\n  if (it.schema.$ref && !$refKeywords) {\n    out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' ';\n    if ($breakOnError) {\n      out += ' } if (errors === ';\n      if ($top) {\n        out += '0';\n      } else {\n        out += 'errs_' + ($lvl);\n      }\n      out += ') { ';\n      $closingBraces2 += '}';\n    }\n  } else {\n    var arr2 = it.RULES;\n    if (arr2) {\n      var $rulesGroup, i2 = -1,\n        l2 = arr2.length - 1;\n      while (i2 < l2) {\n        $rulesGroup = arr2[i2 += 1];\n        if ($shouldUseGroup($rulesGroup)) {\n          if ($rulesGroup.type) {\n            out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data)) + ') { ';\n          }\n          if (it.opts.useDefaults && !it.compositeRule) {\n            if ($rulesGroup.type == 'object' && it.schema.properties) {\n              var $schema = it.schema.properties,\n                $schemaKeys = Object.keys($schema);\n              var arr3 = $schemaKeys;\n              if (arr3) {\n                var $propertyKey, i3 = -1,\n                  l3 = arr3.length - 1;\n                while (i3 < l3) {\n                  $propertyKey = arr3[i3 += 1];\n                  var $sch = $schema[$propertyKey];\n                  if ($sch.default !== undefined) {\n                    var $passData = $data + it.util.getProperty($propertyKey);\n                    out += '  if (' + ($passData) + ' === undefined) ' + ($passData) + ' = ';\n                    if (it.opts.useDefaults == 'shared') {\n                      out += ' ' + (it.useDefault($sch.default)) + ' ';\n                    } else {\n                      out += ' ' + (JSON.stringify($sch.default)) + ' ';\n                    }\n                    out += '; ';\n                  }\n                }\n              }\n            } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) {\n              var arr4 = it.schema.items;\n              if (arr4) {\n                var $sch, $i = -1,\n                  l4 = arr4.length - 1;\n                while ($i < l4) {\n                  $sch = arr4[$i += 1];\n                  if ($sch.default !== undefined) {\n                    var $passData = $data + '[' + $i + ']';\n                    out += '  if (' + ($passData) + ' === undefined) ' + ($passData) + ' = ';\n                    if (it.opts.useDefaults == 'shared') {\n                      out += ' ' + (it.useDefault($sch.default)) + ' ';\n                    } else {\n                      out += ' ' + (JSON.stringify($sch.default)) + ' ';\n                    }\n                    out += '; ';\n                  }\n                }\n              }\n            }\n          }\n          var arr5 = $rulesGroup.rules;\n          if (arr5) {\n            var $rule, i5 = -1,\n              l5 = arr5.length - 1;\n            while (i5 < l5) {\n              $rule = arr5[i5 += 1];\n              if ($shouldUseRule($rule)) {\n                var $code = $rule.code(it, $rule.keyword, $rulesGroup.type);\n                if ($code) {\n                  out += ' ' + ($code) + ' ';\n                  if ($breakOnError) {\n                    $closingBraces1 += '}';\n                  }\n                }\n              }\n            }\n          }\n          if ($breakOnError) {\n            out += ' ' + ($closingBraces1) + ' ';\n            $closingBraces1 = '';\n          }\n          if ($rulesGroup.type) {\n            out += ' } ';\n            if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) {\n              out += ' else { ';\n              var $schemaPath = it.schemaPath + '.type',\n                $errSchemaPath = it.errSchemaPath + '/type';\n              var $$outStack = $$outStack || [];\n              $$outStack.push(out);\n              out = ''; /* istanbul ignore else */\n              if (it.createErrors !== false) {\n                out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n                if ($typeIsArray) {\n                  out += '' + ($typeSchema.join(\",\"));\n                } else {\n                  out += '' + ($typeSchema);\n                }\n                out += '\\' } ';\n                if (it.opts.messages !== false) {\n                  out += ' , message: \\'should be ';\n                  if ($typeIsArray) {\n                    out += '' + ($typeSchema.join(\",\"));\n                  } else {\n                    out += '' + ($typeSchema);\n                  }\n                  out += '\\' ';\n                }\n                if (it.opts.verbose) {\n                  out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n                }\n                out += ' } ';\n              } else {\n                out += ' {} ';\n              }\n              var __err = out;\n              out = $$outStack.pop();\n              if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */\n                if (it.async) {\n                  out += ' throw new ValidationError([' + (__err) + ']); ';\n                } else {\n                  out += ' validate.errors = [' + (__err) + ']; return false; ';\n                }\n              } else {\n                out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n              }\n              out += ' } ';\n            }\n          }\n          if ($breakOnError) {\n            out += ' if (errors === ';\n            if ($top) {\n              out += '0';\n            } else {\n              out += 'errs_' + ($lvl);\n            }\n            out += ') { ';\n            $closingBraces2 += '}';\n          }\n        }\n      }\n    }\n  }\n  if ($breakOnError) {\n    out += ' ' + ($closingBraces2) + ' ';\n  }\n  if ($top) {\n    if ($async) {\n      out += ' if (errors === 0) return data;           ';\n      out += ' else throw new ValidationError(vErrors); ';\n    } else {\n      out += ' validate.errors = vErrors; ';\n      out += ' return errors === 0;       ';\n    }\n    out += ' }; return validate;';\n  } else {\n    out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';';\n  }\n  out = it.util.cleanUpCode(out);\n  if ($top) {\n    out = it.util.finalCleanUpCode(out, $async);\n  }\n\n  function $shouldUseGroup($rulesGroup) {\n    var rules = $rulesGroup.rules;\n    for (var i = 0; i < rules.length; i++)\n      if ($shouldUseRule(rules[i])) return true;\n  }\n\n  function $shouldUseRule($rule) {\n    return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule));\n  }\n\n  function $ruleImplementsSomeKeyword($rule) {\n    var impl = $rule.implements;\n    for (var i = 0; i < impl.length; i++)\n      if (it.schema[impl[i]] !== undefined) return true;\n  }\n  return out;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/dotjs/validate.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/keyword.js":
  /*!*****************************************!*\
    !*** ./node_modules/ajv/lib/keyword.js ***!
    \*****************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nvar IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i;\nvar customRuleCode = __webpack_require__(/*! ./dotjs/custom */ \"./node_modules/ajv/lib/dotjs/custom.js\");\n\nmodule.exports = {\n  add: addKeyword,\n  get: getKeyword,\n  remove: removeKeyword\n};\n\n/**\n * Define custom keyword\n * @this  Ajv\n * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords).\n * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`.\n * @return {Ajv} this for method chaining\n */\nfunction addKeyword(keyword, definition) {\n  /* jshint validthis: true */\n  /* eslint no-shadow: 0 */\n  var RULES = this.RULES;\n\n  if (RULES.keywords[keyword])\n    throw new Error('Keyword ' + keyword + ' is already defined');\n\n  if (!IDENTIFIER.test(keyword))\n    throw new Error('Keyword ' + keyword + ' is not a valid identifier');\n\n  if (definition) {\n    if (definition.macro && definition.valid !== undefined)\n      throw new Error('\"valid\" option cannot be used with macro keywords');\n\n    var dataType = definition.type;\n    if (Array.isArray(dataType)) {\n      var i, len = dataType.length;\n      for (i=0; i<len; i++) checkDataType(dataType[i]);\n      for (i=0; i<len; i++) _addRule(keyword, dataType[i], definition);\n    } else {\n      if (dataType) checkDataType(dataType);\n      _addRule(keyword, dataType, definition);\n    }\n\n    var $data = definition.$data === true && this._opts.$data;\n    if ($data && !definition.validate)\n      throw new Error('$data support: \"validate\" function is not defined');\n\n    var metaSchema = definition.metaSchema;\n    if (metaSchema) {\n      if ($data) {\n        metaSchema = {\n          anyOf: [\n            metaSchema,\n            { '$ref': 'https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#' }\n          ]\n        };\n      }\n      definition.validateSchema = this.compile(metaSchema, true);\n    }\n  }\n\n  RULES.keywords[keyword] = RULES.all[keyword] = true;\n\n\n  function _addRule(keyword, dataType, definition) {\n    var ruleGroup;\n    for (var i=0; i<RULES.length; i++) {\n      var rg = RULES[i];\n      if (rg.type == dataType) {\n        ruleGroup = rg;\n        break;\n      }\n    }\n\n    if (!ruleGroup) {\n      ruleGroup = { type: dataType, rules: [] };\n      RULES.push(ruleGroup);\n    }\n\n    var rule = {\n      keyword: keyword,\n      definition: definition,\n      custom: true,\n      code: customRuleCode,\n      implements: definition.implements\n    };\n    ruleGroup.rules.push(rule);\n    RULES.custom[keyword] = rule;\n  }\n\n\n  function checkDataType(dataType) {\n    if (!RULES.types[dataType]) throw new Error('Unknown type ' + dataType);\n  }\n\n  return this;\n}\n\n\n/**\n * Get keyword\n * @this  Ajv\n * @param {String} keyword pre-defined or custom keyword.\n * @return {Object|Boolean} custom keyword definition, `true` if it is a predefined keyword, `false` otherwise.\n */\nfunction getKeyword(keyword) {\n  /* jshint validthis: true */\n  var rule = this.RULES.custom[keyword];\n  return rule ? rule.definition : this.RULES.keywords[keyword] || false;\n}\n\n\n/**\n * Remove keyword\n * @this  Ajv\n * @param {String} keyword pre-defined or custom keyword.\n * @return {Ajv} this for method chaining\n */\nfunction removeKeyword(keyword) {\n  /* jshint validthis: true */\n  var RULES = this.RULES;\n  delete RULES.keywords[keyword];\n  delete RULES.all[keyword];\n  delete RULES.custom[keyword];\n  for (var i=0; i<RULES.length; i++) {\n    var rules = RULES[i].rules;\n    for (var j=0; j<rules.length; j++) {\n      if (rules[j].keyword == keyword) {\n        rules.splice(j, 1);\n        break;\n      }\n    }\n  }\n  return this;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/keyword.js?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/refs/data.json":
  /*!*********************************************!*\
    !*** ./node_modules/ajv/lib/refs/data.json ***!
    \*********************************************/
  /*! exports provided: $schema, $id, description, type, required, properties, additionalProperties, default */
  /***/ (function(module) {
  
  eval("module.exports = JSON.parse(\"{\\\"$schema\\\":\\\"http://json-schema.org/draft-07/schema#\\\",\\\"$id\\\":\\\"https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/data.json#\\\",\\\"description\\\":\\\"Meta-schema for $data reference (JSON Schema extension proposal)\\\",\\\"type\\\":\\\"object\\\",\\\"required\\\":[\\\"$data\\\"],\\\"properties\\\":{\\\"$data\\\":{\\\"type\\\":\\\"string\\\",\\\"anyOf\\\":[{\\\"format\\\":\\\"relative-json-pointer\\\"},{\\\"format\\\":\\\"json-pointer\\\"}]}},\\\"additionalProperties\\\":false}\");\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/refs/data.json?");
  
  /***/ }),
  
  /***/ "./node_modules/ajv/lib/refs/json-schema-draft-07.json":
  /*!*************************************************************!*\
    !*** ./node_modules/ajv/lib/refs/json-schema-draft-07.json ***!
    \*************************************************************/
  /*! exports provided: $schema, $id, title, definitions, type, properties, default */
  /***/ (function(module) {
  
  eval("module.exports = JSON.parse(\"{\\\"$schema\\\":\\\"http://json-schema.org/draft-07/schema#\\\",\\\"$id\\\":\\\"http://json-schema.org/draft-07/schema#\\\",\\\"title\\\":\\\"Core schema meta-schema\\\",\\\"definitions\\\":{\\\"schemaArray\\\":{\\\"type\\\":\\\"array\\\",\\\"minItems\\\":1,\\\"items\\\":{\\\"$ref\\\":\\\"#\\\"}},\\\"nonNegativeInteger\\\":{\\\"type\\\":\\\"integer\\\",\\\"minimum\\\":0},\\\"nonNegativeIntegerDefault0\\\":{\\\"allOf\\\":[{\\\"$ref\\\":\\\"#/definitions/nonNegativeInteger\\\"},{\\\"default\\\":0}]},\\\"simpleTypes\\\":{\\\"enum\\\":[\\\"array\\\",\\\"boolean\\\",\\\"integer\\\",\\\"null\\\",\\\"number\\\",\\\"object\\\",\\\"string\\\"]},\\\"stringArray\\\":{\\\"type\\\":\\\"array\\\",\\\"items\\\":{\\\"type\\\":\\\"string\\\"},\\\"uniqueItems\\\":true,\\\"default\\\":[]}},\\\"type\\\":[\\\"object\\\",\\\"boolean\\\"],\\\"properties\\\":{\\\"$id\\\":{\\\"type\\\":\\\"string\\\",\\\"format\\\":\\\"uri-reference\\\"},\\\"$schema\\\":{\\\"type\\\":\\\"string\\\",\\\"format\\\":\\\"uri\\\"},\\\"$ref\\\":{\\\"type\\\":\\\"string\\\",\\\"format\\\":\\\"uri-reference\\\"},\\\"$comment\\\":{\\\"type\\\":\\\"string\\\"},\\\"title\\\":{\\\"type\\\":\\\"string\\\"},\\\"description\\\":{\\\"type\\\":\\\"string\\\"},\\\"default\\\":true,\\\"readOnly\\\":{\\\"type\\\":\\\"boolean\\\",\\\"default\\\":false},\\\"examples\\\":{\\\"type\\\":\\\"array\\\",\\\"items\\\":true},\\\"multipleOf\\\":{\\\"type\\\":\\\"number\\\",\\\"exclusiveMinimum\\\":0},\\\"maximum\\\":{\\\"type\\\":\\\"number\\\"},\\\"exclusiveMaximum\\\":{\\\"type\\\":\\\"number\\\"},\\\"minimum\\\":{\\\"type\\\":\\\"number\\\"},\\\"exclusiveMinimum\\\":{\\\"type\\\":\\\"number\\\"},\\\"maxLength\\\":{\\\"$ref\\\":\\\"#/definitions/nonNegativeInteger\\\"},\\\"minLength\\\":{\\\"$ref\\\":\\\"#/definitions/nonNegativeIntegerDefault0\\\"},\\\"pattern\\\":{\\\"type\\\":\\\"string\\\",\\\"format\\\":\\\"regex\\\"},\\\"additionalItems\\\":{\\\"$ref\\\":\\\"#\\\"},\\\"items\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#\\\"},{\\\"$ref\\\":\\\"#/definitions/schemaArray\\\"}],\\\"default\\\":true},\\\"maxItems\\\":{\\\"$ref\\\":\\\"#/definitions/nonNegativeInteger\\\"},\\\"minItems\\\":{\\\"$ref\\\":\\\"#/definitions/nonNegativeIntegerDefault0\\\"},\\\"uniqueItems\\\":{\\\"type\\\":\\\"boolean\\\",\\\"default\\\":false},\\\"contains\\\":{\\\"$ref\\\":\\\"#\\\"},\\\"maxProperties\\\":{\\\"$ref\\\":\\\"#/definitions/nonNegativeInteger\\\"},\\\"minProperties\\\":{\\\"$ref\\\":\\\"#/definitions/nonNegativeIntegerDefault0\\\"},\\\"required\\\":{\\\"$ref\\\":\\\"#/definitions/stringArray\\\"},\\\"additionalProperties\\\":{\\\"$ref\\\":\\\"#\\\"},\\\"definitions\\\":{\\\"type\\\":\\\"object\\\",\\\"additionalProperties\\\":{\\\"$ref\\\":\\\"#\\\"},\\\"default\\\":{}},\\\"properties\\\":{\\\"type\\\":\\\"object\\\",\\\"additionalProperties\\\":{\\\"$ref\\\":\\\"#\\\"},\\\"default\\\":{}},\\\"patternProperties\\\":{\\\"type\\\":\\\"object\\\",\\\"additionalProperties\\\":{\\\"$ref\\\":\\\"#\\\"},\\\"propertyNames\\\":{\\\"format\\\":\\\"regex\\\"},\\\"default\\\":{}},\\\"dependencies\\\":{\\\"type\\\":\\\"object\\\",\\\"additionalProperties\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#\\\"},{\\\"$ref\\\":\\\"#/definitions/stringArray\\\"}]}},\\\"propertyNames\\\":{\\\"$ref\\\":\\\"#\\\"},\\\"const\\\":true,\\\"enum\\\":{\\\"type\\\":\\\"array\\\",\\\"items\\\":true,\\\"minItems\\\":1,\\\"uniqueItems\\\":true},\\\"type\\\":{\\\"anyOf\\\":[{\\\"$ref\\\":\\\"#/definitions/simpleTypes\\\"},{\\\"type\\\":\\\"array\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/simpleTypes\\\"},\\\"minItems\\\":1,\\\"uniqueItems\\\":true}]},\\\"format\\\":{\\\"type\\\":\\\"string\\\"},\\\"contentMediaType\\\":{\\\"type\\\":\\\"string\\\"},\\\"contentEncoding\\\":{\\\"type\\\":\\\"string\\\"},\\\"if\\\":{\\\"$ref\\\":\\\"#\\\"},\\\"then\\\":{\\\"$ref\\\":\\\"#\\\"},\\\"else\\\":{\\\"$ref\\\":\\\"#\\\"},\\\"allOf\\\":{\\\"$ref\\\":\\\"#/definitions/schemaArray\\\"},\\\"anyOf\\\":{\\\"$ref\\\":\\\"#/definitions/schemaArray\\\"},\\\"oneOf\\\":{\\\"$ref\\\":\\\"#/definitions/schemaArray\\\"},\\\"not\\\":{\\\"$ref\\\":\\\"#\\\"}},\\\"default\\\":true}\");\n\n//# sourceURL=webpack://d3Foresight/./node_modules/ajv/lib/refs/json-schema-draft-07.json?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/core-js/array/from.js":
  /*!**********************************************************!*\
    !*** ./node_modules/babel-runtime/core-js/array/from.js ***!
    \**********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/array/from */ \"./node_modules/core-js/library/fn/array/from.js\"), __esModule: true };\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/core-js/array/from.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/core-js/object/assign.js":
  /*!*************************************************************!*\
    !*** ./node_modules/babel-runtime/core-js/object/assign.js ***!
    \*************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/assign */ \"./node_modules/core-js/library/fn/object/assign.js\"), __esModule: true };\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/core-js/object/assign.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/core-js/object/create.js":
  /*!*************************************************************!*\
    !*** ./node_modules/babel-runtime/core-js/object/create.js ***!
    \*************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/create */ \"./node_modules/core-js/library/fn/object/create.js\"), __esModule: true };\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/core-js/object/create.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/core-js/object/define-property.js":
  /*!**********************************************************************!*\
    !*** ./node_modules/babel-runtime/core-js/object/define-property.js ***!
    \**********************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/define-property */ \"./node_modules/core-js/library/fn/object/define-property.js\"), __esModule: true };\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/core-js/object/define-property.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js":
  /*!**********************************************************************************!*\
    !*** ./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js ***!
    \**********************************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/get-own-property-descriptor */ \"./node_modules/core-js/library/fn/object/get-own-property-descriptor.js\"), __esModule: true };\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/core-js/object/get-prototype-of.js":
  /*!***********************************************************************!*\
    !*** ./node_modules/babel-runtime/core-js/object/get-prototype-of.js ***!
    \***********************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/get-prototype-of */ \"./node_modules/core-js/library/fn/object/get-prototype-of.js\"), __esModule: true };\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/core-js/object/get-prototype-of.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/core-js/object/set-prototype-of.js":
  /*!***********************************************************************!*\
    !*** ./node_modules/babel-runtime/core-js/object/set-prototype-of.js ***!
    \***********************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/set-prototype-of */ \"./node_modules/core-js/library/fn/object/set-prototype-of.js\"), __esModule: true };\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/core-js/object/set-prototype-of.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/core-js/symbol.js":
  /*!******************************************************!*\
    !*** ./node_modules/babel-runtime/core-js/symbol.js ***!
    \******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/symbol */ \"./node_modules/core-js/library/fn/symbol/index.js\"), __esModule: true };\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/core-js/symbol.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/core-js/symbol/iterator.js":
  /*!***************************************************************!*\
    !*** ./node_modules/babel-runtime/core-js/symbol/iterator.js ***!
    \***************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("module.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/symbol/iterator */ \"./node_modules/core-js/library/fn/symbol/iterator.js\"), __esModule: true };\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/core-js/symbol/iterator.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/helpers/classCallCheck.js":
  /*!**************************************************************!*\
    !*** ./node_modules/babel-runtime/helpers/classCallCheck.js ***!
    \**************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/helpers/classCallCheck.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/helpers/createClass.js":
  /*!***********************************************************!*\
    !*** ./node_modules/babel-runtime/helpers/createClass.js ***!
    \***********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nexports.__esModule = true;\n\nvar _defineProperty = __webpack_require__(/*! ../core-js/object/define-property */ \"./node_modules/babel-runtime/core-js/object/define-property.js\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/helpers/createClass.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/helpers/extends.js":
  /*!*******************************************************!*\
    !*** ./node_modules/babel-runtime/helpers/extends.js ***!
    \*******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nexports.__esModule = true;\n\nvar _assign = __webpack_require__(/*! ../core-js/object/assign */ \"./node_modules/babel-runtime/core-js/object/assign.js\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/helpers/extends.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/helpers/get.js":
  /*!***************************************************!*\
    !*** ./node_modules/babel-runtime/helpers/get.js ***!
    \***************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nexports.__esModule = true;\n\nvar _getPrototypeOf = __webpack_require__(/*! ../core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _getOwnPropertyDescriptor = __webpack_require__(/*! ../core-js/object/get-own-property-descriptor */ \"./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js\");\n\nvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function get(object, property, receiver) {\n  if (object === null) object = Function.prototype;\n  var desc = (0, _getOwnPropertyDescriptor2.default)(object, property);\n\n  if (desc === undefined) {\n    var parent = (0, _getPrototypeOf2.default)(object);\n\n    if (parent === null) {\n      return undefined;\n    } else {\n      return get(parent, property, receiver);\n    }\n  } else if (\"value\" in desc) {\n    return desc.value;\n  } else {\n    var getter = desc.get;\n\n    if (getter === undefined) {\n      return undefined;\n    }\n\n    return getter.call(receiver);\n  }\n};\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/helpers/get.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/helpers/inherits.js":
  /*!********************************************************!*\
    !*** ./node_modules/babel-runtime/helpers/inherits.js ***!
    \********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = __webpack_require__(/*! ../core-js/object/set-prototype-of */ \"./node_modules/babel-runtime/core-js/object/set-prototype-of.js\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = __webpack_require__(/*! ../core-js/object/create */ \"./node_modules/babel-runtime/core-js/object/create.js\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = __webpack_require__(/*! ../helpers/typeof */ \"./node_modules/babel-runtime/helpers/typeof.js\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n  }\n\n  subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/helpers/inherits.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/helpers/objectDestructuringEmpty.js":
  /*!************************************************************************!*\
    !*** ./node_modules/babel-runtime/helpers/objectDestructuringEmpty.js ***!
    \************************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nexports.__esModule = true;\n\nexports.default = function (obj) {\n  if (obj == null) throw new TypeError(\"Cannot destructure undefined\");\n};\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/helpers/objectDestructuringEmpty.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/helpers/possibleConstructorReturn.js":
  /*!*************************************************************************!*\
    !*** ./node_modules/babel-runtime/helpers/possibleConstructorReturn.js ***!
    \*************************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nexports.__esModule = true;\n\nvar _typeof2 = __webpack_require__(/*! ../helpers/typeof */ \"./node_modules/babel-runtime/helpers/typeof.js\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/helpers/possibleConstructorReturn.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/helpers/set.js":
  /*!***************************************************!*\
    !*** ./node_modules/babel-runtime/helpers/set.js ***!
    \***************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nexports.__esModule = true;\n\nvar _getPrototypeOf = __webpack_require__(/*! ../core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _getOwnPropertyDescriptor = __webpack_require__(/*! ../core-js/object/get-own-property-descriptor */ \"./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js\");\n\nvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function set(object, property, value, receiver) {\n  var desc = (0, _getOwnPropertyDescriptor2.default)(object, property);\n\n  if (desc === undefined) {\n    var parent = (0, _getPrototypeOf2.default)(object);\n\n    if (parent !== null) {\n      set(parent, property, value, receiver);\n    }\n  } else if (\"value\" in desc && desc.writable) {\n    desc.value = value;\n  } else {\n    var setter = desc.set;\n\n    if (setter !== undefined) {\n      setter.call(receiver, value);\n    }\n  }\n\n  return value;\n};\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/helpers/set.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/helpers/toConsumableArray.js":
  /*!*****************************************************************!*\
    !*** ./node_modules/babel-runtime/helpers/toConsumableArray.js ***!
    \*****************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nexports.__esModule = true;\n\nvar _from = __webpack_require__(/*! ../core-js/array/from */ \"./node_modules/babel-runtime/core-js/array/from.js\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  } else {\n    return (0, _from2.default)(arr);\n  }\n};\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/helpers/toConsumableArray.js?");
  
  /***/ }),
  
  /***/ "./node_modules/babel-runtime/helpers/typeof.js":
  /*!******************************************************!*\
    !*** ./node_modules/babel-runtime/helpers/typeof.js ***!
    \******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nexports.__esModule = true;\n\nvar _iterator = __webpack_require__(/*! ../core-js/symbol/iterator */ \"./node_modules/babel-runtime/core-js/symbol/iterator.js\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = __webpack_require__(/*! ../core-js/symbol */ \"./node_modules/babel-runtime/core-js/symbol.js\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n  return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n  return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};\n\n//# sourceURL=webpack://d3Foresight/./node_modules/babel-runtime/helpers/typeof.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/fn/array/from.js":
  /*!*******************************************************!*\
    !*** ./node_modules/core-js/library/fn/array/from.js ***!
    \*******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("__webpack_require__(/*! ../../modules/es6.string.iterator */ \"./node_modules/core-js/library/modules/es6.string.iterator.js\");\n__webpack_require__(/*! ../../modules/es6.array.from */ \"./node_modules/core-js/library/modules/es6.array.from.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Array.from;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/fn/array/from.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/fn/object/assign.js":
  /*!**********************************************************!*\
    !*** ./node_modules/core-js/library/fn/object/assign.js ***!
    \**********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("__webpack_require__(/*! ../../modules/es6.object.assign */ \"./node_modules/core-js/library/modules/es6.object.assign.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.assign;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/fn/object/assign.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/fn/object/create.js":
  /*!**********************************************************!*\
    !*** ./node_modules/core-js/library/fn/object/create.js ***!
    \**********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("__webpack_require__(/*! ../../modules/es6.object.create */ \"./node_modules/core-js/library/modules/es6.object.create.js\");\nvar $Object = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object;\nmodule.exports = function create(P, D) {\n  return $Object.create(P, D);\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/fn/object/create.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/fn/object/define-property.js":
  /*!*******************************************************************!*\
    !*** ./node_modules/core-js/library/fn/object/define-property.js ***!
    \*******************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("__webpack_require__(/*! ../../modules/es6.object.define-property */ \"./node_modules/core-js/library/modules/es6.object.define-property.js\");\nvar $Object = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object;\nmodule.exports = function defineProperty(it, key, desc) {\n  return $Object.defineProperty(it, key, desc);\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/fn/object/define-property.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/fn/object/get-own-property-descriptor.js":
  /*!*******************************************************************************!*\
    !*** ./node_modules/core-js/library/fn/object/get-own-property-descriptor.js ***!
    \*******************************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("__webpack_require__(/*! ../../modules/es6.object.get-own-property-descriptor */ \"./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js\");\nvar $Object = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n  return $Object.getOwnPropertyDescriptor(it, key);\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/fn/object/get-own-property-descriptor.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/fn/object/get-prototype-of.js":
  /*!********************************************************************!*\
    !*** ./node_modules/core-js/library/fn/object/get-prototype-of.js ***!
    \********************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("__webpack_require__(/*! ../../modules/es6.object.get-prototype-of */ \"./node_modules/core-js/library/modules/es6.object.get-prototype-of.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.getPrototypeOf;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/fn/object/get-prototype-of.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/fn/object/set-prototype-of.js":
  /*!********************************************************************!*\
    !*** ./node_modules/core-js/library/fn/object/set-prototype-of.js ***!
    \********************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("__webpack_require__(/*! ../../modules/es6.object.set-prototype-of */ \"./node_modules/core-js/library/modules/es6.object.set-prototype-of.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.setPrototypeOf;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/fn/object/set-prototype-of.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/fn/symbol/index.js":
  /*!*********************************************************!*\
    !*** ./node_modules/core-js/library/fn/symbol/index.js ***!
    \*********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("__webpack_require__(/*! ../../modules/es6.symbol */ \"./node_modules/core-js/library/modules/es6.symbol.js\");\n__webpack_require__(/*! ../../modules/es6.object.to-string */ \"./node_modules/core-js/library/modules/es6.object.to-string.js\");\n__webpack_require__(/*! ../../modules/es7.symbol.async-iterator */ \"./node_modules/core-js/library/modules/es7.symbol.async-iterator.js\");\n__webpack_require__(/*! ../../modules/es7.symbol.observable */ \"./node_modules/core-js/library/modules/es7.symbol.observable.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Symbol;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/fn/symbol/index.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/fn/symbol/iterator.js":
  /*!************************************************************!*\
    !*** ./node_modules/core-js/library/fn/symbol/iterator.js ***!
    \************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("__webpack_require__(/*! ../../modules/es6.string.iterator */ \"./node_modules/core-js/library/modules/es6.string.iterator.js\");\n__webpack_require__(/*! ../../modules/web.dom.iterable */ \"./node_modules/core-js/library/modules/web.dom.iterable.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_wks-ext */ \"./node_modules/core-js/library/modules/_wks-ext.js\").f('iterator');\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/fn/symbol/iterator.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_a-function.js":
  /*!*************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_a-function.js ***!
    \*************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_a-function.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_add-to-unscopables.js":
  /*!*********************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_add-to-unscopables.js ***!
    \*********************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("module.exports = function () { /* empty */ };\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_add-to-unscopables.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_an-object.js":
  /*!************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_an-object.js ***!
    \************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_an-object.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_array-includes.js":
  /*!*****************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_array-includes.js ***!
    \*****************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/library/modules/_to-length.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ \"./node_modules/core-js/library/modules/_to-absolute-index.js\");\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_array-includes.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_classof.js":
  /*!**********************************************************!*\
    !*** ./node_modules/core-js/library/modules/_classof.js ***!
    \**********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/library/modules/_cof.js\");\nvar TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_classof.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_cof.js":
  /*!******************************************************!*\
    !*** ./node_modules/core-js/library/modules/_cof.js ***!
    \******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_cof.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_core.js":
  /*!*******************************************************!*\
    !*** ./node_modules/core-js/library/modules/_core.js ***!
    \*******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("var core = module.exports = { version: '2.5.3' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_core.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_create-property.js":
  /*!******************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_create-property.js ***!
    \******************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nvar $defineProperty = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\n\nmodule.exports = function (object, index, value) {\n  if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n  else object[index] = value;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_create-property.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_ctx.js":
  /*!******************************************************!*\
    !*** ./node_modules/core-js/library/modules/_ctx.js ***!
    \******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// optional / simple context binding\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/core-js/library/modules/_a-function.js\");\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_ctx.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_defined.js":
  /*!**********************************************************!*\
    !*** ./node_modules/core-js/library/modules/_defined.js ***!
    \**********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_defined.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_descriptors.js":
  /*!**************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_descriptors.js ***!
    \**************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_descriptors.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_dom-create.js":
  /*!*************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_dom-create.js ***!
    \*************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar document = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_dom-create.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_enum-bug-keys.js":
  /*!****************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_enum-bug-keys.js ***!
    \****************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_enum-bug-keys.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_enum-keys.js":
  /*!************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_enum-keys.js ***!
    \************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// all enumerable object keys, includes symbols\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\nvar gOPS = __webpack_require__(/*! ./_object-gops */ \"./node_modules/core-js/library/modules/_object-gops.js\");\nvar pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\");\nmodule.exports = function (it) {\n  var result = getKeys(it);\n  var getSymbols = gOPS.f;\n  if (getSymbols) {\n    var symbols = getSymbols(it);\n    var isEnum = pIE.f;\n    var i = 0;\n    var key;\n    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n  } return result;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_enum-keys.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_export.js":
  /*!*********************************************************!*\
    !*** ./node_modules/core-js/library/modules/_export.js ***!
    \*********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && key in exports) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_export.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_fails.js":
  /*!********************************************************!*\
    !*** ./node_modules/core-js/library/modules/_fails.js ***!
    \********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_fails.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_global.js":
  /*!*********************************************************!*\
    !*** ./node_modules/core-js/library/modules/_global.js ***!
    \*********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_global.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_has.js":
  /*!******************************************************!*\
    !*** ./node_modules/core-js/library/modules/_has.js ***!
    \******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_has.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_hide.js":
  /*!*******************************************************!*\
    !*** ./node_modules/core-js/library/modules/_hide.js ***!
    \*******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_hide.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_html.js":
  /*!*******************************************************!*\
    !*** ./node_modules/core-js/library/modules/_html.js ***!
    \*******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var document = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\").document;\nmodule.exports = document && document.documentElement;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_html.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_ie8-dom-define.js":
  /*!*****************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_ie8-dom-define.js ***!
    \*****************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("module.exports = !__webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") && !__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n  return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ \"./node_modules/core-js/library/modules/_dom-create.js\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_ie8-dom-define.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_iobject.js":
  /*!**********************************************************!*\
    !*** ./node_modules/core-js/library/modules/_iobject.js ***!
    \**********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/library/modules/_cof.js\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_iobject.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_is-array-iter.js":
  /*!****************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_is-array-iter.js ***!
    \****************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// check on default Array iterator\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_is-array-iter.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_is-array.js":
  /*!***********************************************************!*\
    !*** ./node_modules/core-js/library/modules/_is-array.js ***!
    \***********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/library/modules/_cof.js\");\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_is-array.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_is-object.js":
  /*!************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_is-object.js ***!
    \************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_is-object.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_iter-call.js":
  /*!************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_iter-call.js ***!
    \************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// call something on iterator step with safe closing on error\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nmodule.exports = function (iterator, fn, value, entries) {\n  try {\n    return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n  // 7.4.6 IteratorClose(iterator, completion)\n  } catch (e) {\n    var ret = iterator['return'];\n    if (ret !== undefined) anObject(ret.call(iterator));\n    throw e;\n  }\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_iter-call.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_iter-create.js":
  /*!**************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_iter-create.js ***!
    \**************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nvar create = __webpack_require__(/*! ./_object-create */ \"./node_modules/core-js/library/modules/_object-create.js\");\nvar descriptor = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\")(IteratorPrototype, __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_iter-create.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_iter-define.js":
  /*!**************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_iter-define.js ***!
    \**************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nvar LIBRARY = __webpack_require__(/*! ./_library */ \"./node_modules/core-js/library/modules/_library.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/core-js/library/modules/_redefine.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nvar $iterCreate = __webpack_require__(/*! ./_iter-create */ \"./node_modules/core-js/library/modules/_iter-create.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ \"./node_modules/core-js/library/modules/_object-gpo.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = (!BUGGY && $native) || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_iter-define.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_iter-detect.js":
  /*!**************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_iter-detect.js ***!
    \**************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var riter = [7][ITERATOR]();\n  riter['return'] = function () { SAFE_CLOSING = true; };\n  // eslint-disable-next-line no-throw-literal\n  Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n  if (!skipClosing && !SAFE_CLOSING) return false;\n  var safe = false;\n  try {\n    var arr = [7];\n    var iter = arr[ITERATOR]();\n    iter.next = function () { return { done: safe = true }; };\n    arr[ITERATOR] = function () { return iter; };\n    exec(arr);\n  } catch (e) { /* empty */ }\n  return safe;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_iter-detect.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_iter-step.js":
  /*!************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_iter-step.js ***!
    \************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_iter-step.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_iterators.js":
  /*!************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_iterators.js ***!
    \************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("module.exports = {};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_iterators.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_library.js":
  /*!**********************************************************!*\
    !*** ./node_modules/core-js/library/modules/_library.js ***!
    \**********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("module.exports = true;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_library.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_meta.js":
  /*!*******************************************************!*\
    !*** ./node_modules/core-js/library/modules/_meta.js ***!
    \*******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var META = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\")('meta');\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar setDesc = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n  return true;\n};\nvar FREEZE = !__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n  return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n  setDesc(it, META, { value: {\n    i: 'O' + ++id, // object ID\n    w: {}          // weak collections IDs\n  } });\n};\nvar fastKey = function (it, create) {\n  // return primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMeta(it);\n  // return object ID\n  } return it[META].i;\n};\nvar getWeak = function (it, create) {\n  if (!has(it, META)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMeta(it);\n  // return hash weak collections IDs\n  } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n  return it;\n};\nvar meta = module.exports = {\n  KEY: META,\n  NEED: false,\n  fastKey: fastKey,\n  getWeak: getWeak,\n  onFreeze: onFreeze\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_meta.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_object-assign.js":
  /*!****************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_object-assign.js ***!
    \****************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\nvar gOPS = __webpack_require__(/*! ./_object-gops */ \"./node_modules/core-js/library/modules/_object-gops.js\");\nvar pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/core-js/library/modules/_iobject.js\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line no-undef\n  var S = Symbol();\n  var K = 'abcdefghijklmnopqrst';\n  A[S] = 7;\n  K.split('').forEach(function (k) { B[k] = k; });\n  return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n  var T = toObject(target);\n  var aLen = arguments.length;\n  var index = 1;\n  var getSymbols = gOPS.f;\n  var isEnum = pIE.f;\n  while (aLen > index) {\n    var S = IObject(arguments[index++]);\n    var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n  } return T;\n} : $assign;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_object-assign.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_object-create.js":
  /*!****************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_object-create.js ***!
    \****************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar dPs = __webpack_require__(/*! ./_object-dps */ \"./node_modules/core-js/library/modules/_object-dps.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/core-js/library/modules/_enum-bug-keys.js\");\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = __webpack_require__(/*! ./_dom-create */ \"./node_modules/core-js/library/modules/_dom-create.js\")('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  __webpack_require__(/*! ./_html */ \"./node_modules/core-js/library/modules/_html.js\").appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_object-create.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_object-dp.js":
  /*!************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_object-dp.js ***!
    \************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ \"./node_modules/core-js/library/modules/_ie8-dom-define.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/core-js/library/modules/_to-primitive.js\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_object-dp.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_object-dps.js":
  /*!*************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_object-dps.js ***!
    \*************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\n\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_object-dps.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_object-gopd.js":
  /*!**************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_object-gopd.js ***!
    \**************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/core-js/library/modules/_to-primitive.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ \"./node_modules/core-js/library/modules/_ie8-dom-define.js\");\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? gOPD : function getOwnPropertyDescriptor(O, P) {\n  O = toIObject(O);\n  P = toPrimitive(P, true);\n  if (IE8_DOM_DEFINE) try {\n    return gOPD(O, P);\n  } catch (e) { /* empty */ }\n  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_object-gopd.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_object-gopn-ext.js":
  /*!******************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_object-gopn-ext.js ***!
    \******************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar gOPN = __webpack_require__(/*! ./_object-gopn */ \"./node_modules/core-js/library/modules/_object-gopn.js\").f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return gOPN(it);\n  } catch (e) {\n    return windowNames.slice();\n  }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_object-gopn-ext.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_object-gopn.js":
  /*!**************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_object-gopn.js ***!
    \**************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(/*! ./_object-keys-internal */ \"./node_modules/core-js/library/modules/_object-keys-internal.js\");\nvar hiddenKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/core-js/library/modules/_enum-bug-keys.js\").concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return $keys(O, hiddenKeys);\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_object-gopn.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_object-gops.js":
  /*!**************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_object-gops.js ***!
    \**************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("exports.f = Object.getOwnPropertySymbols;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_object-gops.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_object-gpo.js":
  /*!*************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_object-gpo.js ***!
    \*************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_object-gpo.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_object-keys-internal.js":
  /*!***********************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_object-keys-internal.js ***!
    \***********************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar arrayIndexOf = __webpack_require__(/*! ./_array-includes */ \"./node_modules/core-js/library/modules/_array-includes.js\")(false);\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_object-keys-internal.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_object-keys.js":
  /*!**************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_object-keys.js ***!
    \**************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(/*! ./_object-keys-internal */ \"./node_modules/core-js/library/modules/_object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/core-js/library/modules/_enum-bug-keys.js\");\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_object-keys.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_object-pie.js":
  /*!*************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_object-pie.js ***!
    \*************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("exports.f = {}.propertyIsEnumerable;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_object-pie.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_object-sap.js":
  /*!*************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_object-sap.js ***!
    \*************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar fails = __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\");\nmodule.exports = function (KEY, exec) {\n  var fn = (core.Object || {})[KEY] || Object[KEY];\n  var exp = {};\n  exp[KEY] = exec(fn);\n  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_object-sap.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_property-desc.js":
  /*!****************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_property-desc.js ***!
    \****************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_property-desc.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_redefine.js":
  /*!***********************************************************!*\
    !*** ./node_modules/core-js/library/modules/_redefine.js ***!
    \***********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("module.exports = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_redefine.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_set-proto.js":
  /*!************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_set-proto.js ***!
    \************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar check = function (O, proto) {\n  anObject(O);\n  if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n    function (test, buggy, set) {\n      try {\n        set = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\")(Function.call, __webpack_require__(/*! ./_object-gopd */ \"./node_modules/core-js/library/modules/_object-gopd.js\").f(Object.prototype, '__proto__').set, 2);\n        set(test, []);\n        buggy = !(test instanceof Array);\n      } catch (e) { buggy = true; }\n      return function setPrototypeOf(O, proto) {\n        check(O, proto);\n        if (buggy) O.__proto__ = proto;\n        else set(O, proto);\n        return O;\n      };\n    }({}, false) : undefined),\n  check: check\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_set-proto.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_set-to-string-tag.js":
  /*!********************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_set-to-string-tag.js ***!
    \********************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var def = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f;\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_set-to-string-tag.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_shared-key.js":
  /*!*************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_shared-key.js ***!
    \*************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var shared = __webpack_require__(/*! ./_shared */ \"./node_modules/core-js/library/modules/_shared.js\")('keys');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\");\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_shared-key.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_shared.js":
  /*!*********************************************************!*\
    !*** ./node_modules/core-js/library/modules/_shared.js ***!
    \*********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n  return store[key] || (store[key] = {});\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_shared.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_string-at.js":
  /*!************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_string-at.js ***!
    \************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/library/modules/_to-integer.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/library/modules/_defined.js\");\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_string-at.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_to-absolute-index.js":
  /*!********************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_to-absolute-index.js ***!
    \********************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/library/modules/_to-integer.js\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_to-absolute-index.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_to-integer.js":
  /*!*************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_to-integer.js ***!
    \*************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_to-integer.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_to-iobject.js":
  /*!*************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_to-iobject.js ***!
    \*************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/core-js/library/modules/_iobject.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/library/modules/_defined.js\");\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_to-iobject.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_to-length.js":
  /*!************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_to-length.js ***!
    \************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// 7.1.15 ToLength\nvar toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/library/modules/_to-integer.js\");\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_to-length.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_to-object.js":
  /*!************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_to-object.js ***!
    \************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/library/modules/_defined.js\");\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_to-object.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_to-primitive.js":
  /*!***************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_to-primitive.js ***!
    \***************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_to-primitive.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_uid.js":
  /*!******************************************************!*\
    !*** ./node_modules/core-js/library/modules/_uid.js ***!
    \******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_uid.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_wks-define.js":
  /*!*************************************************************!*\
    !*** ./node_modules/core-js/library/modules/_wks-define.js ***!
    \*************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar LIBRARY = __webpack_require__(/*! ./_library */ \"./node_modules/core-js/library/modules/_library.js\");\nvar wksExt = __webpack_require__(/*! ./_wks-ext */ \"./node_modules/core-js/library/modules/_wks-ext.js\");\nvar defineProperty = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f;\nmodule.exports = function (name) {\n  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_wks-define.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_wks-ext.js":
  /*!**********************************************************!*\
    !*** ./node_modules/core-js/library/modules/_wks-ext.js ***!
    \**********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("exports.f = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\");\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_wks-ext.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/_wks.js":
  /*!******************************************************!*\
    !*** ./node_modules/core-js/library/modules/_wks.js ***!
    \******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var store = __webpack_require__(/*! ./_shared */ \"./node_modules/core-js/library/modules/_shared.js\")('wks');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\");\nvar Symbol = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/_wks.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/core.get-iterator-method.js":
  /*!**************************************************************************!*\
    !*** ./node_modules/core-js/library/modules/core.get-iterator-method.js ***!
    \**************************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var classof = __webpack_require__(/*! ./_classof */ \"./node_modules/core-js/library/modules/_classof.js\");\nvar ITERATOR = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('iterator');\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nmodule.exports = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\").getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/core.get-iterator-method.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/es6.array.from.js":
  /*!****************************************************************!*\
    !*** ./node_modules/core-js/library/modules/es6.array.from.js ***!
    \****************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar call = __webpack_require__(/*! ./_iter-call */ \"./node_modules/core-js/library/modules/_iter-call.js\");\nvar isArrayIter = __webpack_require__(/*! ./_is-array-iter */ \"./node_modules/core-js/library/modules/_is-array-iter.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/library/modules/_to-length.js\");\nvar createProperty = __webpack_require__(/*! ./_create-property */ \"./node_modules/core-js/library/modules/_create-property.js\");\nvar getIterFn = __webpack_require__(/*! ./core.get-iterator-method */ \"./node_modules/core-js/library/modules/core.get-iterator-method.js\");\n\n$export($export.S + $export.F * !__webpack_require__(/*! ./_iter-detect */ \"./node_modules/core-js/library/modules/_iter-detect.js\")(function (iter) { Array.from(iter); }), 'Array', {\n  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n    var O = toObject(arrayLike);\n    var C = typeof this == 'function' ? this : Array;\n    var aLen = arguments.length;\n    var mapfn = aLen > 1 ? arguments[1] : undefined;\n    var mapping = mapfn !== undefined;\n    var index = 0;\n    var iterFn = getIterFn(O);\n    var length, result, step, iterator;\n    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n    // if object isn't iterable or it's array with default iterator - use simple case\n    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n      }\n    } else {\n      length = toLength(O.length);\n      for (result = new C(length); length > index; index++) {\n        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n      }\n    }\n    result.length = index;\n    return result;\n  }\n});\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/es6.array.from.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/es6.array.iterator.js":
  /*!********************************************************************!*\
    !*** ./node_modules/core-js/library/modules/es6.array.iterator.js ***!
    \********************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nvar addToUnscopables = __webpack_require__(/*! ./_add-to-unscopables */ \"./node_modules/core-js/library/modules/_add-to-unscopables.js\");\nvar step = __webpack_require__(/*! ./_iter-step */ \"./node_modules/core-js/library/modules/_iter-step.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(/*! ./_iter-define */ \"./node_modules/core-js/library/modules/_iter-define.js\")(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/es6.array.iterator.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/es6.object.assign.js":
  /*!*******************************************************************!*\
    !*** ./node_modules/core-js/library/modules/es6.object.assign.js ***!
    \*******************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(/*! ./_object-assign */ \"./node_modules/core-js/library/modules/_object-assign.js\") });\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/es6.object.assign.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/es6.object.create.js":
  /*!*******************************************************************!*\
    !*** ./node_modules/core-js/library/modules/es6.object.create.js ***!
    \*******************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: __webpack_require__(/*! ./_object-create */ \"./node_modules/core-js/library/modules/_object-create.js\") });\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/es6.object.create.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/es6.object.define-property.js":
  /*!****************************************************************************!*\
    !*** ./node_modules/core-js/library/modules/es6.object.define-property.js ***!
    \****************************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !__webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\"), 'Object', { defineProperty: __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\").f });\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/es6.object.define-property.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js":
  /*!****************************************************************************************!*\
    !*** ./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js ***!
    \****************************************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar $getOwnPropertyDescriptor = __webpack_require__(/*! ./_object-gopd */ \"./node_modules/core-js/library/modules/_object-gopd.js\").f;\n\n__webpack_require__(/*! ./_object-sap */ \"./node_modules/core-js/library/modules/_object-sap.js\")('getOwnPropertyDescriptor', function () {\n  return function getOwnPropertyDescriptor(it, key) {\n    return $getOwnPropertyDescriptor(toIObject(it), key);\n  };\n});\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/es6.object.get-prototype-of.js":
  /*!*****************************************************************************!*\
    !*** ./node_modules/core-js/library/modules/es6.object.get-prototype-of.js ***!
    \*****************************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar $getPrototypeOf = __webpack_require__(/*! ./_object-gpo */ \"./node_modules/core-js/library/modules/_object-gpo.js\");\n\n__webpack_require__(/*! ./_object-sap */ \"./node_modules/core-js/library/modules/_object-sap.js\")('getPrototypeOf', function () {\n  return function getPrototypeOf(it) {\n    return $getPrototypeOf(toObject(it));\n  };\n});\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/es6.object.get-prototype-of.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/es6.object.set-prototype-of.js":
  /*!*****************************************************************************!*\
    !*** ./node_modules/core-js/library/modules/es6.object.set-prototype-of.js ***!
    \*****************************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n$export($export.S, 'Object', { setPrototypeOf: __webpack_require__(/*! ./_set-proto */ \"./node_modules/core-js/library/modules/_set-proto.js\").set });\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/es6.object.set-prototype-of.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/es6.object.to-string.js":
  /*!**********************************************************************!*\
    !*** ./node_modules/core-js/library/modules/es6.object.to-string.js ***!
    \**********************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/es6.object.to-string.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/es6.string.iterator.js":
  /*!*********************************************************************!*\
    !*** ./node_modules/core-js/library/modules/es6.string.iterator.js ***!
    \*********************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nvar $at = __webpack_require__(/*! ./_string-at */ \"./node_modules/core-js/library/modules/_string-at.js\")(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\n__webpack_require__(/*! ./_iter-define */ \"./node_modules/core-js/library/modules/_iter-define.js\")(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/es6.string.iterator.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/es6.symbol.js":
  /*!************************************************************!*\
    !*** ./node_modules/core-js/library/modules/es6.symbol.js ***!
    \************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n// ECMAScript 6 symbols shim\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\");\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/core-js/library/modules/_redefine.js\");\nvar META = __webpack_require__(/*! ./_meta */ \"./node_modules/core-js/library/modules/_meta.js\").KEY;\nvar $fails = __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\");\nvar shared = __webpack_require__(/*! ./_shared */ \"./node_modules/core-js/library/modules/_shared.js\");\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/core-js/library/modules/_set-to-string-tag.js\");\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\");\nvar wks = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\");\nvar wksExt = __webpack_require__(/*! ./_wks-ext */ \"./node_modules/core-js/library/modules/_wks-ext.js\");\nvar wksDefine = __webpack_require__(/*! ./_wks-define */ \"./node_modules/core-js/library/modules/_wks-define.js\");\nvar enumKeys = __webpack_require__(/*! ./_enum-keys */ \"./node_modules/core-js/library/modules/_enum-keys.js\");\nvar isArray = __webpack_require__(/*! ./_is-array */ \"./node_modules/core-js/library/modules/_is-array.js\");\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/core-js/library/modules/_to-primitive.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nvar _create = __webpack_require__(/*! ./_object-create */ \"./node_modules/core-js/library/modules/_object-create.js\");\nvar gOPNExt = __webpack_require__(/*! ./_object-gopn-ext */ \"./node_modules/core-js/library/modules/_object-gopn-ext.js\");\nvar $GOPD = __webpack_require__(/*! ./_object-gopd */ \"./node_modules/core-js/library/modules/_object-gopd.js\");\nvar $DP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar $keys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n  return _create(dP({}, 'a', {\n    get: function () { return dP(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (it, key, D) {\n  var protoDesc = gOPD(ObjectProto, key);\n  if (protoDesc) delete ObjectProto[key];\n  dP(it, key, D);\n  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n  sym._k = tag;\n  return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n  anObject(it);\n  key = toPrimitive(key, true);\n  anObject(D);\n  if (has(AllSymbols, key)) {\n    if (!D.enumerable) {\n      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n      it[HIDDEN][key] = true;\n    } else {\n      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n      D = _create(D, { enumerable: createDesc(0, false) });\n    } return setSymbolDesc(it, key, D);\n  } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n  anObject(it);\n  var keys = enumKeys(P = toIObject(P));\n  var i = 0;\n  var l = keys.length;\n  var key;\n  while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n  return it;\n};\nvar $create = function create(it, P) {\n  return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n  var E = isEnum.call(this, key = toPrimitive(key, true));\n  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n  it = toIObject(it);\n  key = toPrimitive(key, true);\n  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n  var D = gOPD(it, key);\n  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n  return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n  var names = gOPN(toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n  } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n  var IS_OP = it === ObjectProto;\n  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n  var result = [];\n  var i = 0;\n  var key;\n  while (names.length > i) {\n    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n  } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n  $Symbol = function Symbol() {\n    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n    var $set = function (value) {\n      if (this === ObjectProto) $set.call(OPSymbols, value);\n      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDesc(this, tag, createDesc(1, value));\n    };\n    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n    return wrap(tag);\n  };\n  redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n    return this._k;\n  });\n\n  $GOPD.f = $getOwnPropertyDescriptor;\n  $DP.f = $defineProperty;\n  __webpack_require__(/*! ./_object-gopn */ \"./node_modules/core-js/library/modules/_object-gopn.js\").f = gOPNExt.f = $getOwnPropertyNames;\n  __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\").f = $propertyIsEnumerable;\n  __webpack_require__(/*! ./_object-gops */ \"./node_modules/core-js/library/modules/_object-gops.js\").f = $getOwnPropertySymbols;\n\n  if (DESCRIPTORS && !__webpack_require__(/*! ./_library */ \"./node_modules/core-js/library/modules/_library.js\")) {\n    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n  }\n\n  wksExt.f = function (name) {\n    return wrap(wks(name));\n  };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n  // 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\n  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n  // 19.4.2.1 Symbol.for(key)\n  'for': function (key) {\n    return has(SymbolRegistry, key += '')\n      ? SymbolRegistry[key]\n      : SymbolRegistry[key] = $Symbol(key);\n  },\n  // 19.4.2.5 Symbol.keyFor(sym)\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n  },\n  useSetter: function () { setter = true; },\n  useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n  // 19.1.2.2 Object.create(O [, Properties])\n  create: $create,\n  // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n  defineProperty: $defineProperty,\n  // 19.1.2.3 Object.defineProperties(O, Properties)\n  defineProperties: $defineProperties,\n  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n  // 19.1.2.7 Object.getOwnPropertyNames(O)\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // 19.1.2.8 Object.getOwnPropertySymbols(O)\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n  var S = $Symbol();\n  // MS Edge converts symbol values to JSON as {}\n  // WebKit converts symbol values to JSON as null\n  // V8 throws on boxed symbols\n  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n  stringify: function stringify(it) {\n    var args = [it];\n    var i = 1;\n    var replacer, $replacer;\n    while (arguments.length > i) args.push(arguments[i++]);\n    $replacer = replacer = args[1];\n    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n    if (!isArray(replacer)) replacer = function (key, value) {\n      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n      if (!isSymbol(value)) return value;\n    };\n    args[1] = replacer;\n    return _stringify.apply($JSON, args);\n  }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/es6.symbol.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/es7.symbol.async-iterator.js":
  /*!***************************************************************************!*\
    !*** ./node_modules/core-js/library/modules/es7.symbol.async-iterator.js ***!
    \***************************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("__webpack_require__(/*! ./_wks-define */ \"./node_modules/core-js/library/modules/_wks-define.js\")('asyncIterator');\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/es7.symbol.async-iterator.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/es7.symbol.observable.js":
  /*!***********************************************************************!*\
    !*** ./node_modules/core-js/library/modules/es7.symbol.observable.js ***!
    \***********************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("__webpack_require__(/*! ./_wks-define */ \"./node_modules/core-js/library/modules/_wks-define.js\")('observable');\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/es7.symbol.observable.js?");
  
  /***/ }),
  
  /***/ "./node_modules/core-js/library/modules/web.dom.iterable.js":
  /*!******************************************************************!*\
    !*** ./node_modules/core-js/library/modules/web.dom.iterable.js ***!
    \******************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("__webpack_require__(/*! ./es6.array.iterator */ \"./node_modules/core-js/library/modules/es6.array.iterator.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\nvar Iterators = __webpack_require__(/*! ./_iterators */ \"./node_modules/core-js/library/modules/_iterators.js\");\nvar TO_STRING_TAG = __webpack_require__(/*! ./_wks */ \"./node_modules/core-js/library/modules/_wks.js\")('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n  'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n  var NAME = DOMIterables[i];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n  Iterators[NAME] = Iterators.Array;\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/core-js/library/modules/web.dom.iterable.js?");
  
  /***/ }),
  
  /***/ "./node_modules/css-loader/index.js!./node_modules/sass-loader/lib/loader.js?sourceMap!./src/styles/main.scss":
  /*!***********************************************************************************************************!*\
    !*** ./node_modules/css-loader!./node_modules/sass-loader/lib/loader.js?sourceMap!./src/styles/main.scss ***!
    \***********************************************************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("exports = module.exports = __webpack_require__(/*! ../../node_modules/css-loader/lib/css-base.js */ \"./node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.i, \".d3f-chart .axis path,\\n.d3f-chart .axis line {\\n  fill: none;\\n  stroke: #bbb; }\\n\\n.d3f-chart .axis text {\\n  fill: #333;\\n  font-size: 10px; }\\n\\n.d3f-chart {\\n  font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Helvetica, Arial, sans-serif;\\n  font-weight: normal; }\\n\\n.d3f-chart {\\n  position: relative; }\\n\\n.d3f-chart .overlay {\\n  fill: none;\\n  pointer-events: all; }\\n\\n.d3f-chart .hover-line {\\n  fill: none;\\n  stroke: #bbb;\\n  stroke-width: 1px; }\\n\\n.d3f-chart .no-pred-text {\\n  font-size: 10px;\\n  letter-spacing: 1px;\\n  line-height: 25px;\\n  fill: #666;\\n  text-transform: uppercase; }\\n\\n.d3f-tooltip {\\n  background-color: #fff;\\n  box-shadow: 0 0 2px #ccc;\\n  border-style: solid;\\n  border-width: 1px;\\n  border-color: #ccc;\\n  border-radius: 0;\\n  font-size: 11px;\\n  position: fixed;\\n  max-width: 250px;\\n  z-index: 100; }\\n  .d3f-tooltip .tooltip-title {\\n    padding: 5px 10px;\\n    font-size: 13px;\\n    margin-bottom: 0 !important;\\n    margin-top: 5px; }\\n  .d3f-tooltip .tooltip-text {\\n    padding: 5px 10px;\\n    margin-top: 0; }\\n  .d3f-tooltip .tooltip-row {\\n    padding: 5px 10px;\\n    background-color: #fff;\\n    color: #333; }\\n  .d3f-tooltip .bold {\\n    float: right;\\n    margin-left: 5px;\\n    font-weight: bold; }\\n\\n.d3f-controls .control-btns {\\n  background-color: #fff;\\n  position: absolute;\\n  right: 20px;\\n  top: 10px; }\\n  .d3f-controls .control-btns .btn {\\n    cursor: pointer;\\n    -webkit-touch-callout: none;\\n    /* iOS Safari */\\n    -webkit-user-select: none;\\n    /* Safari */\\n    -khtml-user-select: none;\\n    /* Konqueror HTML */\\n    -moz-user-select: none;\\n    /* Firefox */\\n    -ms-user-select: none;\\n    /* Internet Explorer/Edge */\\n    user-select: none;\\n    /* Non-prefixed version */\\n    letter-spacing: normal;\\n    font-weight: normal;\\n    display: block;\\n    line-height: normal;\\n    box-shadow: 0 0 2px #ccc;\\n    border-style: solid;\\n    border-width: 1px;\\n    border-color: rgba(92, 107, 192, 0.5);\\n    border-radius: 0;\\n    color: #5c6bc0;\\n    padding: 2px 6px;\\n    margin-bottom: 5px;\\n    font-size: 11px; }\\n    .d3f-controls .control-btns .btn i::before {\\n      margin: 0; }\\n    .d3f-controls .control-btns .btn.active {\\n      background-color: #5c6bc0;\\n      color: #fff; }\\n    .d3f-controls .control-btns .btn:hover {\\n      background-color: #5c6bc0;\\n      color: #fff; }\\n\\n.d3f-controls .legend-drawer {\\n  -webkit-touch-callout: none;\\n  /* iOS Safari */\\n  -webkit-user-select: none;\\n  /* Safari */\\n  -khtml-user-select: none;\\n  /* Konqueror HTML */\\n  -moz-user-select: none;\\n  /* Firefox */\\n  -ms-user-select: none;\\n  /* Internet Explorer/Edge */\\n  user-select: none;\\n  /* Non-prefixed version */\\n  box-shadow: 0 0 2px #ccc;\\n  border-style: solid;\\n  border-width: 1px;\\n  border-color: #ccc;\\n  border-radius: 0;\\n  background-color: #fff;\\n  font-size: 11px;\\n  min-width: 200px;\\n  position: absolute;\\n  left: 60px;\\n  top: 10px; }\\n  .d3f-controls .legend-drawer .legend-middle-container {\\n    background-color: #f5f5f5;\\n    padding: 5px 0; }\\n    .d3f-controls .legend-drawer .legend-middle-container .control-row {\\n      align-items: center;\\n      display: flex;\\n      justify-content: space-between;\\n      margin: 5px 0; }\\n    .d3f-controls .legend-drawer .legend-middle-container .control-row > span:first-child {\\n      margin-right: 5px; }\\n    .d3f-controls .legend-drawer .legend-middle-container .toggle-button {\\n      border-style: solid;\\n      border-width: 1px;\\n      border-color: #ccc;\\n      border-radius: 0;\\n      background-color: #fff;\\n      padding: 2px 6px; }\\n      .d3f-controls .legend-drawer .legend-middle-container .toggle-button.selected {\\n        background-color: #5c6bc0;\\n        border-color: #5c6bc0;\\n        color: #fff; }\\n    .d3f-controls .legend-drawer .legend-middle-container .search-input {\\n      border: 1px solid #ccc;\\n      font-size: 11px;\\n      padding: 5px;\\n      box-shadow: inset 0 0 1px #ccc;\\n      min-width: 90%; }\\n  .d3f-controls .legend-drawer .legend-bottom-container {\\n    max-height: 200px;\\n    overflow-y: auto; }\\n  .d3f-controls .legend-drawer .row {\\n    padding: 4px 10px;\\n    margin: 0; }\\n    .d3f-controls .legend-drawer .row::before, .d3f-controls .legend-drawer .row::after {\\n      content: none; }\\n    .d3f-controls .legend-drawer .row i {\\n      display: inline-block;\\n      font-size: 9px;\\n      font-style: normal;\\n      vertical-align: middle;\\n      text-decoration: none; }\\n    .d3f-controls .legend-drawer .row .row-icon {\\n      margin-right: 3px; }\\n    .d3f-controls .legend-drawer .row .row-title {\\n      display: inline-block;\\n      font-size: 11px;\\n      vertical-align: middle; }\\n    .d3f-controls .legend-drawer .row .row-url {\\n      float: right;\\n      color: #666; }\\n      .d3f-controls .legend-drawer .row .row-url i {\\n        margin: 0; }\\n    .d3f-controls .legend-drawer .row.na {\\n      color: #bbb; }\\n      .d3f-controls .legend-drawer .row.na i {\\n        color: #bbb !important; }\\n\\n.d3f-time-chart .overlay {\\n  cursor: pointer; }\\n\\n.d3f-time-chart .timerect {\\n  fill: #f5f5f5; }\\n\\n.d3f-time-chart .timezero-line {\\n  stroke: #bbb;\\n  stroke-dasharray: 10 5;\\n  stroke-width: 1px; }\\n\\n.d3f-time-chart .data-version-text, .d3f-time-chart .timezero-text {\\n  fill: #666;\\n  font-size: 10px; }\\n\\n.d3f-time-chart .now-line {\\n  stroke: #000;\\n  stroke-dasharray: 10 5;\\n  stroke-width: 1px; }\\n\\n.d3f-time-chart .now-text {\\n  fill: #666;\\n  font-size: 10px;\\n  text-transform: uppercase; }\\n\\n.d3f-time-chart .onset-group .onset-mark {\\n  stroke-width: 6px; }\\n\\n.d3f-time-chart .peak-group .peak-mark {\\n  opacity: .9;\\n  stroke-width: 8px; }\\n  .d3f-time-chart .peak-group .peak-mark:hover {\\n    opacity: 1; }\\n\\n.d3f-time-chart .peak-group line {\\n  stroke-width: 0.5px; }\\n\\n.d3f-time-chart .prediction-group {\\n  pointer-events: none; }\\n  .d3f-time-chart .prediction-group .line-prediction {\\n    fill: none;\\n    stroke-width: 1.5px; }\\n  .d3f-time-chart .prediction-group .point-prediction {\\n    fill: #fff;\\n    stroke-width: 1.5px; }\\n  .d3f-time-chart .prediction-group .area-prediction {\\n    opacity: .2; }\\n\\n.d3f-time-chart .observed-group {\\n  pointer-events: none; }\\n  .d3f-time-chart .observed-group .line-observed {\\n    fill: none;\\n    opacity: 0.4;\\n    stroke: #18817f;\\n    stroke-width: 2.5px; }\\n  .d3f-time-chart .observed-group .point-observed {\\n    fill: #18817f;\\n    opacity: 0.4;\\n    stroke: #18817f; }\\n\\n.d3f-time-chart .actual-group {\\n  pointer-events: none; }\\n  .d3f-time-chart .actual-group .line-actual {\\n    fill: none;\\n    opacity: 0.4;\\n    stroke: #696969;\\n    stroke-width: 2.5px; }\\n  .d3f-time-chart .actual-group .point-actual {\\n    fill: #696969;\\n    opacity: 0.4;\\n    stroke: #696969; }\\n\\n.d3f-time-chart .baseline-group .baseline {\\n  stroke: #333;\\n  stroke-dasharray: 5, 5;\\n  stroke-width: .5px; }\\n\\n.d3f-time-chart .baseline-group text {\\n  fill: #333;\\n  font-size: 10px; }\\n\\n.d3f-time-chart .history-group .line-history {\\n  fill: none;\\n  stroke: #ddd;\\n  stroke-width: 2px; }\\n  .d3f-time-chart .history-group .line-history.highlight {\\n    pointer-events: none;\\n    stroke: #ccc;\\n    stroke-width: 3px; }\\n\\n.d3f-distribution-chart .time-pointer-group .pointer-triangle {\\n  fill: #333; }\\n\\n.d3f-distribution-chart .time-pointer-group .pointer-overlay {\\n  cursor: pointer;\\n  fill: #333;\\n  fill-opacity: 0; }\\n\\n.d3f-distribution-chart .prediction-group {\\n  pointer-events: none; }\\n  .d3f-distribution-chart .prediction-group .line-prediction {\\n    fill: none;\\n    stroke-width: 1.5px; }\\n  .d3f-distribution-chart .prediction-group .area-prediction {\\n    opacity: .05; }\\n\", \"\"]);\n\n// exports\n\n\n//# sourceURL=webpack://d3Foresight/./src/styles/main.scss?./node_modules/css-loader!./node_modules/sass-loader/lib/loader.js?sourceMap");
  
  /***/ }),
  
  /***/ "./node_modules/css-loader/lib/css-base.js":
  /*!*************************************************!*\
    !*** ./node_modules/css-loader/lib/css-base.js ***!
    \*************************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t//  when a module is imported multiple times with different media queries.\n\t\t\t//  I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/css-loader/lib/css-base.js?");
  
  /***/ }),
  
  /***/ "./node_modules/fast-deep-equal/index.js":
  /*!***********************************************!*\
    !*** ./node_modules/fast-deep-equal/index.js ***!
    \***********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/fast-deep-equal/index.js?");
  
  /***/ }),
  
  /***/ "./node_modules/fast-json-stable-stringify/index.js":
  /*!**********************************************************!*\
    !*** ./node_modules/fast-json-stable-stringify/index.js ***!
    \**********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nmodule.exports = function (data, opts) {\n    if (!opts) opts = {};\n    if (typeof opts === 'function') opts = { cmp: opts };\n    var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n    var cmp = opts.cmp && (function (f) {\n        return function (node) {\n            return function (a, b) {\n                var aobj = { key: a, value: node[a] };\n                var bobj = { key: b, value: node[b] };\n                return f(aobj, bobj);\n            };\n        };\n    })(opts.cmp);\n\n    var seen = [];\n    return (function stringify (node) {\n        if (node && node.toJSON && typeof node.toJSON === 'function') {\n            node = node.toJSON();\n        }\n\n        if (node === undefined) return;\n        if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n        if (typeof node !== 'object') return JSON.stringify(node);\n\n        var i, out;\n        if (Array.isArray(node)) {\n            out = '[';\n            for (i = 0; i < node.length; i++) {\n                if (i) out += ',';\n                out += stringify(node[i]) || 'null';\n            }\n            return out + ']';\n        }\n\n        if (node === null) return 'null';\n\n        if (seen.indexOf(node) !== -1) {\n            if (cycles) return JSON.stringify('__cycle__');\n            throw new TypeError('Converting circular structure to JSON');\n        }\n\n        var seenIndex = seen.push(node) - 1;\n        var keys = Object.keys(node).sort(cmp && cmp(node));\n        out = '';\n        for (i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            var value = stringify(node[key]);\n\n            if (!value) continue;\n            if (out) out += ',';\n            out += JSON.stringify(key) + ':' + value;\n        }\n        seen.splice(seenIndex, 1);\n        return '{' + out + '}';\n    })(data);\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/fast-json-stable-stringify/index.js?");
  
  /***/ }),
  
  /***/ "./node_modules/iwanthue/distances.js":
  /*!********************************************!*\
    !*** ./node_modules/iwanthue/distances.js ***!
    \********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("/**\n * Iwanthue Distance Functions\n * ============================\n *\n * Bunch of color-related distance functions, some of which take daltonism\n * into account.\n */\nvar helpers = __webpack_require__(/*! ./helpers.js */ \"./node_modules/iwanthue/helpers.js\");\n\nvar CONFUSION_LINES = {\n  protanope: {\n    x: 0.7465,\n    y: 0.2535,\n    m: 1.273463,\n    yint: -0.073894\n  },\n  deuteranope: {\n    x: 1.4,\n    y: -0.4,\n    m: 0.968437,\n    yint: 0.003331\n  },\n  tritanope: {\n    x: 0.1748,\n    y: 0.0,\n    m: 0.062921,\n    yint: 0.292119\n  }\n};\n\nfunction euclidean(lab1, lab2) {\n  return Math.sqrt(\n    Math.pow(lab1[0] - lab2[0], 2) +\n    Math.pow(lab1[1] - lab2[1], 2) +\n    Math.pow(lab1[2] - lab2[2], 2)\n  );\n}\n\nfunction cmc(l, c, lab1, lab2) {\n  var L1 = lab1[0];\n  var L2 = lab2[0];\n  var a1 = lab1[1];\n  var a2 = lab2[1];\n  var b1 = lab1[2];\n  var b2 = lab2[2];\n  var C1 = Math.sqrt(Math.pow(a1, 2) + Math.pow(b1, 2));\n  var C2 = Math.sqrt(Math.pow(a2, 2) + Math.pow(b2, 2));\n  var deltaC = C1 - C2;\n  var deltaL = L1 - L2;\n  var deltaa = a1 - a2;\n  var deltab = b1 - b2;\n  var deltaH = Math.sqrt(\n    Math.pow(deltaa, 2) + Math.pow(deltab, 2) + Math.pow(deltaC, 2)\n  );\n  var H1 = Math.atan2(b1, a1) * (180 / Math.PI);\n  while (H1 < 0) {\n    H1 += 360;\n  }\n  var F = Math.sqrt(Math.pow(C1, 4) / (Math.pow(C1, 4) + 1900));\n  var T =\n    H1 >= 164 && H1 <= 345\n      ? 0.56 + Math.abs(0.2 * Math.cos(H1 + 168))\n      : 0.36 + Math.abs(0.4 * Math.cos(H1 + 35));\n  var S_L = lab1[0] < 16 ? 0.511 : (0.040975 * L1) / (1 + 0.01765 * L1);\n  var S_C = (0.0638 * C1) / (1 + 0.0131 * C1) + 0.638;\n  var S_H = S_C * (F * T + 1 - F);\n  var result = Math.sqrt(\n    Math.pow(deltaL / (l * S_L), 2) +\n      Math.pow(deltaC / (c * S_C), 2) +\n      Math.pow(deltaH / S_H, 2)\n  );\n  return result;\n}\n\nfunction CachedDistances() {\n  this.cache = {};\n}\n\nCachedDistances.prototype.simulate = function(lab, type, amount) {\n  amount = amount || 1;\n\n  // Cache\n  var key = lab.join('-') + '-' + type + '-' + amount;\n  var cache = this.cache[key];\n  if (cache)\n    return cache;\n\n  // Get data from type\n  var confuseX = CONFUSION_LINES[type].x;\n  var confuseY = CONFUSION_LINES[type].y;\n  var confuseM = CONFUSION_LINES[type].m;\n  var confuseYint = CONFUSION_LINES[type].yint;\n\n  // Code adapted from http://galacticmilk.com/labs/Color-Vision/Javascript/Color.Vision.Simulate.js\n  var color = helpers.labToRgb(lab);\n\n  var sr = color[0];\n  var sg = color[1];\n  var sb = color[2];\n  var dr = sr; // destination color\n  var dg = sg;\n  var db = sb;\n  // Convert source color into XYZ color space\n  var powR = Math.pow(sr, 2.2);\n  var powG = Math.pow(sg, 2.2);\n  var powB = Math.pow(sb, 2.2);\n  var X = powR * 0.412424 + powG * 0.357579 + powB * 0.180464; // RGB->XYZ (sRGB:D65)\n  var Y = powR * 0.212656 + powG * 0.715158 + powB * 0.0721856;\n  var Z = powR * 0.0193324 + powG * 0.119193 + powB * 0.950444;\n  // Convert XYZ into xyY Chromacity Coordinates (xy) and Luminance (Y)\n  var chromaX = X / (X + Y + Z);\n  var chromaY = Y / (X + Y + Z);\n  // Generate the \"Confusion Line\" between the source color and the Confusion Point\n  var m = (chromaY - confuseY) / (chromaX - confuseX); // slope of Confusion Line\n  var yint = chromaY - chromaX * m; // y-intercept of confusion line (x-intercept = 0.0)\n  // How far the xy coords deviate from the simulation\n  var deviateX = (confuseYint - yint) / (m - confuseM);\n  var deviateY = m * deviateX + yint;\n  // Compute the simulated color's XYZ coords\n  X = (deviateX * Y) / deviateY;\n  Z = ((1.0 - (deviateX + deviateY)) * Y) / deviateY;\n  // Neutral grey calculated from luminance (in D65)\n  var neutralX = (0.312713 * Y) / 0.329016;\n  var neutralZ = (0.358271 * Y) / 0.329016;\n  // Difference between simulated color and neutral grey\n  var diffX = neutralX - X;\n  var diffZ = neutralZ - Z;\n  var diffR = diffX * 3.24071 + diffZ * -0.498571; // XYZ->RGB (sRGB:D65)\n  var diffG = diffX * -0.969258 + diffZ * 0.0415557;\n  var diffB = diffX * 0.0556352 + diffZ * 1.05707;\n  // Convert to RGB color space\n  dr = X * 3.24071 + Y * -1.53726 + Z * -0.498571; // XYZ->RGB (sRGB:D65)\n  dg = X * -0.969258 + Y * 1.87599 + Z * 0.0415557;\n  db = X * 0.0556352 + Y * -0.203996 + Z * 1.05707;\n  // Compensate simulated color towards a neutral fit in RGB space\n  var fitR = ((dr < 0.0 ? 0.0 : 1.0) - dr) / diffR;\n  var fitG = ((dg < 0.0 ? 0.0 : 1.0) - dg) / diffG;\n  var fitB = ((db < 0.0 ? 0.0 : 1.0) - db) / diffB;\n  var adjust = Math.max(\n    // highest value\n    fitR > 1.0 || fitR < 0.0 ? 0.0 : fitR,\n    fitG > 1.0 || fitG < 0.0 ? 0.0 : fitG,\n    fitB > 1.0 || fitB < 0.0 ? 0.0 : fitB\n  );\n  // Shift proportional to the greatest shift\n  dr = dr + adjust * diffR;\n  dg = dg + adjust * diffG;\n  db = db + adjust * diffB;\n  // Apply gamma correction\n  dr = Math.pow(dr, 1.0 / 2.2);\n  dg = Math.pow(dg, 1.0 / 2.2);\n  db = Math.pow(db, 1.0 / 2.2);\n  // Anomylize colors\n  dr = sr * (1.0 - amount) + dr * amount;\n  dg = sg * (1.0 - amount) + dg * amount;\n  db = sb * (1.0 - amount) + db * amount;\n  var dcolor = [dr, dg, db];\n  var result = helpers.rgbToLab(dcolor);\n  this.cache[key] = result;\n\n  return result;\n};\n\nCachedDistances.prototype.euclidean = euclidean;\nCachedDistances.prototype.cmc = cmc.bind(null, 2, 1);\n\nCachedDistances.prototype.colorblind = function(type, lab1, lab2) {\n  lab1 = this.simulate(lab1, type);\n  lab2 = this.simulate(lab2, type);\n\n  return this.cmc(lab1, lab2);\n};\n\nObject.keys(CONFUSION_LINES).forEach(function(type) {\n  CachedDistances.prototype[type] = function(lab1, lab2) {\n    return this.colorblind(type, lab1, lab2);\n  };\n});\n\nvar COMPROMISE_COUNT = 1000 + 100 + 500 + 1;\n\nCachedDistances.prototype.compromise = function(lab1, lab2) {\n  var total = 0;\n\n  var d = this.cmc(lab1, lab2);\n  total += d * 1000;\n\n  d = this.colorblind('protanope', lab1, lab2);\n  if (!isNaN(d))\n    total += d * 100;\n\n  d = this.colorblind('deuteranope', lab1, lab2);\n  if (!isNaN(d))\n    total += d * 500;\n\n  d = this.colorblind('tritanope', lab1, lab2);\n  if (!isNaN(d))\n    total += d * 1;\n\n  return total / COMPROMISE_COUNT;\n};\n\nCachedDistances.prototype.get = function(name) {\n  if (name in CONFUSION_LINES)\n    return this.colorblind.bind(this, name);\n\n  return this[name].bind(this);\n};\n\nmodule.exports = CachedDistances;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/iwanthue/distances.js?");
  
  /***/ }),
  
  /***/ "./node_modules/iwanthue/helpers.js":
  /*!******************************************!*\
    !*** ./node_modules/iwanthue/helpers.js ***!
    \******************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("/**\n * Iwanthue Library Helpers\n * =========================\n *\n * Collection of color-related helpers used throughout the library.\n */\nvar LAB_CONSTANTS = {\n  // Corresponds roughly to RGB brighter/darker\n  Kn: 18,\n\n  // D65 standard referent\n  Xn: 0.95047,\n  Yn: 1,\n  Zn: 1.08883,\n\n  t0: 0.137931034, // 4 / 29\n  t1: 0.206896552, // 6 / 29\n  t2: 0.12841855, // 3 * t1 * t1\n  t3: 0.008856452 // t1 * t1 * t1\n};\n\nfunction xyzToRgb(r) {\n  return Math.round(\n    255 *\n    (r <= 0.00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - 0.055)\n  );\n}\n\nfunction rgbToXyzHelper(r) {\n  if ((r /= 255) <= 0.04045)\n    return r / 12.92;\n\n  return Math.pow((r + 0.055) / 1.055, 2.4);\n}\n\nfunction xyzToLab(t) {\n  if (t > LAB_CONSTANTS.t3)\n    return Math.pow(t, 1 / 3);\n\n    return t / LAB_CONSTANTS.t2 + LAB_CONSTANTS.t0;\n}\n\nfunction rgbToXyz(rgb) {\n  var r = rgb[0],\n      g = rgb[1],\n      b = rgb[2];\n\n  r = rgbToXyzHelper(r);\n  g = rgbToXyzHelper(g);\n  b = rgbToXyzHelper(b);\n\n  var x = xyzToLab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS.Xn),\n      y = xyzToLab((0.2126729 * r + 0.7151522 * g + 0.0721750 * b) / LAB_CONSTANTS.Yn),\n      z = xyzToLab((0.0193339 * r + 0.1191920 * g + 0.9503041 * b) / LAB_CONSTANTS.Zn);\n\n  return [x, y, z];\n}\n\nfunction labToXyz(t) {\n  return t > LAB_CONSTANTS.t1 ?\n    t * t * t :\n    LAB_CONSTANTS.t2 * (t - LAB_CONSTANTS.t0);\n}\n\nfunction labToRgb(lab) {\n  var l = lab[0];\n  var a = lab[1];\n  var b = lab[2];\n\n  var y = (l + 16) / 116;\n  var x = isNaN(a) ? y : y + a / 500;\n  var z = isNaN(b) ? y : y - b / 200;\n\n  y = LAB_CONSTANTS.Yn * labToXyz(y);\n  x = LAB_CONSTANTS.Xn * labToXyz(x);\n  z = LAB_CONSTANTS.Zn * labToXyz(z);\n\n  var r = xyzToRgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); // D65 -> sRGB\n  var g = xyzToRgb(-0.969266 * x + 1.8760108 * y + 0.041556 * z);\n  b = xyzToRgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z);\n\n  // r, g or b can be -0, beware...\n  return [r, g, b];\n}\n\nfunction rgbToLab(rgb) {\n  var xyz = rgbToXyz(rgb);\n\n  var x = xyz[0],\n      y = xyz[1],\n      z = xyz[2];\n\n  var l = 116 * y - 16;\n\n  return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)];\n}\n\nfunction validateRgb(rgb) {\n  var r = rgb[0];\n  var g = rgb[1];\n  var b = rgb[2];\n\n  return r >= 0 && r <= 255 && g >= 0 && g <= 255 && b >= 0 && b <= 255;\n}\n\nfunction hexPad(x) {\n  return ('0' + x.toString(16)).slice(-2);\n}\n\nfunction labToRgbHex(lab) {\n  var rgb = labToRgb(lab);\n\n  return (\n    '#' +\n    hexPad(rgb[0]) +\n    hexPad(rgb[1]) +\n    hexPad(rgb[2])\n  );\n}\n\nvar RAD_TO_DEG = 180 / Math.PI;\n\nfunction labToHcl(lab) {\n  var l = lab[0];\n  var a = lab[1];\n  var b = lab[2];\n\n  var c = Math.sqrt(a * a + b * b);\n  var h = (Math.atan2(b, a) * RAD_TO_DEG + 360) % 360;\n\n  if (Math.round(c * 10000) === 0)\n    h = NaN;\n\n  return [h, c, l];\n}\n\nfunction diffSort(distance, colors) {\n  colors = colors.slice();\n\n  var diffColors = [colors.shift()];\n\n  var index, maxDistance, candidateIndex;\n\n  var A, B, d, i;\n\n  while (colors.length > 0) {\n    index = -1;\n    maxDistance = -Infinity;\n\n    for (candidateIndex = 0; candidateIndex < colors.length; candidateIndex++) {\n      A = colors[candidateIndex];\n\n      for (i = 0; i < diffColors.length; i++) {\n        B = diffColors[i];\n        d = distance(A, B);\n\n        if (d > maxDistance) {\n          maxDistance = d;\n          index = candidateIndex;\n        }\n      }\n    }\n\n    diffColors.push(colors[index]);\n    colors.splice(index, 1);\n  }\n\n  return diffColors;\n}\n\nexports.validateRgb = validateRgb;\nexports.labToRgb = labToRgb;\nexports.labToRgbHex = labToRgbHex;\nexports.rgbToLab = rgbToLab;\nexports.labToHcl = labToHcl;\nexports.diffSort = diffSort;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/iwanthue/helpers.js?");
  
  /***/ }),
  
  /***/ "./node_modules/iwanthue/index.js":
  /*!****************************************!*\
    !*** ./node_modules/iwanthue/index.js ***!
    \****************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("/**\n * Iwanthue Library Endpoint\n * ==========================\n *\n * Exporting the main utilities of the library.\n */\nvar Random = __webpack_require__(/*! ./rng.js */ \"./node_modules/iwanthue/rng.js\");\nvar CachedDistances = __webpack_require__(/*! ./distances.js */ \"./node_modules/iwanthue/distances.js\");\nvar helpers = __webpack_require__(/*! ./helpers.js */ \"./node_modules/iwanthue/helpers.js\");\nvar presets = __webpack_require__(/*! ./presets.js */ \"./node_modules/iwanthue/presets.js\");\n\nvar validateRgb = helpers.validateRgb;\nvar labToRgb = helpers.labToRgb;\nvar labToRgbHex = helpers.labToRgbHex;\nvar labToHcl = helpers.labToHcl;\nvar diffSort = helpers.diffSort;\n\n/**\n * Constants.\n */\nvar DEFAULT_SETTINGS = {\n  colorFilter: null,\n  colorSpace: 'default',\n  clustering: 'k-means',\n  quality: 50,\n  ultraPrecision: false,\n  distance: 'euclidean',\n  seed: null\n};\n\nvar VALID_CLUSTERINGS = new Set(['force-vector', 'k-means']);\n\nvar VALID_DISTANCES = new Set([\n  'euclidean',\n  'cmc',\n  'compromise',\n  'protanope',\n  'deuteranope',\n  'tritanope'\n]);\n\nvar VALID_PRESETS = new Set(Object.keys(presets));\n\n/**\n * Helpers.\n */\nfunction stringSum(string) {\n  var sum = 0;\n\n  for (var i = 0, l = string.length; i < l; i++)\n    sum += string.charCodeAt(i);\n\n  return sum;\n}\n\nfunction resolveAndValidateSettings(userSettings) {\n  var settings = Object.assign({}, DEFAULT_SETTINGS, userSettings);\n\n  if (settings.colorFilter && typeof settings.colorFilter !== 'function')\n    throw new Error('iwanthue: invalid `colorFilter` setting. Expecting a function.');\n\n  if (!VALID_CLUSTERINGS.has(settings.clustering))\n    throw new Error('iwanthue: unknown `clustering` \"' + settings.clustering + '\".');\n\n  if (typeof settings.quality !== 'number' || isNaN(settings.quality) || settings.quality < 1)\n    throw new Error('iwanthue: invalid `quality`. Expecting a number > 0.');\n\n  if (typeof settings.ultraPrecision !== 'boolean')\n    throw new Error('iwanthue: invalid `ultraPrecision`. Expecting a boolean.');\n\n  if (!VALID_DISTANCES.has(settings.distance))\n    throw new Error('iwanthue: unknown `distance` \"' + settings.distance + '\".');\n\n  if (typeof settings.seed === 'string')\n    settings.seed = stringSum(settings.seed);\n\n  if (settings.seed !== null && typeof settings.seed !== 'number')\n    throw new Error('iwanthue: invalid `seed`. Expecting an integer or a string.');\n\n  // Building color filter from preset?\n  if (!settings.colorFilter) {\n    if (\n      settings.colorSpace &&\n      settings.colorSpace !== 'all'\n    ) {\n\n      var preset;\n\n      if (typeof settings.colorSpace === 'string') {\n        if (!VALID_PRESETS.has(settings.colorSpace))\n          throw new Error('iwanthue: unknown `colorSpace` \"' + settings.colorSpace + '\".');\n\n        preset = presets[settings.colorSpace];\n      }\n      else if (Array.isArray(settings.colorSpace)) {\n\n        if (settings.colorSpace.length !== 6)\n          throw new Error('iwanthue: expecting a `colorSpace` array of length 6 ([hmin, hmax, cmin, cmax, lmin, lmax]).');\n\n        preset = settings.colorSpace;\n      }\n      else {\n        preset = [\n          settings.colorSpace.hmin || 0,\n          settings.colorSpace.hmax || 360,\n          settings.colorSpace.cmin || 0,\n          settings.colorSpace.cmax || 100,\n          settings.colorSpace.lmin || 0,\n          settings.colorSpace.lmax || 100\n        ];\n      }\n\n      if (preset[0] < preset[1])\n        settings.colorFilter = function(rgb, lab) {\n          var hcl = labToHcl(lab);\n\n          return (\n            hcl[0] >= preset[0] && hcl[0] <= preset[1] &&\n            hcl[1] >= preset[2] && hcl[1] <= preset[3] &&\n            hcl[2] >= preset[4] && hcl[2] <= preset[5]\n          );\n        };\n      else\n      settings.colorFilter = function(rgb, lab) {\n        var hcl = labToHcl(lab);\n\n        return (\n          (hcl[0] >= preset[0] || hcl[0] <= preset[1]) &&\n          hcl[1] >= preset[2] && hcl[1] <= preset[3] &&\n          hcl[2] >= preset[4] && hcl[2] <= preset[5]\n        );\n      };\n    }\n  }\n\n  return settings;\n}\n\n// NOTE: this function has complexity O(∞).\nfunction sampleLabColors(rng, count, validColor) {\n  var colors = new Array(count),\n      lab,\n      rgb;\n\n  for (var i = 0; i < count; i++) {\n\n    do {\n      lab = [\n        100 * rng(),\n        100 * (2 * rng() - 1),\n        100 * (2 * rng() - 1)\n      ];\n\n      rgb = labToRgb(lab);\n\n    } while (!validColor(rgb, lab));\n\n    colors[i] = lab;\n  }\n\n  return colors;\n}\n\nvar REPULSION = 100;\nvar SPEED = 100;\n\nfunction forceVector(rng, distance, validColor, colors, settings) {\n  var vectors = new Array(colors.length);\n  var steps = settings.quality * 20;\n\n  var i, j, l = colors.length;\n\n  var A, B;\n\n  var d, dl, da, db, force, candidateLab, color, ratio, displacement, rgb;\n\n  while (steps-- > 0) {\n\n    // Initializing vectors\n    for (i = 0; i < l; i++)\n      vectors[i] = {dl: 0, da: 0, db: 0};\n\n    // Computing force\n    for (i = 0; i < l; i++) {\n      A = colors[i];\n\n      for (j = 0; j < i; j++) {\n        B = colors[j];\n\n        // Repulsion\n        d = distance(A, B);\n\n        if (d > 0) {\n          dl = A[0] - B[0];\n          da = A[1] - B[1];\n          db = A[2] - B[2];\n\n          force = REPULSION / Math.pow(d, 2);\n\n          vectors[i].dl += (dl * force) / d;\n          vectors[i].da += (da * force) / d;\n          vectors[i].db += (db * force) / d;\n\n          vectors[j].dl -= (dl * force) / d;\n          vectors[j].da -= (da * force) / d;\n          vectors[j].db -= (db * force) / d;\n        }\n        else {\n\n          // Jitter\n          vectors[j].dl += 2 - 4 * rng();\n          vectors[j].da += 2 - 4 * rng();\n          vectors[j].db += 2 - 4 * rng();\n        }\n      }\n    }\n\n    // Applying force\n    for (i = 0; i < l; i++) {\n      color = colors[i];\n      displacement = SPEED * Math.sqrt(\n        Math.pow(vectors[i].dl, 2) +\n        Math.pow(vectors[i].da, 2) +\n        Math.pow(vectors[i].db, 2)\n      );\n\n      if (displacement > 0) {\n        ratio = (SPEED * Math.min(0.1, displacement)) / displacement;\n        candidateLab = [\n          color[0] + vectors[i].dl * ratio,\n          color[1] + vectors[i].da * ratio,\n          color[2] + vectors[i].db * ratio\n        ];\n\n        rgb = labToRgb(candidateLab);\n\n        if (validColor(rgb, candidateLab))\n          colors[i] = candidateLab;\n      }\n    }\n  }\n}\n\nfunction kMeans(distance, validColor, colors, settings) {\n  var colorSamples = [];\n  var samplesClosest = [];\n\n  var l, a, b;\n\n  var lab, rgb;\n\n  var linc = 5,\n      ainc = 10,\n      binc = 10;\n\n  if (settings.ultraPrecision) {\n    linc = 1;\n    ainc = 5;\n    binc = 5;\n  }\n\n  for (l = 0; l <= 100; l += linc) {\n    for (a = -100; a <= 100; a += ainc) {\n      for (b = -100; b <= 100; b += binc) {\n        lab = [l, a, b];\n        rgb = labToRgb(lab);\n\n        if (!validColor(rgb, lab))\n          continue;\n\n        colorSamples.push(lab);\n        samplesClosest.push(null);\n      }\n    }\n  }\n\n  // Steps\n  var steps = settings.quality;\n\n  var i, j;\n\n  var A, B;\n\n  var li = colorSamples.length,\n      lj = colors.length;\n\n\n  var d, minDistance, freeColorSamples, count, candidate, closest;\n\n  while (steps-- > 0) {\n\n    // Finding closest color\n    for (i = 0; i < li; i++) {\n      B = colorSamples[i];\n      minDistance = Infinity;\n\n      for (j = 0; j < lj; j++) {\n        A = colors[j];\n\n        d = distance(A, B);\n\n        if (d < minDistance) {\n          minDistance = d;\n          samplesClosest[i] = j;\n        }\n      }\n    }\n\n    freeColorSamples = colorSamples.slice();\n\n    for (j = 0; j < lj; j++) {\n      count = 0;\n      candidate = [0, 0, 0];\n\n      for (i = 0; i < li; i++) {\n        if (samplesClosest[i] === j) {\n          count++;\n          candidate[0] += colorSamples[i][0];\n          candidate[1] += colorSamples[i][1];\n          candidate[2] += colorSamples[i][2];\n        }\n      }\n\n      if (count !== 0) {\n        candidate[0] /= count;\n        candidate[1] /= count;\n        candidate[2] /= count;\n\n        rgb = labToRgb(candidate);\n\n        if (validColor(rgb, candidate)) {\n          colors[j] = candidate;\n        }\n        else {\n          // The candidate is out of the boundaries of our color space or unfound\n\n          if (freeColorSamples.length > 0) {\n\n            // We just search for the closest free color\n            minDistance = Infinity;\n            closest = -1;\n\n            for (i = 0; i < freeColorSamples.length; i++) {\n              d = distance(freeColorSamples[i], candidate);\n\n              if (d < minDistance) {\n                minDistance = d;\n                closest = i;\n              }\n            }\n\n            colors[j] = colorSamples[closest];\n          }\n          else {\n\n            // Then we just search for the closest color\n            minDistance = Infinity;\n            closest = -1;\n\n            for (i = 0; i < colorSamples.length; i++) {\n              d = distance(colorSamples[i], candidate);\n\n              if (d < minDistance) {\n                minDistance = d;\n                closest = i;\n              }\n            }\n\n            colors[j] = colorSamples[closest];\n          }\n\n          // Cleaning up free samples\n          /* eslint-disable */\n          freeColorSamples = freeColorSamples.filter(function(color) {\n            return (\n              color[0] !== colors[j][0] ||\n              color[1] !== colors[j][1] ||\n              color[2] !== colors[j][2]\n            )\n          });\n          /* eslint-enable */\n        }\n      }\n    }\n  }\n\n  return colors;\n}\n\n/**\n * Function generating a iwanthue palette.\n *\n * @param  {number}   count            - Number of colors in the palette.\n * @param  {object}   settings         - Optional settings:\n * @param  {function}   colorFilter      - Function filtering unwanted colors.\n * @param  {string}     clustering       - Clustering method to use. Either 'force-vector' or 'k-means'.\n * @param  {number}     quality          - Quality of the clustering, i.e. number of steps/iterations.\n * @param  {boolean}    ultraPrecision   - Whether to use ultra precision or not.\n * @param  {string}     distance         - Name of the color distance function to use. Defaults to 'colorblind'.\n * @param  {number}     seed             - Seed for random number generation.\n * @return {Array}                     - The computed palette as an array of hexadecimal colors.\n */\nmodule.exports = function generatePalette(count, settings) {\n  if (typeof count !== 'number' || count < 2)\n    throw new Error('iwanthue: expecting a color count > 2.');\n\n  settings = resolveAndValidateSettings(settings);\n\n  var random = new Random(settings.seed);\n\n  var rng = function() {\n    return random.nextFloat();\n  };\n\n  var distances = new CachedDistances();\n  var distance = distances.get(settings.distance);\n\n  var validColor = function(rgb, lab) {\n    // if (arguments.length < 2)\n    //   throw new Error('validColor takes both rgb and lab!');\n\n    if (!validateRgb(rgb))\n      return false;\n\n    if (!settings.colorFilter)\n      return true;\n\n    if (!settings.colorFilter(rgb, lab))\n      return false;\n\n    return true;\n  };\n\n  var colors = sampleLabColors(rng, count, validColor);\n\n  if (settings.clustering === 'force-vector')\n    forceVector(rng, distance, validColor, colors, settings);\n  else\n    kMeans(distance, validColor, colors, settings);\n\n  colors = diffSort(distance, colors);\n\n  return colors.map(labToRgbHex);\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/iwanthue/index.js?");
  
  /***/ }),
  
  /***/ "./node_modules/iwanthue/presets.js":
  /*!******************************************!*\
    !*** ./node_modules/iwanthue/presets.js ***!
    \******************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("/**\n * Iwanthue Color Presets\n * =======================\n *\n * Website's collection of color space presets.\n */\n\n// Format is [hmin, hmax, cmin, cmax, lmin, lmax] to save up some space\nvar presets = {\n  'all': [0, 360, 0, 100, 0, 100],\n  'default': [0, 360, 30, 80, 35, 80],\n  'colorblind': [0, 360, 40, 70, 15, 85],\n  'fancy-light': [0, 360, 15, 40, 70, 100],\n  'fancy-dark': [0, 360, 8, 40, 7, 40],\n  'shades': [0, 240, 0, 15, 0, 100],\n  'tarnish': [0, 360, 0, 15, 30, 70],\n  'pastel': [0, 360, 0, 30, 70, 100],\n  'pimp': [0, 360, 30, 100, 25, 70],\n  'intense': [0, 360, 20, 100, 15, 80],\n  'fluo': [0, 300, 35, 100, 75, 100],\n  'red-roses': [330, 20, 10, 100, 35, 100],\n  'ochre-sand': [20, 60, 20, 50, 35, 100],\n  'yellow-lime': [60, 90, 10, 100, 35, 100],\n  'green-mint': [90, 150, 10, 100, 35, 100],\n  'ice-cube': [150, 200, 0, 100, 35, 100],\n  'blue-ocean': [220, 260, 8, 80, 0, 50],\n  'indigo-night': [260, 290, 40, 100, 35, 100],\n  'purple-wine': [290, 330, 0, 100, 0, 40]\n};\n\nmodule.exports = presets;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/iwanthue/presets.js?");
  
  /***/ }),
  
  /***/ "./node_modules/iwanthue/rng.js":
  /*!**************************************!*\
    !*** ./node_modules/iwanthue/rng.js ***!
    \**************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("/**\n * Iwanthue RNG Utilities\n * =======================\n *\n * Simple & fast seedable RNG.\n *\n * [References]:\n * https://gist.github.com/blixt/f17b47c62508be59987b\n * http://www.firstpr.com.au/dsp/rand31/\n *\n */\nfunction randomInteger(a, b) {\n  return a + Math.floor(Math.random() * (b - a + 1));\n}\n\nfunction Random(seed) {\n  if (!seed)\n    seed = randomInteger(0, Math.pow(2, 31) - 1);\n\n  this.seed = seed % 2147483647;\n\n  if (this.seed <= 0)\n    this.seed += 2147483646;\n}\n\nRandom.prototype.next = function() {\n  this.seed = (this.seed * 16807) % 2147483647;\n\n  return this.seed;\n};\n\nRandom.prototype.nextFloat = function() {\n  return (this.next() - 1) / 2147483646;\n};\n\nmodule.exports = Random;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/iwanthue/rng.js?");
  
  /***/ }),
  
  /***/ "./node_modules/json-schema-traverse/index.js":
  /*!****************************************************!*\
    !*** ./node_modules/json-schema-traverse/index.js ***!
    \****************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nvar traverse = module.exports = function (schema, opts, cb) {\n  // Legacy support for v0.3.1 and earlier.\n  if (typeof opts == 'function') {\n    cb = opts;\n    opts = {};\n  }\n\n  cb = opts.cb || cb;\n  var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n  var post = cb.post || function() {};\n\n  _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n  additionalItems: true,\n  items: true,\n  contains: true,\n  additionalProperties: true,\n  propertyNames: true,\n  not: true\n};\n\ntraverse.arrayKeywords = {\n  items: true,\n  allOf: true,\n  anyOf: true,\n  oneOf: true\n};\n\ntraverse.propsKeywords = {\n  definitions: true,\n  properties: true,\n  patternProperties: true,\n  dependencies: true\n};\n\ntraverse.skipKeywords = {\n  default: true,\n  enum: true,\n  const: true,\n  required: true,\n  maximum: true,\n  minimum: true,\n  exclusiveMaximum: true,\n  exclusiveMinimum: true,\n  multipleOf: true,\n  maxLength: true,\n  minLength: true,\n  pattern: true,\n  format: true,\n  maxItems: true,\n  minItems: true,\n  uniqueItems: true,\n  maxProperties: true,\n  minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n  if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n    pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n    for (var key in schema) {\n      var sch = schema[key];\n      if (Array.isArray(sch)) {\n        if (key in traverse.arrayKeywords) {\n          for (var i=0; i<sch.length; i++)\n            _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n        }\n      } else if (key in traverse.propsKeywords) {\n        if (sch && typeof sch == 'object') {\n          for (var prop in sch)\n            _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n        }\n      } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n        _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n      }\n    }\n    post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n  }\n}\n\n\nfunction escapeJsonPtr(str) {\n  return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/json-schema-traverse/index.js?");
  
  /***/ }),
  
  /***/ "./node_modules/mmwr-week/dist/index.js":
  /*!**********************************************!*\
    !*** ./node_modules/mmwr-week/dist/index.js ***!
    \**********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n/**\n * Main module file for mmwr-week\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Doc guard\n */\nvar moment = __webpack_require__(/*! moment */ \"moment\");\nvar moize_1 = __webpack_require__(/*! moize */ \"./node_modules/moize/es/index.js\");\n/**\n * Memoized function for number of MMWR weeks in a year\n */\nvar weeksInYear = moize_1.default(function (year) {\n    var md = new MMWRDate(year, 1);\n    var ed = new MMWRDate(year, 53);\n    ed.fromMomentDate(ed.toMomentDate());\n    return ed.year === md.year ? 53 : 52;\n});\n/**\n * Class representing an MMWR date\n */\nvar MMWRDate = /** @class */ (function () {\n    function MMWRDate(year, week, day) {\n        this.year = year;\n        this.week = week;\n        this.day = day;\n    }\n    Object.defineProperty(MMWRDate.prototype, \"startMomentDate\", {\n        /**\n         * Return year start moment date\n         */\n        get: function () {\n            var janOne = moment(this.year + '0101');\n            var diff = 7 * +(janOne.isoWeekday() > 3) - janOne.isoWeekday();\n            return janOne.add(diff, 'days');\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Return plain JS date representation\n     */\n    MMWRDate.prototype.toJSDate = function () {\n        return this.toMomentDate().toDate();\n    };\n    /**\n     * Set values using given JS date. Defaults to now.\n     */\n    MMWRDate.prototype.fromJSDate = function (date) {\n        if (date === void 0) { date = (new Date()); }\n        this.fromMomentDate(moment(date));\n    };\n    /**\n     * Return a moment representation of the date\n     */\n    MMWRDate.prototype.toMomentDate = function () {\n        var dayOne = this.startMomentDate;\n        var diff = 7 * (this.week - 1);\n        if (this.day) {\n            diff += this.day - 1;\n        }\n        return dayOne.add(diff, 'days');\n    };\n    /**\n     * Set values using given moment date. Defaults to now.\n     */\n    MMWRDate.prototype.fromMomentDate = function (date) {\n        if (date === void 0) { date = moment(); }\n        var year = date.year();\n        var startDates = [year - 1, year, year + 1]\n            .map(function (y) {\n            var md = new MMWRDate(y);\n            return md.startMomentDate;\n        });\n        var diffs = startDates.map(function (d) { return date.diff(d); });\n        var startId = 1;\n        if (diffs[1] < 0)\n            startId = 0;\n        else if (diffs[2] >= 0)\n            startId = 2;\n        var startDate = startDates[startId];\n        this.year = moment(startDate).add(7, 'days').year();\n        this.week = Math.floor(date.diff(startDate, 'days') / 7) + 1;\n        this.day = (date.isoWeekday() % 7) + 1;\n    };\n    /**\n     * Return date in epiweek format\n     */\n    MMWRDate.prototype.toEpiweek = function () {\n        return this.year * 100 + this.week;\n    };\n    /**\n     * Set values using epiweek\n     */\n    MMWRDate.prototype.fromEpiweek = function (epiweek) {\n        this.year = Math.floor(epiweek / 100);\n        this.week = epiweek % 100;\n        this.day = 1;\n    };\n    Object.defineProperty(MMWRDate.prototype, \"nWeeks\", {\n        /**\n         * Return number of weeks in this MMWR season\n         */\n        get: function () {\n            return weeksInYear(this.year);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Return number of weeks differing from this.\n     * Equivalent of this - mdate\n     */\n    MMWRDate.prototype.diffWeek = function (mdate) {\n        if (this.year === mdate.year) {\n            return this.week - mdate.week;\n        }\n        else {\n            // Order of dates [low, high]\n            var ds = [this, mdate];\n            var sign = -1;\n            if (this.year > mdate.year) {\n                ds = [mdate, this];\n                sign = 1;\n            }\n            var nWeeks = ds[0].nWeeks;\n            var diff = ds[1].week + nWeeks - ds[0].week;\n            var begin = ds[0].year + 1;\n            while (begin < ds[1].year) {\n                diff += nWeeks;\n                begin++;\n            }\n            return sign * diff;\n        }\n    };\n    /**\n     * Apply week delta\n     * Equivalent of this = this + delta\n     */\n    MMWRDate.prototype.applyWeekDiff = function (delta) {\n        var newWeek;\n        while (true) {\n            newWeek = this.week + delta;\n            if (delta > 0) {\n                if (newWeek > this.nWeeks) {\n                    delta = newWeek - this.nWeeks - 1;\n                    this.week = 1;\n                    this.year++;\n                }\n                else {\n                    this.week = newWeek;\n                    break;\n                }\n            }\n            else {\n                if (newWeek <= 0) {\n                    this.year--;\n                    this.week = this.nWeeks;\n                    delta = newWeek;\n                }\n                else {\n                    this.week = newWeek;\n                    break;\n                }\n            }\n        }\n    };\n    return MMWRDate;\n}());\nexports.MMWRDate = MMWRDate;\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://d3Foresight/./node_modules/mmwr-week/dist/index.js?");
  
  /***/ }),
  
  /***/ "./node_modules/moize/es/Cache.js":
  /*!****************************************!*\
    !*** ./node_modules/moize/es/Cache.js ***!
    \****************************************/
  /*! exports provided: default */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./node_modules/moize/es/utils.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// utils\n\n\n/**\n * @private\n *\n * @class Cache\n *\n * @classdesc\n * class that is similar to the Map infrastructure, but faster and\n * more targeted to moize use cases\n */\n\n\n// types\n\nvar Cache = function () {\n  function Cache(options) {\n    _classCallCheck(this, Cache);\n\n    this.expirations = [];\n    this.lastItem = {};\n    this.list = [];\n    this.size = 0;\n\n    this.options = options;\n  }\n\n  /**\n   * @function add\n   * @memberof Cache\n   * @instance\n   *\n   * @description\n   * add a new item to cache\n   *\n   * @param {*} key the key to assign\n   * @param {*} value the value to assign at key\n   */\n  Cache.prototype.add = function add(key, value) {\n    this.lastItem = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"unshift\"])(this.list, {\n      key: key,\n      value: value\n    });\n\n    this.size++;\n  };\n\n  /**\n   * @function clear\n   * @memberof Cache\n   * @instance\n   *\n   * @description\n   * clear the cache of all items\n   */\n\n\n  Cache.prototype.clear = function clear() {\n    this.lastItem = {};\n    this.list.length = this.size = 0;\n  };\n\n  /**\n   * @function expireAfter\n   * @memberof Cache\n   * @instance\n   *\n   * @description\n   * remove from cache after maxAge time has passed\n   *\n   * @param {*} key the key to remove\n   */\n\n\n  Cache.prototype.expireAfter = function expireAfter(key) {\n    var _this = this;\n\n    var _options = this.options,\n        maxAge = _options.maxAge,\n        onExpire = _options.onExpire;\n\n\n    var timeoutId = setTimeout(function () {\n      var index = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"findIndex\"])(_this.list, key);\n\n      if (~index) {\n        var value = _this.list[index];\n\n        _this.remove(key);\n        _this.expirations.splice(Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"findIndex\"])(_this.expirations, key), 1);\n\n        // $FlowIgnore onExpire will only fire if it is a function\n        if (Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"isFunction\"])(onExpire) && onExpire(key.key) === false) {\n          _this.add(key, value);\n\n          return _this.expireAfter(key);\n        }\n      }\n    }, maxAge);\n\n    var indexOfKey = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"findIndex\"])(this.expirations, key);\n\n    if (~indexOfKey) {\n      clearTimeout(this.expirations[indexOfKey].timeoutId);\n      this.expirations[indexOfKey].timeoutId = timeoutId;\n    } else {\n      this.expirations.push({ key: key, timeoutId: timeoutId });\n    }\n  };\n\n  /**\n   * @function get\n   * @memberof Cache\n   * @instance\n   *\n   * @description\n   * get the value of an item from cache if it exists\n   *\n   * @param {*} key the key to get the value of\n   * @returns {*} the value at key\n   */\n\n\n  Cache.prototype.get = function get(key) {\n    if (this.size) {\n      if (key === this.lastItem.key) {\n        if (this.options.updateExpire) {\n          this.expireAfter(key);\n        }\n\n        return this.lastItem.value;\n      }\n\n      var index = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"findIndexAfterFirst\"])(this.list, key);\n\n      if (~index) {\n        if (this.options.updateExpire) {\n          this.expireAfter(key);\n        }\n\n        this.lastItem = this.list[index];\n\n        return Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"unshift\"])(Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"splice\"])(this.list, index), this.lastItem).value;\n      }\n    }\n  };\n\n  /**\n   * @private\n   *\n   * @function has\n   *\n   * @description\n   * does the key exist in the cache\n   *\n   * @param {*} key the key to find in cache\n   * @returns {boolean} does the key exist in cache\n   */\n\n\n  Cache.prototype.has = function has(key) {\n    return this.size !== 0 && (key === this.lastItem.key || !!~Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"findIndexAfterFirst\"])(this.list, key));\n  };\n\n  /**=\n   * @function remove\n   * @memberof Cache\n   * @instance\n   *\n   * @description\n   * remove the item at key from cach\n   *\n   * @param {*} key the key to remove from cache\n   * @returns {void}\n   */\n\n\n  Cache.prototype.remove = function remove(key) {\n    var index = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"findIndex\"])(this.list, key);\n\n    if (~index) {\n      Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"splice\"])(this.list, index);\n\n      if (this.size === 1) {\n        return this.clear();\n      }\n\n      this.size--;\n\n      if (!index) {\n        this.lastItem = this.list[0];\n      }\n    }\n  };\n\n  /**\n   * @function update\n   * @memberof Cache\n   * @instance\n   *\n   * @description\n   * update an item in-place with a new value\n   *\n   * @param {*} key key to update value of\n   * @param {*} value value to store in the map at key\n   */\n\n\n  Cache.prototype.update = function update(key, value) {\n    var index = Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"findIndex\"])(this.list, key);\n\n    if (~index) {\n      this.list[index].value = value;\n\n      if (this.lastItem && key === this.lastItem.key) {\n        this.lastItem.value = value;\n      }\n    }\n  };\n\n  return Cache;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Cache);\n\n//# sourceURL=webpack://d3Foresight/./node_modules/moize/es/Cache.js?");
  
  /***/ }),
  
  /***/ "./node_modules/moize/es/ReactCacheKey.js":
  /*!************************************************!*\
    !*** ./node_modules/moize/es/ReactCacheKey.js ***!
    \************************************************/
  /*! exports provided: default */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./node_modules/moize/es/utils.js\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// utils\n\n\n/**\n * @private\n *\n * @class ReactCacheKey\n *\n * @classdesc\n * cache key used specifically for react components\n */\n\nvar ReactCacheKey = function () {\n  function ReactCacheKey(key) {\n    _classCallCheck(this, ReactCacheKey);\n\n    this.key = {\n      context: this._getKeyPart(key[1]),\n      props: this._getKeyPart(key[0])\n    };\n\n    return this;\n  }\n\n  /**\n   * @function _getKeyPart\n   * @memberof ReactCacheKey\n   * @instance\n   *\n   * @description\n   * get the object of metadata for the key part\n   *\n   * @param {Object} keyPart the key part to get the metadata of\n   * @returns {Object} the metadata for the key part\n   */\n  ReactCacheKey.prototype._getKeyPart = function _getKeyPart(keyPart) {\n    var keys = keyPart ? Object.keys(keyPart) : [];\n\n    return {\n      keys: keys,\n      size: keys.length,\n      value: keyPart\n    };\n  };\n\n  /**\n   * @function _isPropShallowEqual\n   * @memberof ReactCacheKey\n   * @instance\n   *\n   * @description\n   * check if the prop value passed is equal to the key's value\n   *\n   * @param {Object} object the new key to test against the instance\n   * @param {Object} existing the key object stored in the instance\n   * @param {Array<string>} existing.keys the keys of the existing object\n   * @param {number} existing.size the length of the keys array\n   * @param {Object} value the value of the key part\n   * @returns {boolean} is the prop value shallow equal to the object\n   */\n\n\n  ReactCacheKey.prototype._isPropShallowEqual = function _isPropShallowEqual(object, existing) {\n    if (Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"getKeyCount\"])(object) !== existing.size) {\n      return false;\n    }\n\n    var index = 0,\n        key = void 0;\n\n    while (index < existing.size) {\n      key = existing.keys[index];\n\n      if (object[key] !== existing.value[key]) {\n        return false;\n      }\n\n      index++;\n    }\n\n    return true;\n  };\n\n  /**\n   * @function _isPropCustomEqual\n   * @memberof ReactCacheKey\n   * @instance\n   *\n   * @description\n   * check if the prop value passed is equal to the key's value\n   *\n   * @param {Object} object the new key to test against the instance\n   * @param {Object} existingObject the key stored in the instance\n   * @param {function} isEqual custom equality comparator\n   * @returns {boolean} are the objects equal based on the isEqual method passed\n   */\n\n\n  ReactCacheKey.prototype._isPropCustomEqual = function _isPropCustomEqual(object, existingObject, isEqual) {\n    return isEqual(object, existingObject);\n  };\n\n  /**\n   * @function matches\n   * @memberof ReactCacheKey\n   * @instance\n   *\n   * @description\n   * does the passed key match the key in the instance\n   *\n   * @param {Array<*>} key the key to test\n   * @returns {boolean} does the key passed match that in the instance\n   */\n\n\n  ReactCacheKey.prototype.matches = function matches(key) {\n    return this._isPropShallowEqual(key[0], this.key.props) && this._isPropShallowEqual(key[1], this.key.context);\n  };\n\n  /**\n   * @function matchesCustom\n   * @memberof ReactCacheKey\n   * @instance\n   *\n   * @description\n   * does the passed key match the key in the instance\n   *\n   * @param {Array<*>} key the key to test\n   * @param {function} isEqual method to check equality of keys\n   * @returns {boolean} does the key passed match that in the instance\n   */\n\n\n  ReactCacheKey.prototype.matchesCustom = function matchesCustom(key, isEqual) {\n    return this._isPropCustomEqual(key[0], this.key.props.value, isEqual) && this._isPropCustomEqual(key[1], this.key.context.value, isEqual);\n  };\n\n  return ReactCacheKey;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ReactCacheKey);\n\n//# sourceURL=webpack://d3Foresight/./node_modules/moize/es/ReactCacheKey.js?");
  
  /***/ }),
  
  /***/ "./node_modules/moize/es/SerializedCacheKey.js":
  /*!*****************************************************!*\
    !*** ./node_modules/moize/es/SerializedCacheKey.js ***!
    \*****************************************************/
  /*! exports provided: default */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  eval("__webpack_require__.r(__webpack_exports__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * @private\n *\n * @class SerializedCacheKey\n *\n * @classdesc\n * cache key used when the parameters should be serialized\n */\nvar SerializedCacheKey = function () {\n  function SerializedCacheKey(key) {\n    _classCallCheck(this, SerializedCacheKey);\n\n    this.key = key;\n\n    return this;\n  }\n\n  /**\n   * @function matches\n   * @memberof SerializedCacheKey\n   * @instance\n   *\n   * @description\n   * does the passed key match the key in the instance\n   *W\n   * @param {Array<*>} key the key to test\n   * @returns {boolean} does the key passed match that in the instance\n   */\n  SerializedCacheKey.prototype.matches = function matches(key) {\n    return key === this.key;\n  };\n\n  /**\n   * @function matchesCustom\n   * @memberof SerializedCacheKey\n   * @instance\n   *\n   * @description\n   * does the passed key match the key in the instance based on the custom equality function passed\n   *\n   * @param {Array<*>} key the key to test\n   * @param {function} isEqual method to compare equality of the keys\n   * @returns {boolean} does the key passed match that in the instance\n   */\n\n\n  SerializedCacheKey.prototype.matchesCustom = function matchesCustom(key, isEqual) {\n    return isEqual(key, this.key);\n  };\n\n  return SerializedCacheKey;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SerializedCacheKey);\n\n//# sourceURL=webpack://d3Foresight/./node_modules/moize/es/SerializedCacheKey.js?");
  
  /***/ }),
  
  /***/ "./node_modules/moize/es/StandardCacheKey.js":
  /*!***************************************************!*\
    !*** ./node_modules/moize/es/StandardCacheKey.js ***!
    \***************************************************/
  /*! exports provided: default */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  eval("__webpack_require__.r(__webpack_exports__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * @private\n *\n * @class StandardCacheKey\n *\n * @classdesc\n * cache key used when there is a single standard parameter\n */\nvar StandardCacheKey = function () {\n  function StandardCacheKey(key) {\n    _classCallCheck(this, StandardCacheKey);\n\n    this.key = this._isMultiParamKey(key) ? key : key[0];\n    this.size = key.length;\n\n    return this;\n  }\n\n  /**\n   * @function _isMultiParamKey\n   * @memberof StandardCacheKey\n   * @instance\n   *\n   * @description\n   * is the key passed a multiple-parameter key\n   *\n   * @param {Array<*>} key the key to test\n   * @returns {boolean} is the key a multiple-parameter key\n   */\n  StandardCacheKey.prototype._isMultiParamKey = function _isMultiParamKey(key) {\n    return key.length > 1;\n  };\n\n  /**\n   * @function _matchesMultiple\n   * @memberof StandardCacheKey\n   * @instance\n   *\n   * @description\n   * does the passed key match the key in the instance\n   *\n   * @param {Array<*>} key the key to test\n   * @returns {boolean} does the key passed match that in the instance\n   */\n\n\n  StandardCacheKey.prototype._matchesMultiple = function _matchesMultiple(key) {\n    if (key.length !== this.size) {\n      return false;\n    }\n\n    var index = 0;\n\n    while (index < this.size) {\n      if (key[index] !== this.key[index]) {\n        return false;\n      }\n\n      index++;\n    }\n\n    return true;\n  };\n\n  /**\n   * @function _matchesSingle\n   * @memberof StandardCacheKey\n   * @instance\n   *\n   * @description\n   * does the passed key match the key in the instance\n   *\n   * @param {Array<*>} key the key to test\n   * @returns {boolean} does the key passed match that in the instance\n   */\n\n\n  StandardCacheKey.prototype._matchesSingle = function _matchesSingle(key) {\n    return key[0] === this.key;\n  };\n\n  /**\n   * @function matches\n   * @memberof StandardCacheKey\n   * @instance\n   *\n   * @description\n   * does the passed key match the key in the instance\n   *\n   * @param {Array<*>} key the key to test\n   * @returns {boolean} does the key passed match that in the instance\n   */\n\n\n  StandardCacheKey.prototype.matches = function matches(key) {\n    return this._isMultiParamKey(key) ? this._matchesMultiple(key) : this._matchesSingle(key);\n  };\n\n  /**\n   * @function matchesCustom\n   * @memberof StandardCacheKey\n   * @instance\n   *\n   * @description\n   * does the passed key match the key in the instance based on the custom equality function passed\n   *\n   * @param {Array<*>} key the key to test\n   * @param {function} isEqual method to compare equality of the keys\n   * @returns {boolean} does the key passed match that in the instance\n   */\n\n\n  StandardCacheKey.prototype.matchesCustom = function matchesCustom(key, isEqual) {\n    return isEqual(this._isMultiParamKey(key) ? key : key[0], this.key);\n  };\n\n  return StandardCacheKey;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (StandardCacheKey);\n\n//# sourceURL=webpack://d3Foresight/./node_modules/moize/es/StandardCacheKey.js?");
  
  /***/ }),
  
  /***/ "./node_modules/moize/es/constants.js":
  /*!********************************************!*\
    !*** ./node_modules/moize/es/constants.js ***!
    \********************************************/
  /*! exports provided: FINITE_POSITIVE_INTEGER, FUNCTION_NAME_REGEXP, GOTCHA_OBJECT_CLASSES, INFINITY, INVALID_FIRST_PARAMETER_ERROR, INVALID_PROMISE_LIBRARY_ERROR, NATIVE_PROMISE, DEFAULT_OPTIONS, STATIC_PROPERTIES_TO_PASS */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FINITE_POSITIVE_INTEGER\", function() { return FINITE_POSITIVE_INTEGER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FUNCTION_NAME_REGEXP\", function() { return FUNCTION_NAME_REGEXP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GOTCHA_OBJECT_CLASSES\", function() { return GOTCHA_OBJECT_CLASSES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"INFINITY\", function() { return INFINITY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"INVALID_FIRST_PARAMETER_ERROR\", function() { return INVALID_FIRST_PARAMETER_ERROR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"INVALID_PROMISE_LIBRARY_ERROR\", function() { return INVALID_PROMISE_LIBRARY_ERROR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NATIVE_PROMISE\", function() { return NATIVE_PROMISE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_OPTIONS\", function() { return DEFAULT_OPTIONS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STATIC_PROPERTIES_TO_PASS\", function() { return STATIC_PROPERTIES_TO_PASS; });\nvar FINITE_POSITIVE_INTEGER = /^[1-9]\\d*$/;\n\n/**\n * @private\n *\n * @constant {RegExp} FUNCTION_NAME_REGEXP\n */\nvar FUNCTION_NAME_REGEXP = /^\\s*function\\s+([^\\(\\s]*)\\s*/;\n\n/**\n * @private\n *\n * @constant {Array<Object>} GOTCHA_OBJECT_CLASSES\n */\nvar GOTCHA_OBJECT_CLASSES = [Boolean, Date, Number, RegExp, String];\n\n/**\n * @private\n *\n * @constant {number} INFINITY\n * @default\n */\nvar INFINITY = 1 / 0;\n\n/**\n * @private\n *\n * @constant {string} INVALID_FIRST_PARAMETER_ERROR\n * @default\n */\nvar INVALID_FIRST_PARAMETER_ERROR = 'You must pass either a function or an object of options as the first parameter to moize.';\n\n/**\n * @private\n *\n * @constant {string} INVALID_PROMISE_LIBRARY_ERROR\n * @default\n */\nvar INVALID_PROMISE_LIBRARY_ERROR = 'The promiseLibrary passed must either be a function or an object with the resolve / reject methods.';\n\n/**\n * @private\n *\n * @constant {function|undefined} NATIVE_PROMISE\n */\nvar NATIVE_PROMISE = typeof Promise === 'function' ? Promise : undefined;\n\n/**\n * @private\n *\n * @constant {Object} DEFAULT_OPTIONS\n */\nvar DEFAULT_OPTIONS = {\n  equals: null,\n  isPromise: false,\n  isReact: false,\n  maxAge: INFINITY,\n  maxArgs: INFINITY,\n  maxSize: INFINITY,\n  promiseLibrary: NATIVE_PROMISE,\n  serialize: false,\n  serializeFunctions: false,\n  serializer: null,\n  transformArgs: null,\n  updateExpire: false\n};\n\n/**\n * @private\n *\n * @constant {Array<string>} STATIC_PROPERTIES_TO_PASS\n */\nvar STATIC_PROPERTIES_TO_PASS = ['contextTypes', 'defaultProps', 'propTypes'];\n\n//# sourceURL=webpack://d3Foresight/./node_modules/moize/es/constants.js?");
  
  /***/ }),
  
  /***/ "./node_modules/moize/es/index.js":
  /*!****************************************!*\
    !*** ./node_modules/moize/es/index.js ***!
    \****************************************/
  /*! exports provided: default */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Cache__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Cache */ \"./node_modules/moize/es/Cache.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ \"./node_modules/moize/es/constants.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ \"./node_modules/moize/es/utils.js\");\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n// cache\n\n\n// constants\n\n\n// types\n\n\n// utils\n\n\n/**\n * @module moize\n */\n\n/**\n * @function moize\n *\n * @description\n * store cached values returned from calling method with arguments to avoid reprocessing data from same arguments\n *\n * @example\n * import moize from 'moize';\n *\n * // standard implementation\n * const fn = (foo, bar) => {\n *  return `${foo} ${bar}`;\n * };\n * const memoizedFn = moize(fn);\n *\n * // implementation with options\n * const fn = async (id) => {\n *  return get(`http://foo.com/${id}`);\n * };\n * const memoizedFn = moize(fn, {\n *  isPromise: true,\n *  maxSize: 5\n * });\n *\n * @param {function} functionOrComposableOptions method to memoize\n * @param {Options} [passedOptions={}] options to customize how the caching is handled\n * @param {boolean} [passedOptions.isPromise=false] is the function return expected to be a promise to resolve\n * @param {number} [passedOptions.maxAge=Infinity] the maximum age the value should persist in cache\n * @param {number} [passedOptions.maxArgs=Infinity] the maximum number of arguments to be used in serializing the keys\n * @param {number} [passedOptions.maxSize=Infinity] the maximum size of the cache to retain\n * @param {function} [passedOptions.promiseLibrary=Promise] promise library to use for resolution / rejection\n * @param {function} [passedOptions.serializeFunctions=false] should function parameters be serialized as well\n * @param {function} [passedOptions.serializer] method to serialize arguments with for cache storage\n * @returns {Function} higher-order function which either returns from cache or newly-computed value\n */\nvar moize = function moize(functionOrComposableOptions) {\n  var passedOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (Object(_utils__WEBPACK_IMPORTED_MODULE_2__[\"isPlainObject\"])(functionOrComposableOptions)) {\n    return function (fnOrOptions) {\n      var otherOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      if (Object(_utils__WEBPACK_IMPORTED_MODULE_2__[\"isPlainObject\"])(fnOrOptions)) {\n        return moize(_extends({}, functionOrComposableOptions, fnOrOptions));\n      }\n\n      return moize(fnOrOptions, _extends({}, functionOrComposableOptions, otherOptions));\n    };\n  }\n\n  if (!Object(_utils__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(functionOrComposableOptions)) {\n    throw new TypeError(_constants__WEBPACK_IMPORTED_MODULE_1__[\"INVALID_FIRST_PARAMETER_ERROR\"]);\n  }\n\n  var isComposed = functionOrComposableOptions.isMoized;\n  // $FlowIgnore if the function is already moized, it has an originalFunction property on it\n  var fn = isComposed ? functionOrComposableOptions.originalFunction : functionOrComposableOptions;\n\n  var options = Object(_utils__WEBPACK_IMPORTED_MODULE_2__[\"getDefaultedOptions\"])(isComposed ? _extends({}, functionOrComposableOptions.options, passedOptions) : passedOptions);\n\n  var cache = new _Cache__WEBPACK_IMPORTED_MODULE_0__[\"default\"](options);\n\n  var addPropertiesToFunction = Object(_utils__WEBPACK_IMPORTED_MODULE_2__[\"createAddPropertiesToFunction\"])(cache, fn, options);\n  var getCacheKey = Object(_utils__WEBPACK_IMPORTED_MODULE_2__[\"createGetCacheKey\"])(cache, options);\n  var setNewCachedValue = Object(_utils__WEBPACK_IMPORTED_MODULE_2__[\"createSetNewCachedValue\"])(cache, options);\n\n  return addPropertiesToFunction(function () {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var key = getCacheKey(args);\n\n    return cache.size && cache.has(key) ? cache.get(key) : setNewCachedValue(key, fn.apply(this, args));\n  });\n};\n\n/**\n * @function compose\n *\n * @description\n * method to compose moized methods and return a single moized function\n *\n * @param {...Array<(function)>} functions the functions to compose\n * @returns {function(...Array<*>): *} the composed function\n */\nmoize.compose = _utils__WEBPACK_IMPORTED_MODULE_2__[\"compose\"];\n\n/**\n * @NOTE provide default export for TS to be able to import directly\n */\nmoize.default = moize;\n\n/**\n * @function isMoized\n *\n * @description\n * is the fn passed a moized function\n *\n * @param {*} fn the object to test\n * @returns {boolean} is fn a moized function\n */\nmoize.isMoized = function (fn) {\n  return Object(_utils__WEBPACK_IMPORTED_MODULE_2__[\"isFunction\"])(fn) && !!fn.isMoized;\n};\n\n/**\n * @function maxAge\n *\n * @description\n * a moized method where the age of the cache is limited to the number of milliseconds passed\n *\n * @param {...Array<*>} functions the functions to compose\n * @returns {*} the moized function\n */\nmoize.maxAge = Object(_utils__WEBPACK_IMPORTED_MODULE_2__[\"createCurriableOptionMethod\"])(moize, 'maxAge');\n\n/**\n * @function maxArgs\n *\n * @description\n * a moized method where the number of arguments used for determining cache is limited to the value passed\n *\n * @param {...Array<*>} functions the functions to compose\n * @returns {*} the moized function\n */\nmoize.maxArgs = Object(_utils__WEBPACK_IMPORTED_MODULE_2__[\"createCurriableOptionMethod\"])(moize, 'maxArgs');\n\n/**\n * @function maxSize\n *\n * @description\n * a moized method where the total size of the cache is limited to the value passed\n *\n * @param {...Array<*>} functions the functions to compose\n * @returns {*} the moized function\n */\nmoize.maxSize = Object(_utils__WEBPACK_IMPORTED_MODULE_2__[\"createCurriableOptionMethod\"])(moize, 'maxSize');\n\n/**\n * @function promise\n *\n * @description\n * a moized method specific to caching resolved promise / async values\n *\n * @param {...Array<*>} functions the functions to compose\n * @returns {*} the moized function\n */\nmoize.promise = moize({\n  isPromise: true\n});\n\n/**\n * @function react\n *\n * @description\n * a moized method specific to caching React components\n *\n * @param {...Array<*>} functions the functions to compose\n * @returns {*} the moized function\n */\nmoize.react = moize({\n  isReact: true\n});\n\n/**\n * @function reactSimple\n *\n * @description\n * a moized method specific to caching React components, only keeping the most recently-cached version\n *\n * @param {...Array<*>} functions the functions to compose\n * @returns {*} the moized function\n */\nmoize.reactSimple = Object(_utils__WEBPACK_IMPORTED_MODULE_2__[\"compose\"])(moize.react, moize.maxSize(1));\n\n/**\n * @function serialize\n *\n * @description\n * a moized method where the arguments passed are cached based on their serialized values\n *\n * @param {...Array<*>} functions the functions to compose\n * @returns {*} the moized function\n */\nmoize.serialize = moize({\n  serialize: true\n});\n\n/**\n * @function simple\n *\n * @description\n * a moized method where only the most recent key => value combination is cached\n *\n * @param {...Array<*>} functions the functions to compose\n * @returns {*} the moized function\n */\nmoize.simple = moize.maxSize(1);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (moize);\n\n//# sourceURL=webpack://d3Foresight/./node_modules/moize/es/index.js?");
  
  /***/ }),
  
  /***/ "./node_modules/moize/es/serialize.js":
  /*!********************************************!*\
    !*** ./node_modules/moize/es/serialize.js ***!
    \********************************************/
  /*! exports provided: customReplacer, decycle, stringify, getStringifiedArgument, createArgumentSerializer, getSerializerFunction */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"customReplacer\", function() { return customReplacer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"decycle\", function() { return decycle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringify\", function() { return stringify; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStringifiedArgument\", function() { return getStringifiedArgument; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createArgumentSerializer\", function() { return createArgumentSerializer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSerializerFunction\", function() { return getSerializerFunction; });\n/* harmony import */ var _Cache__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Cache */ \"./node_modules/moize/es/Cache.js\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \"./node_modules/moize/es/utils.js\");\n\n\n// cache\n\n\n// types\n\n\n// utils\n\n\n/**\n * @private\n *\n * @function customReplacer\n *\n * @description\n * custom replacer for the stringify function\n *\n * @param {string} key key in json object\n * @param {*} value value in json object\n * @returns {*} if function then toString of it, else the value itself\n */\nvar customReplacer = function customReplacer(key, value) {\n  return Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(value) ? '' + value : value;\n};\n\n/**\n * @private\n *\n * @function decycle\n *\n * @description\n * ES2015-ified version of cycle.decyle\n *\n * @param {*} object object to stringify\n * @param {Options} options the options passed to the moize method\n * @returns {string} stringified value of object\n */\nvar decycle = function decycle(object, options) {\n  var cache = new _Cache__WEBPACK_IMPORTED_MODULE_0__[\"default\"](options);\n\n  /**\n   * @private\n   *\n   * @function coalesceCircularReferences\n   *\n   * @description\n   * recursive method to replace any circular references with a placeholder\n   *\n   * @param {*} value value in object to decycle\n   * @param {string} path path to reference\n   * @returns {*} clean value\n   */\n  var coalesceCircularReferences = function coalesceCircularReferences(value, path) {\n    if (!Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"isValueObjectOrArray\"])(value)) {\n      return value;\n    }\n\n    if (cache.has(value)) {\n      return {\n        $ref: cache.get(value)\n      };\n    }\n\n    cache.add(value, path);\n\n    if (Array.isArray(value)) {\n      return value.map(function (item, itemIndex) {\n        return coalesceCircularReferences(item, path + '[' + itemIndex + ']');\n      });\n    }\n\n    return Object.keys(value).reduce(function (object, name) {\n      object[name] = coalesceCircularReferences(value[name], path + '[' + JSON.stringify(name) + ']');\n\n      return object;\n    }, {});\n  };\n\n  return coalesceCircularReferences(object, '$');\n};\n\n/**\n * @private\n *\n * @function stringify\n *\n * @description\n * stringify with a custom replacer if circular, else use standard JSON.stringify\n *\n * @param {*} value value to stringify\n * @param {function} [replacer] replacer to used in stringification\n * @param {Options} options the options passed to the moize method\n * @returns {string} the stringified version of value\n */\nvar stringify = function stringify(value, replacer, options) {\n  try {\n    return JSON.stringify(value, replacer);\n  } catch (exception) {\n    return JSON.stringify(decycle(value, options), replacer);\n  }\n};\n\n/**\n * @private\n *\n * @function getStringifiedArgument\n *\n * @description\n * get the stringified version of the argument passed\n *\n * @param {*} arg argument to stringify\n * @param {function} [replacer] replacer to used in stringification\n * @param {Options} options the options passed to the moize method\n * @returns {string} the stringified argument\n */\nvar getStringifiedArgument = function getStringifiedArgument(arg, replacer, options) {\n  return Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"isComplexObject\"])(arg) || Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(arg) ? stringify(arg, replacer, options) : arg;\n};\n\n/**\n * @private\n *\n * @function createArgumentSerializer\n *\n * @description\n * create the internal argument serializer based on the options passed\n *\n * @param {Object} options the options passed\n * @param {boolean} options.serializeFunctions should functions be included in the serialization\n * @param {number} options.maxArgs the cap on the number of arguments used in serialization\n * @returns {function(...Array<*>): string} argument serialization method\n */\nvar createArgumentSerializer = function createArgumentSerializer(options) {\n  var replacer = options.serializeFunctions ? customReplacer : null;\n  var hasMaxArgs = Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"isFiniteAndPositiveInteger\"])(options.maxArgs);\n\n  return function (args) {\n    var length = hasMaxArgs ? options.maxArgs : args.length;\n\n    var index = -1,\n        key = '|',\n        value = void 0;\n\n    while (++index < length) {\n      value = getStringifiedArgument(args[index], replacer, options);\n\n      if (value) {\n        key += value + '|';\n      }\n    }\n\n    return key;\n  };\n};\n\n/**\n * @private\n *\n * @function getSerializerFunction\n *\n * @description\n * based on the options passed, either use the serializer passed or generate the internal one\n *\n * @param {Options} options the options passed to the moized function\n * @returns {function} the function to use in serializing the arguments\n */\nvar getSerializerFunction = function getSerializerFunction(options) {\n  return Object(_utils__WEBPACK_IMPORTED_MODULE_1__[\"isFunction\"])(options.serializer) ? options.serializer : createArgumentSerializer(options);\n};\n\n//# sourceURL=webpack://d3Foresight/./node_modules/moize/es/serialize.js?");
  
  /***/ }),
  
  /***/ "./node_modules/moize/es/utils.js":
  /*!****************************************!*\
    !*** ./node_modules/moize/es/utils.js ***!
    \****************************************/
  /*! exports provided: isComplexObject, isFiniteAndPositiveInteger, isFunction, isPlainObject, isValueObjectOrArray, take, addStaticPropertiesToFunction, compose, createCurriableOptionMethod, createFindIndex, createPluckFromInstanceList, createPromiseRejecter, createPromiseResolver, findIndex, findIndexAfterFirst, getDefaultedOptions, getFunctionNameViaRegexp, getFunctionName, getKeyCount, getNewOrExistingCacheKey, getNewOrExistingCacheKeyCustomEquals, getConstructor, getTransform, createGetCacheKey, createSetNewCachedValue, splice, unshift, createAddPropertiesToFunction */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isComplexObject\", function() { return isComplexObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFiniteAndPositiveInteger\", function() { return isFiniteAndPositiveInteger; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPlainObject\", function() { return isPlainObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isValueObjectOrArray\", function() { return isValueObjectOrArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"take\", function() { return take; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addStaticPropertiesToFunction\", function() { return addStaticPropertiesToFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compose\", function() { return compose; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createCurriableOptionMethod\", function() { return createCurriableOptionMethod; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createFindIndex\", function() { return createFindIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createPluckFromInstanceList\", function() { return createPluckFromInstanceList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createPromiseRejecter\", function() { return createPromiseRejecter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createPromiseResolver\", function() { return createPromiseResolver; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findIndex\", function() { return findIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findIndexAfterFirst\", function() { return findIndexAfterFirst; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDefaultedOptions\", function() { return getDefaultedOptions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFunctionNameViaRegexp\", function() { return getFunctionNameViaRegexp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getFunctionName\", function() { return getFunctionName; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getKeyCount\", function() { return getKeyCount; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNewOrExistingCacheKey\", function() { return getNewOrExistingCacheKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNewOrExistingCacheKeyCustomEquals\", function() { return getNewOrExistingCacheKeyCustomEquals; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getConstructor\", function() { return getConstructor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTransform\", function() { return getTransform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createGetCacheKey\", function() { return createGetCacheKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createSetNewCachedValue\", function() { return createSetNewCachedValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"splice\", function() { return splice; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unshift\", function() { return unshift; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createAddPropertiesToFunction\", function() { return createAddPropertiesToFunction; });\n/* harmony import */ var _Cache__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Cache */ \"./node_modules/moize/es/Cache.js\");\n/* harmony import */ var _ReactCacheKey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ReactCacheKey */ \"./node_modules/moize/es/ReactCacheKey.js\");\n/* harmony import */ var _SerializedCacheKey__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SerializedCacheKey */ \"./node_modules/moize/es/SerializedCacheKey.js\");\n/* harmony import */ var _StandardCacheKey__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./StandardCacheKey */ \"./node_modules/moize/es/StandardCacheKey.js\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constants */ \"./node_modules/moize/es/constants.js\");\n/* harmony import */ var _serialize__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./serialize */ \"./node_modules/moize/es/serialize.js\");\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n// cache\n\n\n// cache key\n\n\n\n\n// constants\n\n\n// serialize\n\n\n// types\n\n\n/**\n * @private\n *\n * @function isComplexObject\n *\n * @description\n * is the object passed a complex object\n *\n * @param {*} object object to test if it is complex\n * @returns {boolean} is it a complex object\n */\nvar isComplexObject = function isComplexObject(object) {\n  return !!object && typeof object === 'object';\n};\n\n/**\n * @private\n *\n * @function isFiniteAndPositiveInteger\n *\n * @description\n * is the number passed an integer that is finite and positive\n *\n * @param {number} number number to test for finiteness and positivity\n * @returns {boolean} is the number finite and positive\n */\nvar isFiniteAndPositiveInteger = function isFiniteAndPositiveInteger(number) {\n  return _constants__WEBPACK_IMPORTED_MODULE_4__[\"FINITE_POSITIVE_INTEGER\"].test('' + number);\n};\n\n/**\n * @private\n *\n * @function isFunction\n *\n * @description\n * is the object passed a function or not\n *\n * @param {*} object object to test\n * @returns {boolean} is it a function\n */\nvar isFunction = function isFunction(object) {\n  return typeof object === 'function';\n};\n\n/**\n * @private\n *\n * @function isPlainObject\n *\n * @description\n * is the object passed a plain object or not\n *\n * @param {*} object object to test\n * @returns {boolean} is it a plain object\n */\nvar isPlainObject = function isPlainObject(object) {\n  return isComplexObject(object) && object.constructor === Object;\n};\n\n/**\n * @private\n *\n * @function isValueObjectOrArray\n *\n * @description\n * check if the object is actually an object or array\n *\n * @param {*} object object to test\n * @returns {boolean} is the object an object or array\n */\nvar isValueObjectOrArray = function isValueObjectOrArray(object) {\n  if (!isComplexObject(object)) {\n    return false;\n  }\n\n  var index = 0;\n\n  while (index < _constants__WEBPACK_IMPORTED_MODULE_4__[\"GOTCHA_OBJECT_CLASSES\"].length) {\n    if (object instanceof _constants__WEBPACK_IMPORTED_MODULE_4__[\"GOTCHA_OBJECT_CLASSES\"][index]) {\n      return false;\n    }\n\n    index++;\n  }\n\n  return true;\n};\n\n/**\n * @private\n *\n * @function take\n *\n * @description\n * take the first N number of items from the array (faster than slice)\n *\n * @param {number} size the number of items to take\n * @returns {function(Array<*>): Array<*>} the shortened array\n */\nvar take = function take(size) {\n  return function (array) {\n    if (size >= array.length) {\n      return array;\n    }\n\n    switch (size) {\n      case 0:\n        return [];\n\n      case 1:\n        return [array[0]];\n\n      case 2:\n        return [array[0], array[1]];\n\n      case 3:\n        return [array[0], array[1], array[2]];\n\n      case 4:\n        return [array[0], array[1], array[2], array[3]];\n\n      case 5:\n        return [array[0], array[1], array[2], array[3], array[4]];\n    }\n\n    return array.slice(0, size);\n  };\n};\n\n/**\n * @private\n *\n * @function addStaticPropertiesToFunction\n *\n * @description\n * add static properties to the memoized function if they exist on the original\n *\n * @param {function} originalFunction the function to be memoized\n * @param {function} memoizedFn the higher-order memoized function\n * @returns {function} memoizedFn with static properties added\n */\nvar addStaticPropertiesToFunction = function addStaticPropertiesToFunction(originalFunction, memoizedFn) {\n  var index = _constants__WEBPACK_IMPORTED_MODULE_4__[\"STATIC_PROPERTIES_TO_PASS\"].length,\n      property = void 0;\n\n  while (index--) {\n    property = _constants__WEBPACK_IMPORTED_MODULE_4__[\"STATIC_PROPERTIES_TO_PASS\"][index];\n\n    if (originalFunction[property]) {\n      memoizedFn[property] = originalFunction[property];\n    }\n  }\n\n  return memoizedFn;\n};\n\n/**\n * @private\n *\n * @function compose\n *\n * @description\n * method to compose functions and return a single function\n *\n * @param {...Array<function>} functions the functions to compose\n * @returns {function(...Array<*>): *} the composed function\n */\nvar compose = function compose() {\n  for (var _len = arguments.length, functions = Array(_len), _key = 0; _key < _len; _key++) {\n    functions[_key] = arguments[_key];\n  }\n\n  return functions.reduce(function (f, g) {\n    return function () {\n      return f(g.apply(undefined, arguments));\n    };\n  });\n};\n\n/**\n * @private\n *\n * @function createCurriableOptionMethod\n *\n * @description\n * create a method that will curry moize with the option + value passed\n *\n * @param {function} fn the method to call\n * @param {string} option the name of the option to apply\n * @param {*} value the value to assign to option\n * @returns {function} the moizer with the option pre-applied\n */\nvar createCurriableOptionMethod = function createCurriableOptionMethod(fn, option) {\n  return function (value) {\n    var _fn;\n\n    return fn((_fn = {}, _fn[option] = value, _fn));\n  };\n};\n\n/**\n * @private\n *\n * @function createFindIndex\n *\n * @description\n * create a findIndex method based on the startingIndex passed\n *\n * @param {number} startingIndex the index to start in the find method returned\n * @returns {function(Array<ListItem>, *): number} the findIndex method\n */\nvar createFindIndex = function createFindIndex(startingIndex) {\n  // eslint-disable-line no-use-before-define\n  return function (list, key) {\n    var index = startingIndex;\n\n    while (index < list.length) {\n      if (key === list[index].key) {\n        return index;\n      }\n\n      index++;\n    }\n\n    return -1;\n  };\n};\n\n/**\n * @private\n *\n * @function createPluckFromInstanceList\n *\n * @description\n * get a property from the list on the cache\n *\n * @param {{list: Array<Object>}} cache cache whose list to map over\n * @param {string} key key to pluck from list\n * @returns {Array<*>} array of values plucked at key\n */\nvar createPluckFromInstanceList = function createPluckFromInstanceList(cache, key) {\n  return function () {\n    return cache.list.map(function (item) {\n      return item[key];\n    });\n  };\n};\n\n/**\n * @private\n *\n * @function createPromiseRejecter\n *\n * @description\n * create method that will reject the promise and delete the key from cache\n *\n * @param {Cache} cache cache to update\n * @param {*} key key to delete from cache\n * @param {Options} options the options passed\n * @param {function} options.promiseLibrary the promise library used\n * @returns {function} the rejecter function for the promise\n */\nvar createPromiseRejecter = function createPromiseRejecter(cache, key, options) {\n  return function (exception) {\n    cache.remove(key);\n\n    return options.promiseLibrary.reject(exception);\n  };\n};\n\n/**\n * @private\n *\n * @function createPromiseResolver\n *\n * @description\n * create method that will resolve the promise and update the key in cache\n *\n * @param {Cache} cache cache to update\n * @param {*} key key to update in cache\n * @param {boolean} hasMaxAge should the cache expire after some time\n * @param {Options} options the options passed\n * @param {number} options.maxAge the age after which the cache will be expired\n * @param {function} options.onExpire a callback that is called after removing the key\n * @param {function} options.promiseLibrary the promise library used\n * @returns {function} the resolver function for the promise\n */\nvar createPromiseResolver = function createPromiseResolver(cache, key, hasMaxAge, options) {\n  return function (resolvedValue) {\n    cache.update(key, options.promiseLibrary.resolve(resolvedValue));\n\n    if (hasMaxAge) {\n      cache.expireAfter(key);\n    }\n\n    return resolvedValue;\n  };\n};\n\n/**\n * @private\n *\n * @function findIndex\n *\n * @description\n * find the index of the key starting at the first index\n *\n * @param {Array<ListItem>} list the list to find the key in\n * @param {*} key the key to test against\n * @returns {number} the index of the matching key, or -1\n */\nvar findIndex = createFindIndex(0);\n\n/**\n * @private\n *\n * @function findIndexAfterFirst\n *\n * @description\n * find the index of the key starting at the second index\n *\n * @param {Array<ListItem>} list the list to find the key in\n * @param {*} key the key to test against\n * @returns {number} the index of the matching key, or -1\n */\nvar findIndexAfterFirst = createFindIndex(1);\n\n/**\n * @private\n *\n * @function getDefaultedOptions\n *\n * @description\n * get the options coalesced to their defaults\n *\n * @param {Object} options the options passed to the moize method\n * @returns {Options} the coalesced options object\n */\nvar getDefaultedOptions = function getDefaultedOptions(options) {\n  var coalescedOptions = _extends({}, _constants__WEBPACK_IMPORTED_MODULE_4__[\"DEFAULT_OPTIONS\"], options);\n\n  return !coalescedOptions.serialize ? coalescedOptions : _extends({}, coalescedOptions, {\n    serializer: Object(_serialize__WEBPACK_IMPORTED_MODULE_5__[\"getSerializerFunction\"])(coalescedOptions)\n  });\n};\n\n/**\n * @private\n *\n * @function getFunctionNameViaRegexp\n *\n * @description\n * use regexp match on stringified function to get the function name\n *\n * @param {function} fn function to get the name of\n * @returns {string} function name\n */\nvar getFunctionNameViaRegexp = function getFunctionNameViaRegexp(fn) {\n  // $FlowIgnore allow type conversion to string\n  var match = ('' + fn).match(_constants__WEBPACK_IMPORTED_MODULE_4__[\"FUNCTION_NAME_REGEXP\"]);\n\n  return match ? match[1] : '';\n};\n\n/**\n * @private\n *\n * @function getFunctionName\n *\n * @description\n * get the function name, either from modern property or regexp match,\n * falling back to generic string\n *\n * @param {function} fn function to get the name of\n * @returns {string} function name\n */\nvar getFunctionName = function getFunctionName(fn) {\n  return fn.displayName || fn.name || getFunctionNameViaRegexp(fn) || 'Component';\n};\n\n/**\n * @private\n *\n * @function getKeyCount\n *\n * @description\n * get the count of keys in the object (faster than Object.keys().length)\n *\n * @param {Object} object the object to get the key count of\n * @returns {number} the count of keys\n */\nvar getKeyCount = function getKeyCount(object) {\n  var counter = 0;\n\n  for (var ignored in object) {\n    counter++;\n  }\n\n  return counter;\n};\n\n/**\n * @private\n *\n * @function getNewOrExistingCacheKey\n *\n * @description\n * get the cache key if it exists in cache, else a newly-constructed one\n *\n * @param {Cache} cache the cache to test against\n * @param {Array<*>} key the key to test if exists in the cache\n * @param {Function} Constructor the constructor function\n * @returns {CacheKey} the new or existing cache key\n */\nvar getNewOrExistingCacheKey = function getNewOrExistingCacheKey(cache, key, Constructor) {\n  // $FlowIgnore if cache has size, the key exists\n  if (cache.size && cache.lastItem.key.matches(key)) {\n    // $FlowIgnore if cache has size, the key exists\n    return cache.lastItem.key;\n  }\n\n  var index = 1;\n\n  while (index < cache.size) {\n    // $FlowIgnore if cache matches, the key exists\n    if (cache.list[index].key.matches(key)) {\n      // $FlowIgnore if cache matches, the key exists\n      return cache.list[index].key;\n    }\n\n    index++;\n  }\n\n  return new Constructor(key);\n};\n\n/**\n * @private\n *\n * @function getNewOrExistingCacheKeyCustomEquals\n *\n * @description\n * get the cache key if it exists in cache, else a newly-constructed one\n *\n * @param {Cache} cache the cache to test against\n * @param {Array<*>} key the key to test if exists in the cache\n * @param {Function} Constructor the constructor function\n * @param {function} isEqual the custom equality mnthod\n * @returns {CacheKey} the new or existing cache key\n */\nvar getNewOrExistingCacheKeyCustomEquals = function getNewOrExistingCacheKeyCustomEquals(cache, key, Constructor, isEqual) {\n  // $FlowIgnore if cache has size, the key exists\n  if (cache.size && cache.lastItem.key.matchesCustom(key, isEqual)) {\n    // $FlowIgnore if cache has size, the key exists\n    return cache.lastItem.key;\n  }\n\n  var index = 1;\n\n  while (index < cache.size) {\n    // $FlowIgnore if cache matches custom, the key exists\n    if (cache.list[index].key.matchesCustom(key, isEqual)) {\n      // $FlowIgnore if cache matches custom, the key exists\n      return cache.list[index].key;\n    }\n\n    index++;\n  }\n\n  return new Constructor(key);\n};\n\n/**\n * @private\n *\n * @function getConstructor\n *\n * @description\n * get the constructor type based on the options passed\n *\n * @param {Options} options the options passed to the moizer\n * @returns {Function} the constructor method\n */\nvar getConstructor = function getConstructor(options) {\n  if (options.isReact) {\n    return _ReactCacheKey__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n  }\n\n  if (options.serialize) {\n    return _SerializedCacheKey__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\n  }\n\n  return _StandardCacheKey__WEBPACK_IMPORTED_MODULE_3__[\"default\"];\n};\n\n/**\n * @private\n *\n * @function getTransform\n *\n * @description\n * get the transform method based on the options passed\n *\n * @param {Options} options the options to build the transform function from\n * @returns {function|undefined} the transform function\n */\nvar getTransform = function getTransform(options) {\n  var transform = options.transformArgs;\n\n  if (isFiniteAndPositiveInteger(options.maxArgs)) {\n    transform = transform ? compose(transform, take(options.maxArgs)) : take(options.maxArgs);\n  }\n\n  return !options.serialize ? transform : transform ? compose(options.serializer, transform) : options.serializer;\n};\n\n/**\n * @private\n *\n * @function createGetCacheKey\n *\n * @description\n * create the method that will get the cache key based on the options passed to the moized method\n *\n * @param {Cache} cache the cache to get the key from\n * @param {Options} options the options passed to the moized method\n * @returns {function(*): CacheKey} the method that will get the cache key\n */\nvar createGetCacheKey = function createGetCacheKey(cache, options) {\n  var Constructor = getConstructor(options);\n  var transform = getTransform(options);\n\n  if (options.equals) {\n    if (transform) {\n      return function (key) {\n        return getNewOrExistingCacheKeyCustomEquals(cache, transform(key), Constructor, options.equals);\n      };\n    }\n\n    return function (key) {\n      return getNewOrExistingCacheKeyCustomEquals(cache, key, Constructor, options.equals);\n    };\n  }\n\n  if (transform) {\n    return function (key) {\n      return getNewOrExistingCacheKey(cache, transform(key), Constructor);\n    };\n  }\n\n  return function (key) {\n    return getNewOrExistingCacheKey(cache, key, Constructor);\n  };\n};\n\n/**\n * @private\n *\n * @function createSetNewCachedValue\n *\n * @description\n * assign the new value to the key in the functions cache and return the value\n *\n * @param {Cache} cache the cache to assign the value to at key\n * @param {Options} options the options passed to the moize method\n * @returns {function(function, *, *): *} value just stored in cache\n */\nvar createSetNewCachedValue = function createSetNewCachedValue(cache, options) {\n  var hasMaxAge = isFiniteAndPositiveInteger(options.maxAge);\n  var hasMaxSize = isFiniteAndPositiveInteger(options.maxSize);\n\n  if (options.isPromise) {\n    if (!isFunction(options.promiseLibrary) && !isPlainObject(options.promiseLibrary)) {\n      throw new TypeError(_constants__WEBPACK_IMPORTED_MODULE_4__[\"INVALID_PROMISE_LIBRARY_ERROR\"]);\n    }\n\n    return function (key, value) {\n      var handler = value.then(createPromiseResolver(cache, key, hasMaxAge, options), createPromiseRejecter(cache, key, options));\n\n      cache.add(key, handler);\n\n      if (hasMaxSize && cache.size > options.maxSize) {\n        cache.remove(cache.list[cache.list.length - 1].key);\n      }\n\n      return handler;\n    };\n  }\n\n  return function (key, value) {\n    cache.add(key, value);\n\n    if (hasMaxAge) {\n      cache.expireAfter(key);\n    }\n\n    if (hasMaxSize && cache.size > options.maxSize) {\n      cache.remove(cache.list[cache.list.length - 1].key);\n    }\n\n    return value;\n  };\n};\n\n/**\n * @private\n *\n * @function splice\n *\n * @description\n * faster version of splicing a single item from the array\n *\n * @param {Array<*>} array array to splice from\n * @param {number} startingIndex index to splice at\n * @returns {Array<*>} array minus the item removed\n */\nvar splice = function splice(array, startingIndex) {\n  if (array.length) {\n    var index = startingIndex - 1;\n\n    while (++index < array.length) {\n      array[index] = array[index + 1];\n    }\n\n    array.length -= 1;\n  }\n\n  return array;\n};\n\n/**\n * @private\n *\n * @function unshift\n *\n * @description\n * faster version of unshifting a single item into an array\n *\n * @param {Array<*>} array array to unshift into\n * @param {*} item item to unshift into array\n * @returns {*} the item just added to the array\n */\nvar unshift = function unshift(array, item) {\n  var index = array.length;\n\n  while (index--) {\n    array[index + 1] = array[index];\n  }\n\n  return array[0] = item;\n};\n\n/**\n * @private\n *\n * @function createAddPropertiesToFunction\n *\n * @description\n * add the static properties to the moized function\n *\n * @param {Cache} cache the cache for the moized function\n * @param {function} originalFunction the function to be moized\n * @param {Options} options the options passed to the moize method\n * @returns {function(function): function} the method which will add the static properties\n */\nvar createAddPropertiesToFunction = function createAddPropertiesToFunction(cache, originalFunction, options) {\n  return function (moizedFunction) {\n    var getCacheKey = createGetCacheKey(cache, options);\n    var setNewCachedValue = createSetNewCachedValue(cache, options);\n\n    moizedFunction.cache = cache;\n    moizedFunction.displayName = 'moize(' + getFunctionName(originalFunction) + ')';\n    moizedFunction.isMoized = true;\n    moizedFunction.options = options;\n    moizedFunction.originalFunction = originalFunction;\n\n    /**\n     * @private\n     *\n     * @function add\n     *\n     * @description\n     * manually add an item to cache if the key does not already exist\n     *\n     * @param {Array<any>} key key to use in cache\n     * @param {*} value value to assign to key\n     */\n    moizedFunction.add = function (key, value) {\n      var internalKey = getCacheKey(key);\n\n      if (!cache.has(internalKey)) {\n        setNewCachedValue(internalKey, value);\n      }\n    };\n\n    /**\n     * @private\n     *\n     * @function clear\n     *\n     * @description\n     * clear the current cache for this method\n     */\n    moizedFunction.clear = function () {\n      cache.clear();\n    };\n\n    /**\n     * @private\n     *\n     * @function has\n     *\n     * @description\n     * does the function have cache for the specific args passed\n     *\n     * @param {Array<*>} key combination of args to remove from cache\n     * @returns {boolean} does the cache for the give args exist\n     */\n    moizedFunction.has = function (key) {\n      return cache.has(getCacheKey(key));\n    };\n\n    /**\n     * @private\n     *\n     * @function keys\n     *\n     * @description\n     * get the list of keys currently in cache\n     *\n     * @returns {Array<*>}\n     */\n    moizedFunction.keys = createPluckFromInstanceList(cache, 'key');\n\n    /**\n     * @private\n     *\n     * @function remove\n     *\n     * @description\n     * remove the item from cache for the key passed for this method\n     *\n     * @param {Array<*>} key combination of args to remove from cache\n     */\n    moizedFunction.remove = function (key) {\n      cache.remove(getCacheKey(key));\n    };\n\n    /**\n     * @private\n     *\n     * @function values\n     *\n     * @description\n     * get the list of values currently in cache\n     *\n     * @returns {Array<*>}\n     */\n    moizedFunction.values = createPluckFromInstanceList(cache, 'value');\n\n    return addStaticPropertiesToFunction(originalFunction, moizedFunction);\n  };\n};\n\n//# sourceURL=webpack://d3Foresight/./node_modules/moize/es/utils.js?");
  
  /***/ }),
  
  /***/ "./node_modules/node-libs-browser/node_modules/punycode/punycode.js":
  /*!**************************************************************************!*\
    !*** ./node_modules/node-libs-browser/node_modules/punycode/punycode.js ***!
    \**************************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports =  true && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule =  true && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t    counter = 0,\n\t\t    length = string.length,\n\t\t    value,\n\t\t    extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t    inputLength = input.length,\n\t\t    out,\n\t\t    i = 0,\n\t\t    n = initialN,\n\t\t    bias = initialBias,\n\t\t    basic,\n\t\t    j,\n\t\t    index,\n\t\t    oldi,\n\t\t    w,\n\t\t    k,\n\t\t    digit,\n\t\t    t,\n\t\t    /** Cached calculation results */\n\t\t    baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t    delta,\n\t\t    handledCPCount,\n\t\t    basicLength,\n\t\t    bias,\n\t\t    j,\n\t\t    m,\n\t\t    q,\n\t\t    k,\n\t\t    t,\n\t\t    currentValue,\n\t\t    output = [],\n\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t    inputLength,\n\t\t    /** Cached calculation results */\n\t\t    handledCPCountPlusOne,\n\t\t    baseMinusT,\n\t\t    qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttrue\n\t) {\n\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {\n\t\t\treturn punycode;\n\t\t}).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n\n}(this));\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module), __webpack_require__(/*! ./../../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack://d3Foresight/./node_modules/node-libs-browser/node_modules/punycode/punycode.js?");
  
  /***/ }),
  
  /***/ "./node_modules/pubsub-js/src/pubsub.js":
  /*!**********************************************!*\
    !*** ./node_modules/pubsub-js/src/pubsub.js ***!
    \**********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("/* WEBPACK VAR INJECTION */(function(module) {/**\n * Copyright (c) 2010,2011,2012,2013,2014 Morgan Roderick http://roderick.dk\n * License: MIT - http://mrgnrdrck.mit-license.org\n *\n * https://github.com/mroderick/PubSubJS\n */\n\n(function (root, factory){\n    'use strict';\n\n    var PubSub = {};\n    root.PubSub = PubSub;\n\n    var define = root.define;\n\n    factory(PubSub);\n\n    // AMD support\n    if (typeof define === 'function' && define.amd){\n        define(function() { return PubSub; });\n\n        // CommonJS and Node.js module support\n    } else if (true){\n        if (module !== undefined && module.exports) {\n            exports = module.exports = PubSub; // Node.js specific `module.exports`\n        }\n        exports.PubSub = PubSub; // CommonJS module 1.1.1 spec\n        module.exports = exports = PubSub; // CommonJS\n    }\n\n}(( typeof window === 'object' && window ) || this, function (PubSub){\n    'use strict';\n\n    var messages = {},\n        lastUid = -1;\n\n    function hasKeys(obj){\n        var key;\n\n        for (key in obj){\n            if ( obj.hasOwnProperty(key) ){\n                return true;\n            }\n        }\n        return false;\n    }\n\n    /**\n     * Returns a function that throws the passed exception, for use as argument for setTimeout\n     * @alias throwException\n     * @function\n     * @param { Object } ex An Error object\n     */\n    function throwException( ex ){\n        return function reThrowException(){\n            throw ex;\n        };\n    }\n\n    function callSubscriberWithDelayedExceptions( subscriber, message, data ){\n        try {\n            subscriber( message, data );\n        } catch( ex ){\n            setTimeout( throwException( ex ), 0);\n        }\n    }\n\n    function callSubscriberWithImmediateExceptions( subscriber, message, data ){\n        subscriber( message, data );\n    }\n\n    function deliverMessage( originalMessage, matchedMessage, data, immediateExceptions ){\n        var subscribers = messages[matchedMessage],\n            callSubscriber = immediateExceptions ? callSubscriberWithImmediateExceptions : callSubscriberWithDelayedExceptions,\n            s;\n\n        if ( !messages.hasOwnProperty( matchedMessage ) ) {\n            return;\n        }\n\n        for (s in subscribers){\n            if ( subscribers.hasOwnProperty(s)){\n                callSubscriber( subscribers[s], originalMessage, data );\n            }\n        }\n    }\n\n    function createDeliveryFunction( message, data, immediateExceptions ){\n        return function deliverNamespaced(){\n            var topic = String( message ),\n                position = topic.lastIndexOf( '.' );\n\n            // deliver the message as it is now\n            deliverMessage(message, message, data, immediateExceptions);\n\n            // trim the hierarchy and deliver message to each level\n            while( position !== -1 ){\n                topic = topic.substr( 0, position );\n                position = topic.lastIndexOf('.');\n                deliverMessage( message, topic, data, immediateExceptions );\n            }\n        };\n    }\n\n    function messageHasSubscribers( message ){\n        var topic = String( message ),\n            found = Boolean(messages.hasOwnProperty( topic ) && hasKeys(messages[topic])),\n            position = topic.lastIndexOf( '.' );\n\n        while ( !found && position !== -1 ){\n            topic = topic.substr( 0, position );\n            position = topic.lastIndexOf( '.' );\n            found = Boolean(messages.hasOwnProperty( topic ) && hasKeys(messages[topic]));\n        }\n\n        return found;\n    }\n\n    function publish( message, data, sync, immediateExceptions ){\n        message = (typeof message === 'symbol') ? message.toString() : message;\n\n        var deliver = createDeliveryFunction( message, data, immediateExceptions ),\n            hasSubscribers = messageHasSubscribers( message );\n\n        if ( !hasSubscribers ){\n            return false;\n        }\n\n        if ( sync === true ){\n            deliver();\n        } else {\n            setTimeout( deliver, 0 );\n        }\n        return true;\n    }\n\n    /**\n     * Publishes the message, passing the data to it's subscribers\n     * @function\n     * @alias publish\n     * @param { String } message The message to publish\n     * @param {} data The data to pass to subscribers\n     * @return { Boolean }\n     */\n    PubSub.publish = function( message, data ){\n        return publish( message, data, false, PubSub.immediateExceptions );\n    };\n\n    /**\n     * Publishes the message synchronously, passing the data to it's subscribers\n     * @function\n     * @alias publishSync\n     * @param { String } message The message to publish\n     * @param {} data The data to pass to subscribers\n     * @return { Boolean }\n     */\n    PubSub.publishSync = function( message, data ){\n        return publish( message, data, true, PubSub.immediateExceptions );\n    };\n\n    /**\n     * Subscribes the passed function to the passed message. Every returned token is unique and should be stored if you need to unsubscribe\n     * @function\n     * @alias subscribe\n     * @param { String } message The message to subscribe to\n     * @param { Function } func The function to call when a new message is published\n     * @return { String }\n     */\n    PubSub.subscribe = function( message, func ){\n        if ( typeof func !== 'function'){\n            return false;\n        }\n\n        message = (typeof message === 'symbol') ? message.toString() : message;\n\n        // message is not registered yet\n        if ( !messages.hasOwnProperty( message ) ){\n            messages[message] = {};\n        }\n\n        // forcing token as String, to allow for future expansions without breaking usage\n        // and allow for easy use as key names for the 'messages' object\n        var token = 'uid_' + String(++lastUid);\n        messages[message][token] = func;\n        \n        // return token for unsubscribing\n        return token;\n    };\n\n    /**\n     * Subscribes the passed function to the passed message once\n     * @function\n     * @alias subscribeOnce\n     * @param { String } message The message to subscribe to\n     * @param { Function } func The function to call when a new message is published\n     * @return { PubSub }\n     */\n    PubSub.subscribeOnce = function( message, func ){\n        var token = PubSub.subscribe( message, function(){\n            // before func apply, unsubscribe message\n            PubSub.unsubscribe( token );\n            func.apply( this, arguments );\n        });\n        return PubSub;\n    };\n\n    /**\n     * Clears all subscriptions\n     * @function\n     * @public\n     * @alias clearAllSubscriptions\n     */\n    PubSub.clearAllSubscriptions = function clearAllSubscriptions(){\n        messages = {};\n    };\n\n    /**\n     * Clear subscriptions by the topic\n     * @function\n     * @public\n     * @alias clearAllSubscriptions\n     * @return { int }\n     */\n    PubSub.clearSubscriptions = function clearSubscriptions(topic){\n        var m;\n        for (m in messages){\n            if (messages.hasOwnProperty(m) && m.indexOf(topic) === 0){\n                delete messages[m];\n            }\n        }\n    };\n\n    /** \n       Count subscriptions by the topic\n     * @function\n     * @public\n     * @alias countSubscriptions\n     * @return { Array }\n    */\n    PubSub.countSubscriptions = function countSubscriptions(topic){\n        var m;\n        var count = 0;\n        for (m in messages){\n            if (messages.hasOwnProperty(m) && m.indexOf(topic) === 0){\n                count++;\n            }\n        }\n        return count;\n    };\n\n    \n    /** \n       Gets subscriptions by the topic\n     * @function\n     * @public\n     * @alias getSubscriptions\n    */\n    PubSub.getSubscriptions = function getSubscriptions(topic){\n        var m;\n        var list = [];\n        for (m in messages){\n            if (messages.hasOwnProperty(m) && m.indexOf(topic) === 0){\n                list.push(m);\n            }\n        }\n        return list;\n    };\n\n    /**\n     * Removes subscriptions\n     *\n     * - When passed a token, removes a specific subscription.\n     *\n\t * - When passed a function, removes all subscriptions for that function\n     *\n\t * - When passed a topic, removes all subscriptions for that topic (hierarchy)\n     * @function\n     * @public\n     * @alias subscribeOnce\n     * @param { String | Function } value A token, function or topic to unsubscribe from\n     * @example // Unsubscribing with a token\n     * var token = PubSub.subscribe('mytopic', myFunc);\n     * PubSub.unsubscribe(token);\n     * @example // Unsubscribing with a function\n     * PubSub.unsubscribe(myFunc);\n     * @example // Unsubscribing from a topic\n     * PubSub.unsubscribe('mytopic');\n     */\n    PubSub.unsubscribe = function(value){\n        var descendantTopicExists = function(topic) {\n                var m;\n                for ( m in messages ){\n                    if ( messages.hasOwnProperty(m) && m.indexOf(topic) === 0 ){\n                        // a descendant of the topic exists:\n                        return true;\n                    }\n                }\n\n                return false;\n            },\n            isTopic    = typeof value === 'string' && ( messages.hasOwnProperty(value) || descendantTopicExists(value) ),\n            isToken    = !isTopic && typeof value === 'string',\n            isFunction = typeof value === 'function',\n            result = false,\n            m, message, t;\n\n        if (isTopic){\n            PubSub.clearSubscriptions(value);\n            return;\n        }\n\n        for ( m in messages ){\n            if ( messages.hasOwnProperty( m ) ){\n                message = messages[m];\n\n                if ( isToken && message[value] ){\n                    delete message[value];\n                    result = value;\n                    // tokens are unique, so we can just stop here\n                    break;\n                }\n\n                if (isFunction) {\n                    for ( t in message ){\n                        if (message.hasOwnProperty(t) && message[t] === value){\n                            delete message[t];\n                            result = true;\n                        }\n                    }\n                }\n            }\n        }\n\n        return result;\n    };\n}));\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://d3Foresight/./node_modules/pubsub-js/src/pubsub.js?");
  
  /***/ }),
  
  /***/ "./node_modules/querystring-es3/decode.js":
  /*!************************************************!*\
    !*** ./node_modules/querystring-es3/decode.js ***!
    \************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n  sep = sep || '&';\n  eq = eq || '=';\n  var obj = {};\n\n  if (typeof qs !== 'string' || qs.length === 0) {\n    return obj;\n  }\n\n  var regexp = /\\+/g;\n  qs = qs.split(sep);\n\n  var maxKeys = 1000;\n  if (options && typeof options.maxKeys === 'number') {\n    maxKeys = options.maxKeys;\n  }\n\n  var len = qs.length;\n  // maxKeys <= 0 means that we should not limit keys count\n  if (maxKeys > 0 && len > maxKeys) {\n    len = maxKeys;\n  }\n\n  for (var i = 0; i < len; ++i) {\n    var x = qs[i].replace(regexp, '%20'),\n        idx = x.indexOf(eq),\n        kstr, vstr, k, v;\n\n    if (idx >= 0) {\n      kstr = x.substr(0, idx);\n      vstr = x.substr(idx + 1);\n    } else {\n      kstr = x;\n      vstr = '';\n    }\n\n    k = decodeURIComponent(kstr);\n    v = decodeURIComponent(vstr);\n\n    if (!hasOwnProperty(obj, k)) {\n      obj[k] = v;\n    } else if (isArray(obj[k])) {\n      obj[k].push(v);\n    } else {\n      obj[k] = [obj[k], v];\n    }\n  }\n\n  return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n  return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/querystring-es3/decode.js?");
  
  /***/ }),
  
  /***/ "./node_modules/querystring-es3/encode.js":
  /*!************************************************!*\
    !*** ./node_modules/querystring-es3/encode.js ***!
    \************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar stringifyPrimitive = function(v) {\n  switch (typeof v) {\n    case 'string':\n      return v;\n\n    case 'boolean':\n      return v ? 'true' : 'false';\n\n    case 'number':\n      return isFinite(v) ? v : '';\n\n    default:\n      return '';\n  }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n  sep = sep || '&';\n  eq = eq || '=';\n  if (obj === null) {\n    obj = undefined;\n  }\n\n  if (typeof obj === 'object') {\n    return map(objectKeys(obj), function(k) {\n      var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n      if (isArray(obj[k])) {\n        return map(obj[k], function(v) {\n          return ks + encodeURIComponent(stringifyPrimitive(v));\n        }).join(sep);\n      } else {\n        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n      }\n    }).join(sep);\n\n  }\n\n  if (!name) return '';\n  return encodeURIComponent(stringifyPrimitive(name)) + eq +\n         encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n  return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n  if (xs.map) return xs.map(f);\n  var res = [];\n  for (var i = 0; i < xs.length; i++) {\n    res.push(f(xs[i], i));\n  }\n  return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n  var res = [];\n  for (var key in obj) {\n    if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n  }\n  return res;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/querystring-es3/encode.js?");
  
  /***/ }),
  
  /***/ "./node_modules/querystring-es3/index.js":
  /*!***********************************************!*\
    !*** ./node_modules/querystring-es3/index.js ***!
    \***********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nexports.decode = exports.parse = __webpack_require__(/*! ./decode */ \"./node_modules/querystring-es3/decode.js\");\nexports.encode = exports.stringify = __webpack_require__(/*! ./encode */ \"./node_modules/querystring-es3/encode.js\");\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/querystring-es3/index.js?");
  
  /***/ }),
  
  /***/ "./node_modules/style-loader/lib/addStyles.js":
  /*!****************************************************!*\
    !*** ./node_modules/style-loader/lib/addStyles.js ***!
    \****************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target) {\n  return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target) {\n                // If passing function in options, then use it for resolve \"head\" element.\n                // Useful for Shadow Root style i.e\n                // {\n                //   insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n                // }\n                if (typeof target === 'function') {\n                        return target();\n                }\n                if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = __webpack_require__(/*! ./urls */ \"./node_modules/style-loader/lib/urls.js\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n        if (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertInto + \" \" + options.insertAt.before);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\toptions.attrs.type = \"text/css\";\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\toptions.attrs.type = \"text/css\";\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t    result = options.transform(obj.css);\n\n\t    if (result) {\n\t    \t// If transform returns a value, use that instead of the original css.\n\t    \t// This allows running runtime transformations on the css.\n\t    \tobj.css = result;\n\t    } else {\n\t    \t// If the transform function returns a falsy value, don't add this css.\n\t    \t// This allows conditional loading of css\n\t    \treturn function() {\n\t    \t\t// noop\n\t    \t};\n\t    }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default.  Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/style-loader/lib/addStyles.js?");
  
  /***/ }),
  
  /***/ "./node_modules/style-loader/lib/urls.js":
  /*!***********************************************!*\
    !*** ./node_modules/style-loader/lib/urls.js ***!
    \***********************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n  // get current location\n  var location = typeof window !== \"undefined\" && window.location;\n\n  if (!location) {\n    throw new Error(\"fixUrls requires window.location\");\n  }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t  return css;\n  }\n\n  var baseUrl = location.protocol + \"//\" + location.host;\n  var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\(  = Match on the word \"url\" with any whitespace after it and then a parens\n\t   (  = Start a capturing group\n\t     (?:  = Start a non-capturing group\n\t         [^)(]  = Match anything that isn't a parentheses\n\t         |  = OR\n\t         \\(  = Match a start parentheses\n\t             (?:  = Start another non-capturing groups\n\t                 [^)(]+  = Match anything that isn't a parentheses\n\t                 |  = OR\n\t                 \\(  = Match a start parentheses\n\t                     [^)(]*  = Match anything that isn't a parentheses\n\t                 \\)  = Match a end parentheses\n\t             )  = End Group\n              *\\) = Match anything and then a close parens\n          )  = Close non-capturing group\n          *  = Match anything\n       )  = Close capturing group\n\t \\)  = Match a close parens\n\n\t /gi  = Get all matches, not the first.  Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(unquotedOrigUrl)) {\n\t\t  return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t  \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/style-loader/lib/urls.js?");
  
  /***/ }),
  
  /***/ "./node_modules/textures/dist/textures.esm.js":
  /*!****************************************************!*\
    !*** ./node_modules/textures/dist/textures.esm.js ***!
    \****************************************************/
  /*! exports provided: default */
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
  
  "use strict";
  eval("__webpack_require__.r(__webpack_exports__);\nvar rand = (function () {\n  return \"\".concat(Math.random().toString(36), \"00000000000000000\").replace(/[^a-z]+/g, '').slice(0, 5);\n});\n\nvar circles = (function () {\n  var size = 20;\n  var background = '';\n  var radius = 2;\n  var complement = false;\n  var fill = '#343434';\n  var stroke = '#343434';\n  var strokeWidth = 0;\n  var id = rand();\n\n  var $ = function $(selection) {\n    var group = selection.append('defs').append('pattern').attr('id', id).attr('patternUnits', 'userSpaceOnUse').attr('width', size).attr('height', size);\n\n    if (background) {\n      group.append('rect').attr('width', size).attr('height', size).attr('fill', background);\n    }\n\n    group.append('circle').attr('cx', size / 2).attr('cy', size / 2).attr('r', radius).attr('fill', fill).attr('stroke', stroke).attr('stroke-width', strokeWidth);\n\n    if (complement) {\n      [[0, 0], [0, size], [size, 0], [size, size]].forEach(function (corner) {\n        group.append('circle').attr('cx', corner[0]).attr('cy', corner[1]).attr('r', radius).attr('fill', fill).attr('stroke', stroke).attr('stroke-width', strokeWidth);\n      });\n    }\n  };\n\n  $.heavier = function (_) {\n    if (arguments.length === 0) {\n      radius *= 2;\n    } else {\n      radius *= 2 * _;\n    }\n\n    return $;\n  };\n\n  $.lighter = function (_) {\n    if (arguments.length === 0) {\n      radius /= 2;\n    } else {\n      radius /= 2 * _;\n    }\n\n    return $;\n  };\n\n  $.thinner = function (_) {\n    if (arguments.length === 0) {\n      size *= 2;\n    } else {\n      size *= 2 * _;\n    }\n\n    return $;\n  };\n\n  $.thicker = function (_) {\n    if (arguments.length === 0) {\n      size /= 2;\n    } else {\n      size /= 2 * _;\n    }\n\n    return $;\n  };\n\n  $.background = function (_) {\n    background = _;\n    return $;\n  };\n\n  $.size = function (_) {\n    size = _;\n    return $;\n  };\n\n  $.complement = function (_) {\n    if (arguments.length === 0) {\n      complement = true;\n    } else {\n      complement = _;\n    }\n\n    return $;\n  };\n\n  $.radius = function (_) {\n    radius = _;\n    return $;\n  };\n\n  $.fill = function (_) {\n    fill = _;\n    return $;\n  };\n\n  $.stroke = function (_) {\n    stroke = _;\n    return $;\n  };\n\n  $.strokeWidth = function (_) {\n    strokeWidth = _;\n    return $;\n  };\n\n  $.id = function (_) {\n    if (arguments.length === 0) {\n      return id;\n    }\n\n    id = _;\n    return $;\n  };\n\n  $.url = function () {\n    return \"url(#\".concat(id, \")\");\n  };\n\n  return $;\n});\n\nvar lines = (function () {\n  var size = 20;\n  var stroke = '#343434';\n  var strokeWidth = 2;\n  var background = '';\n  var id = rand();\n  var orientation = ['diagonal'];\n  var shapeRendering = 'auto';\n\n  var path = function path(orientation) {\n    var s = size;\n\n    switch (orientation) {\n      case '0/8':\n      case 'vertical':\n        return \"M \".concat(s / 2, \", 0 l 0, \").concat(s);\n\n      case '1/8':\n        return \"M \".concat(s / 4, \",0 l \").concat(s / 2, \",\").concat(s, \" M \").concat(-s / 4, \",0 l \").concat(s / 2, \",\").concat(s, \" M \").concat(s * 3 / 4, \",0 l \").concat(s / 2, \",\").concat(s);\n\n      case '2/8':\n      case 'diagonal':\n        return \"M 0,\".concat(s, \" l \").concat(s, \",\").concat(-s, \" M \").concat(-s / 4, \",\").concat(s / 4, \" l \").concat(s / 2, \",\").concat(-s / 2, \" M \").concat(3 / 4 * s, \",\").concat(5 / 4 * s, \" l \").concat(s / 2, \",\").concat(-s / 2);\n\n      case '3/8':\n        return \"M 0,\".concat(3 / 4 * s, \" l \").concat(s, \",\").concat(-s / 2, \" M 0,\").concat(s / 4, \" l \").concat(s, \",\").concat(-s / 2, \" M 0,\").concat(s * 5 / 4, \" l \").concat(s, \",\").concat(-s / 2);\n\n      case '4/8':\n      case 'horizontal':\n        return \"M 0,\".concat(s / 2, \" l \").concat(s, \",0\");\n\n      case '5/8':\n        return \"M 0,\".concat(-s / 4, \" l \").concat(s, \",\").concat(s / 2, \"M 0,\").concat(s / 4, \" l \").concat(s, \",\").concat(s / 2, \" M 0,\").concat(s * 3 / 4, \" l \").concat(s, \",\").concat(s / 2);\n\n      case '6/8':\n        return \"M 0,0 l \".concat(s, \",\").concat(s, \" M \").concat(-s / 4, \",\").concat(3 / 4 * s, \" l \").concat(s / 2, \",\").concat(s / 2, \" M \").concat(s * 3 / 4, \",\").concat(-s / 4, \" l \").concat(s / 2, \",\").concat(s / 2);\n\n      case '7/8':\n        return \"M \".concat(-s / 4, \",0 l \").concat(s / 2, \",\").concat(s, \" M \").concat(s / 4, \",0 l \").concat(s / 2, \",\").concat(s, \" M \").concat(s * 3 / 4, \",0 l \").concat(s / 2, \",\").concat(s);\n\n      default:\n        return \"M \".concat(s / 2, \", 0 l 0, \").concat(s);\n    }\n  };\n\n  var $ = function $(selection) {\n    var group = selection.append('defs').append('pattern').attr('id', id).attr('patternUnits', 'userSpaceOnUse').attr('width', size).attr('height', size);\n\n    if (background) {\n      group.append('rect').attr('width', size).attr('height', size).attr('fill', background);\n    }\n\n    orientation.forEach(function (o) {\n      group.append('path').attr('d', path(o)).attr('stroke-width', strokeWidth).attr('shape-rendering', shapeRendering).attr('stroke', stroke).attr('stroke-linecap', 'square');\n    });\n  };\n\n  $.heavier = function (_) {\n    if (arguments.length === 0) {\n      strokeWidth *= 2;\n    } else {\n      strokeWidth *= 2 * _;\n    }\n\n    return $;\n  };\n\n  $.lighter = function (_) {\n    if (arguments.length === 0) {\n      strokeWidth /= 2;\n    } else {\n      strokeWidth /= 2 * _;\n    }\n\n    return $;\n  };\n\n  $.thinner = function (_) {\n    if (arguments.length === 0) {\n      size *= 2;\n    } else {\n      size *= 2 * _;\n    }\n\n    return $;\n  };\n\n  $.thicker = function (_) {\n    if (arguments.length === 0) {\n      size /= 2;\n    } else {\n      size /= 2 * _;\n    }\n\n    return $;\n  };\n\n  $.background = function (_) {\n    background = _;\n    return $;\n  };\n\n  $.size = function (_) {\n    size = _;\n    return $;\n  };\n\n  $.orientation = function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    if (arguments.length === 0) {\n      return $;\n    }\n\n    orientation = args;\n    return $;\n  };\n\n  $.shapeRendering = function (_) {\n    shapeRendering = _;\n    return $;\n  };\n\n  $.stroke = function (_) {\n    stroke = _;\n    return $;\n  };\n\n  $.strokeWidth = function (_) {\n    strokeWidth = _;\n    return $;\n  };\n\n  $.id = function (_) {\n    if (arguments.length === 0) {\n      return id;\n    }\n\n    id = _;\n    return $;\n  };\n\n  $.url = function () {\n    return \"url(#\".concat(id, \")\");\n  };\n\n  return $;\n});\n\nvar paths = (function () {\n  var width = 1;\n  var height = 1;\n  var size = 20;\n  var stroke = '#343434';\n  var strokeWidth = 2;\n  var background = '';\n\n  var d = function d(s) {\n    return \"M \".concat(s / 4, \",\").concat(s * 3 / 4, \"l\").concat(s / 4, \",\").concat(-s / 2, \"l\").concat(s / 4, \",\").concat(s / 2);\n  };\n\n  var id = rand();\n  var fill = 'transparent';\n  var shapeRendering = 'auto';\n\n  var path = function path(_) {\n    var s = size;\n\n    switch (_) {\n      case 'squares':\n        return \"M \".concat(s / 4, \" \").concat(s / 4, \" l \").concat(s / 2, \" 0 l 0 \").concat(s / 2, \" l \").concat(-s / 2, \" 0 Z\");\n\n      case 'nylon':\n        return \"M 0 \".concat(s / 4, \" l \").concat(s / 4, \" 0 l 0 \").concat(-s / 4, \" M \").concat(s * 3 / 4, \" \").concat(s, \" l 0 \").concat(-s / 4, \" l \").concat(s / 4, \" 0 M \").concat(s / 4, \" \").concat(s / 2, \" l 0 \").concat(s / 4, \" l \").concat(s / 4, \" 0 M \").concat(s / 2, \" \").concat(s / 4, \" l \").concat(s / 4, \" 0 l 0 \").concat(s / 4);\n\n      case 'waves':\n        return \"M 0 \".concat(s / 2, \" c \").concat(s / 8, \" \").concat(-s / 4, \" , \").concat(s * 3 / 8, \" \").concat(-s / 4, \" , \").concat(s / 2, \" 0 c \").concat(s / 8, \" \").concat(s / 4, \" , \").concat(s * 3 / 8, \" \").concat(s / 4, \" , \").concat(s / 2, \" 0 M \").concat(-s / 2, \" \").concat(s / 2, \" c \").concat(s / 8, \" \").concat(s / 4, \" , \").concat(s * 3 / 8, \" \").concat(s / 4, \" , \").concat(s / 2, \" 0 M \").concat(s, \" \").concat(s / 2, \" c \").concat(s / 8, \" \").concat(-s / 4, \" , \").concat(s * 3 / 8, \" \").concat(-s / 4, \" , \").concat(s / 2, \" 0\");\n\n      case 'woven':\n        return \"M \".concat(s / 4, \",\").concat(s / 4, \"l\").concat(s / 2, \",\").concat(s / 2, \"M\").concat(s * 3 / 4, \",\").concat(s / 4, \"l\").concat(s / 2, \",\").concat(-s / 2, \" M\").concat(s / 4, \",\").concat(s * 3 / 4, \"l\").concat(-s / 2, \",\").concat(s / 2, \"M\").concat(s * 3 / 4, \",\").concat(s * 5 / 4, \"l\").concat(s / 2, \",\").concat(-s / 2, \" M\").concat(-s / 4, \",\").concat(s / 4, \"l\").concat(s / 2, \",\").concat(-s / 2);\n\n      case 'crosses':\n        return \"M \".concat(s / 4, \",\").concat(s / 4, \"l\").concat(s / 2, \",\").concat(s / 2, \"M\").concat(s / 4, \",\").concat(s * 3 / 4, \"l\").concat(s / 2, \",\").concat(-s / 2);\n\n      case 'caps':\n        return \"M \".concat(s / 4, \",\").concat(s * 3 / 4, \"l\").concat(s / 4, \",\").concat(-s / 2, \"l\").concat(s / 4, \",\").concat(s / 2);\n\n      case 'hexagons':\n        width = 3;\n        height = Math.sqrt(3);\n        return \"M \".concat(s, \",0 l \").concat(s, \",0 l \").concat(s / 2, \",\").concat(s * Math.sqrt(3) / 2, \" l \").concat(-s / 2, \",\").concat(s * Math.sqrt(3) / 2, \" l \").concat(-s, \",0 l \").concat(-s / 2, \",\").concat(-s * Math.sqrt(3) / 2, \" Z M 0,\").concat(s * Math.sqrt(3) / 2, \" l \").concat(s / 2, \",0 M \").concat(3 * s, \",\").concat(s * Math.sqrt(3) / 2, \" l \").concat(-s / 2, \",0\");\n\n      default:\n        return _(s);\n    }\n  };\n\n  var $ = function $(selection) {\n    var p = path(d);\n    var group = selection.append('defs').append('pattern').attr('id', id).attr('patternUnits', 'userSpaceOnUse').attr('width', size * width).attr('height', size * height);\n\n    if (background) {\n      group.append('rect').attr('width', size * width).attr('height', size * height).attr('fill', background);\n    }\n\n    group.append('path').attr('d', p).attr('fill', fill).attr('stroke', stroke).attr('stroke-width', strokeWidth).attr('stroke-linecap', 'square').attr('shape-rendering', shapeRendering);\n  };\n\n  $.heavier = function (_) {\n    if (arguments.length === 0) {\n      strokeWidth *= 2;\n    } else {\n      strokeWidth *= 2 * _;\n    }\n\n    return $;\n  };\n\n  $.lighter = function (_) {\n    if (arguments.length === 0) {\n      strokeWidth /= 2;\n    } else {\n      strokeWidth /= 2 * _;\n    }\n\n    return $;\n  };\n\n  $.thinner = function (_) {\n    if (arguments.length === 0) {\n      size *= 2;\n    } else {\n      size *= 2 * _;\n    }\n\n    return $;\n  };\n\n  $.thicker = function (_) {\n    if (arguments.length === 0) {\n      size /= 2;\n    } else {\n      size /= 2 * _;\n    }\n\n    return $;\n  };\n\n  $.background = function (_) {\n    background = _;\n    return $;\n  };\n\n  $.shapeRendering = function (_) {\n    shapeRendering = _;\n    return $;\n  };\n\n  $.size = function (_) {\n    size = _;\n    return $;\n  };\n\n  $.d = function (_) {\n    d = _;\n    return $;\n  };\n\n  $.fill = function (_) {\n    fill = _;\n    return $;\n  };\n\n  $.stroke = function (_) {\n    stroke = _;\n    return $;\n  };\n\n  $.strokeWidth = function (_) {\n    strokeWidth = _;\n    return $;\n  };\n\n  $.id = function (_) {\n    if (arguments.length === 0) {\n      return id;\n    }\n\n    id = _;\n    return $;\n  };\n\n  $.url = function () {\n    return \"url(#\".concat(id, \")\");\n  };\n\n  return $;\n});\n\nvar main = {\n  circles: circles,\n  lines: lines,\n  paths: paths\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (main);\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/textures/dist/textures.esm.js?");
  
  /***/ }),
  
  /***/ "./node_modules/tinycolor2/tinycolor.js":
  /*!**********************************************!*\
    !*** ./node_modules/tinycolor2/tinycolor.js ***!
    \**********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var __WEBPACK_AMD_DEFINE_RESULT__;// TinyColor v1.4.1\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\n(function(Math) {\n\nvar trimLeft = /^\\s+/,\n    trimRight = /\\s+$/,\n    tinyCounter = 0,\n    mathRound = Math.round,\n    mathMin = Math.min,\n    mathMax = Math.max,\n    mathRandom = Math.random;\n\nfunction tinycolor (color, opts) {\n\n    color = (color) ? color : '';\n    opts = opts || { };\n\n    // If input is already a tinycolor, return itself\n    if (color instanceof tinycolor) {\n       return color;\n    }\n    // If we are called as a function, call using new instead\n    if (!(this instanceof tinycolor)) {\n        return new tinycolor(color, opts);\n    }\n\n    var rgb = inputToRGB(color);\n    this._originalInput = color,\n    this._r = rgb.r,\n    this._g = rgb.g,\n    this._b = rgb.b,\n    this._a = rgb.a,\n    this._roundA = mathRound(100*this._a) / 100,\n    this._format = opts.format || rgb.format;\n    this._gradientType = opts.gradientType;\n\n    // Don't let the range of [0,255] come back in [0,1].\n    // Potentially lose a little bit of precision here, but will fix issues where\n    // .5 gets interpreted as half of the total, instead of half of 1\n    // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n    if (this._r < 1) { this._r = mathRound(this._r); }\n    if (this._g < 1) { this._g = mathRound(this._g); }\n    if (this._b < 1) { this._b = mathRound(this._b); }\n\n    this._ok = rgb.ok;\n    this._tc_id = tinyCounter++;\n}\n\ntinycolor.prototype = {\n    isDark: function() {\n        return this.getBrightness() < 128;\n    },\n    isLight: function() {\n        return !this.isDark();\n    },\n    isValid: function() {\n        return this._ok;\n    },\n    getOriginalInput: function() {\n      return this._originalInput;\n    },\n    getFormat: function() {\n        return this._format;\n    },\n    getAlpha: function() {\n        return this._a;\n    },\n    getBrightness: function() {\n        //http://www.w3.org/TR/AERT#color-contrast\n        var rgb = this.toRgb();\n        return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n    },\n    getLuminance: function() {\n        //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n        var rgb = this.toRgb();\n        var RsRGB, GsRGB, BsRGB, R, G, B;\n        RsRGB = rgb.r/255;\n        GsRGB = rgb.g/255;\n        BsRGB = rgb.b/255;\n\n        if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\n        if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\n        if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\n        return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\n    },\n    setAlpha: function(value) {\n        this._a = boundAlpha(value);\n        this._roundA = mathRound(100*this._a) / 100;\n        return this;\n    },\n    toHsv: function() {\n        var hsv = rgbToHsv(this._r, this._g, this._b);\n        return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\n    },\n    toHsvString: function() {\n        var hsv = rgbToHsv(this._r, this._g, this._b);\n        var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\n        return (this._a == 1) ?\n          \"hsv(\"  + h + \", \" + s + \"%, \" + v + \"%)\" :\n          \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\n    },\n    toHsl: function() {\n        var hsl = rgbToHsl(this._r, this._g, this._b);\n        return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\n    },\n    toHslString: function() {\n        var hsl = rgbToHsl(this._r, this._g, this._b);\n        var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\n        return (this._a == 1) ?\n          \"hsl(\"  + h + \", \" + s + \"%, \" + l + \"%)\" :\n          \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\n    },\n    toHex: function(allow3Char) {\n        return rgbToHex(this._r, this._g, this._b, allow3Char);\n    },\n    toHexString: function(allow3Char) {\n        return '#' + this.toHex(allow3Char);\n    },\n    toHex8: function(allow4Char) {\n        return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n    },\n    toHex8String: function(allow4Char) {\n        return '#' + this.toHex8(allow4Char);\n    },\n    toRgb: function() {\n        return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\n    },\n    toRgbString: function() {\n        return (this._a == 1) ?\n          \"rgb(\"  + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\n          \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\n    },\n    toPercentageRgb: function() {\n        return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\n    },\n    toPercentageRgbString: function() {\n        return (this._a == 1) ?\n          \"rgb(\"  + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\n          \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n    },\n    toName: function() {\n        if (this._a === 0) {\n            return \"transparent\";\n        }\n\n        if (this._a < 1) {\n            return false;\n        }\n\n        return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n    },\n    toFilter: function(secondColor) {\n        var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n        var secondHex8String = hex8String;\n        var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n\n        if (secondColor) {\n            var s = tinycolor(secondColor);\n            secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n        }\n\n        return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\n    },\n    toString: function(format) {\n        var formatSet = !!format;\n        format = format || this._format;\n\n        var formattedString = false;\n        var hasAlpha = this._a < 1 && this._a >= 0;\n        var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n\n        if (needsAlphaFormat) {\n            // Special case for \"transparent\", all other non-alpha formats\n            // will return rgba when there is transparency.\n            if (format === \"name\" && this._a === 0) {\n                return this.toName();\n            }\n            return this.toRgbString();\n        }\n        if (format === \"rgb\") {\n            formattedString = this.toRgbString();\n        }\n        if (format === \"prgb\") {\n            formattedString = this.toPercentageRgbString();\n        }\n        if (format === \"hex\" || format === \"hex6\") {\n            formattedString = this.toHexString();\n        }\n        if (format === \"hex3\") {\n            formattedString = this.toHexString(true);\n        }\n        if (format === \"hex4\") {\n            formattedString = this.toHex8String(true);\n        }\n        if (format === \"hex8\") {\n            formattedString = this.toHex8String();\n        }\n        if (format === \"name\") {\n            formattedString = this.toName();\n        }\n        if (format === \"hsl\") {\n            formattedString = this.toHslString();\n        }\n        if (format === \"hsv\") {\n            formattedString = this.toHsvString();\n        }\n\n        return formattedString || this.toHexString();\n    },\n    clone: function() {\n        return tinycolor(this.toString());\n    },\n\n    _applyModification: function(fn, args) {\n        var color = fn.apply(null, [this].concat([].slice.call(args)));\n        this._r = color._r;\n        this._g = color._g;\n        this._b = color._b;\n        this.setAlpha(color._a);\n        return this;\n    },\n    lighten: function() {\n        return this._applyModification(lighten, arguments);\n    },\n    brighten: function() {\n        return this._applyModification(brighten, arguments);\n    },\n    darken: function() {\n        return this._applyModification(darken, arguments);\n    },\n    desaturate: function() {\n        return this._applyModification(desaturate, arguments);\n    },\n    saturate: function() {\n        return this._applyModification(saturate, arguments);\n    },\n    greyscale: function() {\n        return this._applyModification(greyscale, arguments);\n    },\n    spin: function() {\n        return this._applyModification(spin, arguments);\n    },\n\n    _applyCombination: function(fn, args) {\n        return fn.apply(null, [this].concat([].slice.call(args)));\n    },\n    analogous: function() {\n        return this._applyCombination(analogous, arguments);\n    },\n    complement: function() {\n        return this._applyCombination(complement, arguments);\n    },\n    monochromatic: function() {\n        return this._applyCombination(monochromatic, arguments);\n    },\n    splitcomplement: function() {\n        return this._applyCombination(splitcomplement, arguments);\n    },\n    triad: function() {\n        return this._applyCombination(triad, arguments);\n    },\n    tetrad: function() {\n        return this._applyCombination(tetrad, arguments);\n    }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function(color, opts) {\n    if (typeof color == \"object\") {\n        var newColor = {};\n        for (var i in color) {\n            if (color.hasOwnProperty(i)) {\n                if (i === \"a\") {\n                    newColor[i] = color[i];\n                }\n                else {\n                    newColor[i] = convertToPercentage(color[i]);\n                }\n            }\n        }\n        color = newColor;\n    }\n\n    return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n//     \"red\"\n//     \"#f00\" or \"f00\"\n//     \"#ff0000\" or \"ff0000\"\n//     \"#ff000000\" or \"ff000000\"\n//     \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n//     \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n//     \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n//     \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n//     \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n//     \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n//     \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n\n    var rgb = { r: 0, g: 0, b: 0 };\n    var a = 1;\n    var s = null;\n    var v = null;\n    var l = null;\n    var ok = false;\n    var format = false;\n\n    if (typeof color == \"string\") {\n        color = stringInputToObject(color);\n    }\n\n    if (typeof color == \"object\") {\n        if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n            rgb = rgbToRgb(color.r, color.g, color.b);\n            ok = true;\n            format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n            s = convertToPercentage(color.s);\n            v = convertToPercentage(color.v);\n            rgb = hsvToRgb(color.h, s, v);\n            ok = true;\n            format = \"hsv\";\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n            s = convertToPercentage(color.s);\n            l = convertToPercentage(color.l);\n            rgb = hslToRgb(color.h, s, l);\n            ok = true;\n            format = \"hsl\";\n        }\n\n        if (color.hasOwnProperty(\"a\")) {\n            a = color.a;\n        }\n    }\n\n    a = boundAlpha(a);\n\n    return {\n        ok: ok,\n        format: color.format || format,\n        r: mathMin(255, mathMax(rgb.r, 0)),\n        g: mathMin(255, mathMax(rgb.g, 0)),\n        b: mathMin(255, mathMax(rgb.b, 0)),\n        a: a\n    };\n}\n\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b){\n    return {\n        r: bound01(r, 255) * 255,\n        g: bound01(g, 255) * 255,\n        b: bound01(b, 255) * 255\n    };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    var max = mathMax(r, g, b), min = mathMin(r, g, b);\n    var h, s, l = (max + min) / 2;\n\n    if(max == min) {\n        h = s = 0; // achromatic\n    }\n    else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n        switch(max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n        }\n\n        h /= 6;\n    }\n\n    return { h: h, s: s, l: l };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n    var r, g, b;\n\n    h = bound01(h, 360);\n    s = bound01(s, 100);\n    l = bound01(l, 100);\n\n    function hue2rgb(p, q, t) {\n        if(t < 0) t += 1;\n        if(t > 1) t -= 1;\n        if(t < 1/6) return p + (q - p) * 6 * t;\n        if(t < 1/2) return q;\n        if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n        return p;\n    }\n\n    if(s === 0) {\n        r = g = b = l; // achromatic\n    }\n    else {\n        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        var p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1/3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - 1/3);\n    }\n\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n\n    r = bound01(r, 255);\n    g = bound01(g, 255);\n    b = bound01(b, 255);\n\n    var max = mathMax(r, g, b), min = mathMin(r, g, b);\n    var h, s, v = max;\n\n    var d = max - min;\n    s = max === 0 ? 0 : d / max;\n\n    if(max == min) {\n        h = 0; // achromatic\n    }\n    else {\n        switch(max) {\n            case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n            case g: h = (b - r) / d + 2; break;\n            case b: h = (r - g) / d + 4; break;\n        }\n        h /= 6;\n    }\n    return { h: h, s: s, v: v };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\n function hsvToRgb(h, s, v) {\n\n    h = bound01(h, 360) * 6;\n    s = bound01(s, 100);\n    v = bound01(v, 100);\n\n    var i = Math.floor(h),\n        f = h - i,\n        p = v * (1 - s),\n        q = v * (1 - f * s),\n        t = v * (1 - (1 - f) * s),\n        mod = i % 6,\n        r = [v, q, p, p, t, v][mod],\n        g = [t, v, v, q, p, p][mod],\n        b = [p, p, t, v, v, q][mod];\n\n    return { r: r * 255, g: g * 255, b: b * 255 };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n\n    var hex = [\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16))\n    ];\n\n    // Return a 3 character hex if possible\n    if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n    }\n\n    return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n\n    var hex = [\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16)),\n        pad2(convertDecimalToHex(a))\n    ];\n\n    // Return a 4 character hex if possible\n    if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n    }\n\n    return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n\n    var hex = [\n        pad2(convertDecimalToHex(a)),\n        pad2(mathRound(r).toString(16)),\n        pad2(mathRound(g).toString(16)),\n        pad2(mathRound(b).toString(16))\n    ];\n\n    return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n    if (!color1 || !color2) { return false; }\n    return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\n\ntinycolor.random = function() {\n    return tinycolor.fromRatio({\n        r: mathRandom(),\n        g: mathRandom(),\n        b: mathRandom()\n    });\n};\n\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction desaturate(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.s -= amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n}\n\nfunction saturate(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.s += amount / 100;\n    hsl.s = clamp01(hsl.s);\n    return tinycolor(hsl);\n}\n\nfunction greyscale(color) {\n    return tinycolor(color).desaturate(100);\n}\n\nfunction lighten (color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.l += amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n}\n\nfunction brighten(color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var rgb = tinycolor(color).toRgb();\n    rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\n    rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\n    rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\n    return tinycolor(rgb);\n}\n\nfunction darken (color, amount) {\n    amount = (amount === 0) ? 0 : (amount || 10);\n    var hsl = tinycolor(color).toHsl();\n    hsl.l -= amount / 100;\n    hsl.l = clamp01(hsl.l);\n    return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction spin(color, amount) {\n    var hsl = tinycolor(color).toHsl();\n    var hue = (hsl.h + amount) % 360;\n    hsl.h = hue < 0 ? 360 + hue : hue;\n    return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction complement(color) {\n    var hsl = tinycolor(color).toHsl();\n    hsl.h = (hsl.h + 180) % 360;\n    return tinycolor(hsl);\n}\n\nfunction triad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\n    ];\n}\n\nfunction tetrad(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\n        tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\n    ];\n}\n\nfunction splitcomplement(color) {\n    var hsl = tinycolor(color).toHsl();\n    var h = hsl.h;\n    return [\n        tinycolor(color),\n        tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\n        tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\n    ];\n}\n\nfunction analogous(color, results, slices) {\n    results = results || 6;\n    slices = slices || 30;\n\n    var hsl = tinycolor(color).toHsl();\n    var part = 360 / slices;\n    var ret = [tinycolor(color)];\n\n    for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\n        hsl.h = (hsl.h + part) % 360;\n        ret.push(tinycolor(hsl));\n    }\n    return ret;\n}\n\nfunction monochromatic(color, results) {\n    results = results || 6;\n    var hsv = tinycolor(color).toHsv();\n    var h = hsv.h, s = hsv.s, v = hsv.v;\n    var ret = [];\n    var modification = 1 / results;\n\n    while (results--) {\n        ret.push(tinycolor({ h: h, s: s, v: v}));\n        v = (v + modification) % 1;\n    }\n\n    return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function(color1, color2, amount) {\n    amount = (amount === 0) ? 0 : (amount || 50);\n\n    var rgb1 = tinycolor(color1).toRgb();\n    var rgb2 = tinycolor(color2).toRgb();\n\n    var p = amount / 100;\n\n    var rgba = {\n        r: ((rgb2.r - rgb1.r) * p) + rgb1.r,\n        g: ((rgb2.g - rgb1.g) * p) + rgb1.g,\n        b: ((rgb2.b - rgb1.b) * p) + rgb1.b,\n        a: ((rgb2.a - rgb1.a) * p) + rgb1.a\n    };\n\n    return tinycolor(rgba);\n};\n\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function(color1, color2) {\n    var c1 = tinycolor(color1);\n    var c2 = tinycolor(color2);\n    return (Math.max(c1.getLuminance(),c2.getLuminance())+0.05) / (Math.min(c1.getLuminance(),c2.getLuminance())+0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n//      the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n//      the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n//    tinycolor.isReadable(\"#000\", \"#111\") => false\n//    tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function(color1, color2, wcag2) {\n    var readability = tinycolor.readability(color1, color2);\n    var wcag2Parms, out;\n\n    out = false;\n\n    wcag2Parms = validateWCAG2Parms(wcag2);\n    switch (wcag2Parms.level + wcag2Parms.size) {\n        case \"AAsmall\":\n        case \"AAAlarge\":\n            out = readability >= 4.5;\n            break;\n        case \"AAlarge\":\n            out = readability >= 3;\n            break;\n        case \"AAAsmall\":\n            out = readability >= 7;\n            break;\n    }\n    return out;\n\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n//    tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString();  // \"#ffffff\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n//    tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function(baseColor, colorList, args) {\n    var bestColor = null;\n    var bestScore = 0;\n    var readability;\n    var includeFallbackColors, level, size ;\n    args = args || {};\n    includeFallbackColors = args.includeFallbackColors ;\n    level = args.level;\n    size = args.size;\n\n    for (var i= 0; i < colorList.length ; i++) {\n        readability = tinycolor.readability(baseColor, colorList[i]);\n        if (readability > bestScore) {\n            bestScore = readability;\n            bestColor = tinycolor(colorList[i]);\n        }\n    }\n\n    if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\n        return bestColor;\n    }\n    else {\n        args.includeFallbackColors=false;\n        return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\n    }\n};\n\n\n// Big List of Colors\n// ------------------\n// <http://www.w3.org/TR/css3-color/#svg-color>\nvar names = tinycolor.names = {\n    aliceblue: \"f0f8ff\",\n    antiquewhite: \"faebd7\",\n    aqua: \"0ff\",\n    aquamarine: \"7fffd4\",\n    azure: \"f0ffff\",\n    beige: \"f5f5dc\",\n    bisque: \"ffe4c4\",\n    black: \"000\",\n    blanchedalmond: \"ffebcd\",\n    blue: \"00f\",\n    blueviolet: \"8a2be2\",\n    brown: \"a52a2a\",\n    burlywood: \"deb887\",\n    burntsienna: \"ea7e5d\",\n    cadetblue: \"5f9ea0\",\n    chartreuse: \"7fff00\",\n    chocolate: \"d2691e\",\n    coral: \"ff7f50\",\n    cornflowerblue: \"6495ed\",\n    cornsilk: \"fff8dc\",\n    crimson: \"dc143c\",\n    cyan: \"0ff\",\n    darkblue: \"00008b\",\n    darkcyan: \"008b8b\",\n    darkgoldenrod: \"b8860b\",\n    darkgray: \"a9a9a9\",\n    darkgreen: \"006400\",\n    darkgrey: \"a9a9a9\",\n    darkkhaki: \"bdb76b\",\n    darkmagenta: \"8b008b\",\n    darkolivegreen: \"556b2f\",\n    darkorange: \"ff8c00\",\n    darkorchid: \"9932cc\",\n    darkred: \"8b0000\",\n    darksalmon: \"e9967a\",\n    darkseagreen: \"8fbc8f\",\n    darkslateblue: \"483d8b\",\n    darkslategray: \"2f4f4f\",\n    darkslategrey: \"2f4f4f\",\n    darkturquoise: \"00ced1\",\n    darkviolet: \"9400d3\",\n    deeppink: \"ff1493\",\n    deepskyblue: \"00bfff\",\n    dimgray: \"696969\",\n    dimgrey: \"696969\",\n    dodgerblue: \"1e90ff\",\n    firebrick: \"b22222\",\n    floralwhite: \"fffaf0\",\n    forestgreen: \"228b22\",\n    fuchsia: \"f0f\",\n    gainsboro: \"dcdcdc\",\n    ghostwhite: \"f8f8ff\",\n    gold: \"ffd700\",\n    goldenrod: \"daa520\",\n    gray: \"808080\",\n    green: \"008000\",\n    greenyellow: \"adff2f\",\n    grey: \"808080\",\n    honeydew: \"f0fff0\",\n    hotpink: \"ff69b4\",\n    indianred: \"cd5c5c\",\n    indigo: \"4b0082\",\n    ivory: \"fffff0\",\n    khaki: \"f0e68c\",\n    lavender: \"e6e6fa\",\n    lavenderblush: \"fff0f5\",\n    lawngreen: \"7cfc00\",\n    lemonchiffon: \"fffacd\",\n    lightblue: \"add8e6\",\n    lightcoral: \"f08080\",\n    lightcyan: \"e0ffff\",\n    lightgoldenrodyellow: \"fafad2\",\n    lightgray: \"d3d3d3\",\n    lightgreen: \"90ee90\",\n    lightgrey: \"d3d3d3\",\n    lightpink: \"ffb6c1\",\n    lightsalmon: \"ffa07a\",\n    lightseagreen: \"20b2aa\",\n    lightskyblue: \"87cefa\",\n    lightslategray: \"789\",\n    lightslategrey: \"789\",\n    lightsteelblue: \"b0c4de\",\n    lightyellow: \"ffffe0\",\n    lime: \"0f0\",\n    limegreen: \"32cd32\",\n    linen: \"faf0e6\",\n    magenta: \"f0f\",\n    maroon: \"800000\",\n    mediumaquamarine: \"66cdaa\",\n    mediumblue: \"0000cd\",\n    mediumorchid: \"ba55d3\",\n    mediumpurple: \"9370db\",\n    mediumseagreen: \"3cb371\",\n    mediumslateblue: \"7b68ee\",\n    mediumspringgreen: \"00fa9a\",\n    mediumturquoise: \"48d1cc\",\n    mediumvioletred: \"c71585\",\n    midnightblue: \"191970\",\n    mintcream: \"f5fffa\",\n    mistyrose: \"ffe4e1\",\n    moccasin: \"ffe4b5\",\n    navajowhite: \"ffdead\",\n    navy: \"000080\",\n    oldlace: \"fdf5e6\",\n    olive: \"808000\",\n    olivedrab: \"6b8e23\",\n    orange: \"ffa500\",\n    orangered: \"ff4500\",\n    orchid: \"da70d6\",\n    palegoldenrod: \"eee8aa\",\n    palegreen: \"98fb98\",\n    paleturquoise: \"afeeee\",\n    palevioletred: \"db7093\",\n    papayawhip: \"ffefd5\",\n    peachpuff: \"ffdab9\",\n    peru: \"cd853f\",\n    pink: \"ffc0cb\",\n    plum: \"dda0dd\",\n    powderblue: \"b0e0e6\",\n    purple: \"800080\",\n    rebeccapurple: \"663399\",\n    red: \"f00\",\n    rosybrown: \"bc8f8f\",\n    royalblue: \"4169e1\",\n    saddlebrown: \"8b4513\",\n    salmon: \"fa8072\",\n    sandybrown: \"f4a460\",\n    seagreen: \"2e8b57\",\n    seashell: \"fff5ee\",\n    sienna: \"a0522d\",\n    silver: \"c0c0c0\",\n    skyblue: \"87ceeb\",\n    slateblue: \"6a5acd\",\n    slategray: \"708090\",\n    slategrey: \"708090\",\n    snow: \"fffafa\",\n    springgreen: \"00ff7f\",\n    steelblue: \"4682b4\",\n    tan: \"d2b48c\",\n    teal: \"008080\",\n    thistle: \"d8bfd8\",\n    tomato: \"ff6347\",\n    turquoise: \"40e0d0\",\n    violet: \"ee82ee\",\n    wheat: \"f5deb3\",\n    white: \"fff\",\n    whitesmoke: \"f5f5f5\",\n    yellow: \"ff0\",\n    yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n    var flipped = { };\n    for (var i in o) {\n        if (o.hasOwnProperty(i)) {\n            flipped[o[i]] = i;\n        }\n    }\n    return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n    a = parseFloat(a);\n\n    if (isNaN(a) || a < 0 || a > 1) {\n        a = 1;\n    }\n\n    return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n    if (isOnePointZero(n)) { n = \"100%\"; }\n\n    var processPercent = isPercentage(n);\n    n = mathMin(max, mathMax(0, parseFloat(n)));\n\n    // Automatically convert percentage into number\n    if (processPercent) {\n        n = parseInt(n * max, 10) / 100;\n    }\n\n    // Handle floating point rounding errors\n    if ((Math.abs(n - max) < 0.000001)) {\n        return 1;\n    }\n\n    // Convert into [0, 1] range if it isn't already\n    return (n % max) / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n    return mathMin(1, mathMax(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n    return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n    return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n    return typeof n === \"string\" && n.indexOf('%') != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n    return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n    if (n <= 1) {\n        n = (n * 100) + \"%\";\n    }\n\n    return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n    return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n    return (parseIntFromHex(h) / 255);\n}\n\nvar matchers = (function() {\n\n    // <http://www.w3.org/TR/css3-values/#integers>\n    var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n    // <http://www.w3.org/TR/css3-values/#number-value>\n    var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n    // Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\n    var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n    // Actual matching.\n    // Parentheses and commas are optional, but not required.\n    // Whitespace can take the place of commas or opening paren\n    var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n    var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n\n    return {\n        CSS_UNIT: new RegExp(CSS_UNIT),\n        rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n        rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n        hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n        hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n        hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n        hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n        hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n        hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n        hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n        hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n    };\n})();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n    return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing.  Take in a number of formats, and output an object\n// based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n\n    color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\n    var named = false;\n    if (names[color]) {\n        color = names[color];\n        named = true;\n    }\n    else if (color == 'transparent') {\n        return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\n    }\n\n    // Try to match string input using regular expressions.\n    // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n    // Just return an object and let the conversion functions handle that.\n    // This way the result will be the same whether the tinycolor is initialized with string or object.\n    var match;\n    if ((match = matchers.rgb.exec(color))) {\n        return { r: match[1], g: match[2], b: match[3] };\n    }\n    if ((match = matchers.rgba.exec(color))) {\n        return { r: match[1], g: match[2], b: match[3], a: match[4] };\n    }\n    if ((match = matchers.hsl.exec(color))) {\n        return { h: match[1], s: match[2], l: match[3] };\n    }\n    if ((match = matchers.hsla.exec(color))) {\n        return { h: match[1], s: match[2], l: match[3], a: match[4] };\n    }\n    if ((match = matchers.hsv.exec(color))) {\n        return { h: match[1], s: match[2], v: match[3] };\n    }\n    if ((match = matchers.hsva.exec(color))) {\n        return { h: match[1], s: match[2], v: match[3], a: match[4] };\n    }\n    if ((match = matchers.hex8.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            a: convertHexToDecimal(match[4]),\n            format: named ? \"name\" : \"hex8\"\n        };\n    }\n    if ((match = matchers.hex6.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            format: named ? \"name\" : \"hex\"\n        };\n    }\n    if ((match = matchers.hex4.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1] + '' + match[1]),\n            g: parseIntFromHex(match[2] + '' + match[2]),\n            b: parseIntFromHex(match[3] + '' + match[3]),\n            a: convertHexToDecimal(match[4] + '' + match[4]),\n            format: named ? \"name\" : \"hex8\"\n        };\n    }\n    if ((match = matchers.hex3.exec(color))) {\n        return {\n            r: parseIntFromHex(match[1] + '' + match[1]),\n            g: parseIntFromHex(match[2] + '' + match[2]),\n            b: parseIntFromHex(match[3] + '' + match[3]),\n            format: named ? \"name\" : \"hex\"\n        };\n    }\n\n    return false;\n}\n\nfunction validateWCAG2Parms(parms) {\n    // return valid WCAG2 parms for isReadable.\n    // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n    var level, size;\n    parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\n    level = (parms.level || \"AA\").toUpperCase();\n    size = (parms.size || \"small\").toLowerCase();\n    if (level !== \"AA\" && level !== \"AAA\") {\n        level = \"AA\";\n    }\n    if (size !== \"small\" && size !== \"large\") {\n        size = \"small\";\n    }\n    return {\"level\":level, \"size\":size};\n}\n\n// Node: Export function\nif ( true && module.exports) {\n    module.exports = tinycolor;\n}\n// AMD/requirejs: Define the module\nelse if (true) {\n    !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {return tinycolor;}).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n}\n// Browser: Expose to window\nelse {}\n\n})(Math);\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/tinycolor2/tinycolor.js?");
  
  /***/ }),
  
  /***/ "./node_modules/url/url.js":
  /*!*********************************!*\
    !*** ./node_modules/url/url.js ***!
    \*********************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar punycode = __webpack_require__(/*! punycode */ \"./node_modules/node-libs-browser/node_modules/punycode/punycode.js\");\nvar util = __webpack_require__(/*! ./util */ \"./node_modules/url/util.js\");\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.host = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.query = null;\n  this.pathname = null;\n  this.path = null;\n  this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n    portPattern = /:[0-9]*$/,\n\n    // Special case for a simple path URL\n    simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n    // RFC 2396: characters reserved for delimiting URLs.\n    // We actually just auto-escape these.\n    delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n    // RFC 2396: characters not allowed for various reasons.\n    unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n    // Allowed by RFCs, but cause of XSS attacks.  Always escape these.\n    autoEscape = ['\\''].concat(unwise),\n    // Characters that are never ever allowed in a hostname.\n    // Note that any invalid chars are also handled, but these\n    // are the ones that are *expected* to be seen, so we fast-path\n    // them.\n    nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n    hostEndingChars = ['/', '?', '#'],\n    hostnameMaxLen = 255,\n    hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n    hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n    // protocols that can allow \"unsafe\" and \"unwise\" chars.\n    unsafeProtocol = {\n      'javascript': true,\n      'javascript:': true\n    },\n    // protocols that never have a hostname.\n    hostlessProtocol = {\n      'javascript': true,\n      'javascript:': true\n    },\n    // protocols that always contain a // bit.\n    slashedProtocol = {\n      'http': true,\n      'https': true,\n      'ftp': true,\n      'gopher': true,\n      'file': true,\n      'http:': true,\n      'https:': true,\n      'ftp:': true,\n      'gopher:': true,\n      'file:': true\n    },\n    querystring = __webpack_require__(/*! querystring */ \"./node_modules/querystring-es3/index.js\");\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n  if (url && util.isObject(url) && url instanceof Url) return url;\n\n  var u = new Url;\n  u.parse(url, parseQueryString, slashesDenoteHost);\n  return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n  if (!util.isString(url)) {\n    throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n  }\n\n  // Copy chrome, IE, opera backslash-handling behavior.\n  // Back slashes before the query string get converted to forward slashes\n  // See: https://code.google.com/p/chromium/issues/detail?id=25916\n  var queryIndex = url.indexOf('?'),\n      splitter =\n          (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n      uSplit = url.split(splitter),\n      slashRegex = /\\\\/g;\n  uSplit[0] = uSplit[0].replace(slashRegex, '/');\n  url = uSplit.join(splitter);\n\n  var rest = url;\n\n  // trim before proceeding.\n  // This is to support parse stuff like \"  http://foo.com  \\n\"\n  rest = rest.trim();\n\n  if (!slashesDenoteHost && url.split('#').length === 1) {\n    // Try fast path regexp\n    var simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.path = rest;\n      this.href = rest;\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n        if (parseQueryString) {\n          this.query = querystring.parse(this.search.substr(1));\n        } else {\n          this.query = this.search.substr(1);\n        }\n      } else if (parseQueryString) {\n        this.search = '';\n        this.query = {};\n      }\n      return this;\n    }\n  }\n\n  var proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    var lowerProto = proto.toLowerCase();\n    this.protocol = lowerProto;\n    rest = rest.substr(proto.length);\n  }\n\n  // figure out if it's got a host\n  // user@server is *always* interpreted as a hostname, and url\n  // resolution will treat //foo/bar as host=foo,path=bar because that's\n  // how the browser resolves relative URLs.\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n    var slashes = rest.substr(0, 2) === '//';\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n\n  if (!hostlessProtocol[proto] &&\n      (slashes || (proto && !slashedProtocol[proto]))) {\n\n    // there's a hostname.\n    // the first instance of /, ?, ;, or # ends the host.\n    //\n    // If there is an @ in the hostname, then non-host chars *are* allowed\n    // to the left of the last @ sign, unless some host-ending character\n    // comes *before* the @-sign.\n    // URLs are obnoxious.\n    //\n    // ex:\n    // http://a@b@c/ => user:a@b host:c\n    // http://a@b?@c => user:a host:c path:/?@c\n\n    // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n    // Review our test case against browsers more comprehensively.\n\n    // find the first instance of any hostEndingChars\n    var hostEnd = -1;\n    for (var i = 0; i < hostEndingChars.length; i++) {\n      var hec = rest.indexOf(hostEndingChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n        hostEnd = hec;\n    }\n\n    // at this point, either we have an explicit point where the\n    // auth portion cannot go past, or the last @ char is the decider.\n    var auth, atSign;\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf('@');\n    } else {\n      // atSign must be in auth portion.\n      // http://a@b/c@d => host:b auth:a path:/c@d\n      atSign = rest.lastIndexOf('@', hostEnd);\n    }\n\n    // Now we have a portion which is definitely the auth.\n    // Pull that off.\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = decodeURIComponent(auth);\n    }\n\n    // the host is the remaining to the left of the first non-host char\n    hostEnd = -1;\n    for (var i = 0; i < nonHostChars.length; i++) {\n      var hec = rest.indexOf(nonHostChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n        hostEnd = hec;\n    }\n    // if we still have not hit it, then the entire thing is a host.\n    if (hostEnd === -1)\n      hostEnd = rest.length;\n\n    this.host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n\n    // pull out port.\n    this.parseHost();\n\n    // we've indicated that there is a hostname,\n    // so even if it's empty, it has to be present.\n    this.hostname = this.hostname || '';\n\n    // if hostname begins with [ and ends with ]\n    // assume that it's an IPv6 address.\n    var ipv6Hostname = this.hostname[0] === '[' &&\n        this.hostname[this.hostname.length - 1] === ']';\n\n    // validate a little.\n    if (!ipv6Hostname) {\n      var hostparts = this.hostname.split(/\\./);\n      for (var i = 0, l = hostparts.length; i < l; i++) {\n        var part = hostparts[i];\n        if (!part) continue;\n        if (!part.match(hostnamePartPattern)) {\n          var newpart = '';\n          for (var j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              // we replace non-ASCII char with a temporary placeholder\n              // we need this to make sure size of hostname is not\n              // broken by replacing non-ASCII by nothing\n              newpart += 'x';\n            } else {\n              newpart += part[j];\n            }\n          }\n          // we test again with ASCII char only\n          if (!newpart.match(hostnamePartPattern)) {\n            var validParts = hostparts.slice(0, i);\n            var notHost = hostparts.slice(i + 1);\n            var bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = '/' + notHost.join('.') + rest;\n            }\n            this.hostname = validParts.join('.');\n            break;\n          }\n        }\n      }\n    }\n\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = '';\n    } else {\n      // hostnames are always lower case.\n      this.hostname = this.hostname.toLowerCase();\n    }\n\n    if (!ipv6Hostname) {\n      // IDNA Support: Returns a punycoded representation of \"domain\".\n      // It only converts parts of the domain name that\n      // have non-ASCII characters, i.e. it doesn't matter if\n      // you call it with a domain that already is ASCII-only.\n      this.hostname = punycode.toASCII(this.hostname);\n    }\n\n    var p = this.port ? ':' + this.port : '';\n    var h = this.hostname || '';\n    this.host = h + p;\n    this.href += this.host;\n\n    // strip [ and ] from the hostname\n    // the host field still retains them, though\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n      if (rest[0] !== '/') {\n        rest = '/' + rest;\n      }\n    }\n  }\n\n  // now rest is set to the post-host stuff.\n  // chop off any delim chars.\n  if (!unsafeProtocol[lowerProto]) {\n\n    // First, make 100% sure that any \"autoEscape\" chars get\n    // escaped, even if encodeURIComponent doesn't think they\n    // need to be.\n    for (var i = 0, l = autoEscape.length; i < l; i++) {\n      var ae = autoEscape[i];\n      if (rest.indexOf(ae) === -1)\n        continue;\n      var esc = encodeURIComponent(ae);\n      if (esc === ae) {\n        esc = escape(ae);\n      }\n      rest = rest.split(ae).join(esc);\n    }\n  }\n\n\n  // chop off from the tail first.\n  var hash = rest.indexOf('#');\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  var qm = rest.indexOf('?');\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    this.query = rest.substr(qm + 1);\n    if (parseQueryString) {\n      this.query = querystring.parse(this.query);\n    }\n    rest = rest.slice(0, qm);\n  } else if (parseQueryString) {\n    // no query string, but parseQueryString still requested\n    this.search = '';\n    this.query = {};\n  }\n  if (rest) this.pathname = rest;\n  if (slashedProtocol[lowerProto] &&\n      this.hostname && !this.pathname) {\n    this.pathname = '/';\n  }\n\n  //to support http.request\n  if (this.pathname || this.search) {\n    var p = this.pathname || '';\n    var s = this.search || '';\n    this.path = p + s;\n  }\n\n  // finally, reconstruct the href based on what has been validated.\n  this.href = this.format();\n  return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n  // ensure it's an object, and not a string url.\n  // If it's an obj, this is a no-op.\n  // this way, you can call url_format() on strings\n  // to clean up potentially wonky urls.\n  if (util.isString(obj)) obj = urlParse(obj);\n  if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n  return obj.format();\n}\n\nUrl.prototype.format = function() {\n  var auth = this.auth || '';\n  if (auth) {\n    auth = encodeURIComponent(auth);\n    auth = auth.replace(/%3A/i, ':');\n    auth += '@';\n  }\n\n  var protocol = this.protocol || '',\n      pathname = this.pathname || '',\n      hash = this.hash || '',\n      host = false,\n      query = '';\n\n  if (this.host) {\n    host = auth + this.host;\n  } else if (this.hostname) {\n    host = auth + (this.hostname.indexOf(':') === -1 ?\n        this.hostname :\n        '[' + this.hostname + ']');\n    if (this.port) {\n      host += ':' + this.port;\n    }\n  }\n\n  if (this.query &&\n      util.isObject(this.query) &&\n      Object.keys(this.query).length) {\n    query = querystring.stringify(this.query);\n  }\n\n  var search = this.search || (query && ('?' + query)) || '';\n\n  if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n  // only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.\n  // unless they had them to begin with.\n  if (this.slashes ||\n      (!protocol || slashedProtocol[protocol]) && host !== false) {\n    host = '//' + (host || '');\n    if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n  } else if (!host) {\n    host = '';\n  }\n\n  if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n  if (search && search.charAt(0) !== '?') search = '?' + search;\n\n  pathname = pathname.replace(/[?#]/g, function(match) {\n    return encodeURIComponent(match);\n  });\n  search = search.replace('#', '%23');\n\n  return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n  return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n  return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n  if (!source) return relative;\n  return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n  if (util.isString(relative)) {\n    var rel = new Url();\n    rel.parse(relative, false, true);\n    relative = rel;\n  }\n\n  var result = new Url();\n  var tkeys = Object.keys(this);\n  for (var tk = 0; tk < tkeys.length; tk++) {\n    var tkey = tkeys[tk];\n    result[tkey] = this[tkey];\n  }\n\n  // hash is always overridden, no matter what.\n  // even href=\"\" will remove it.\n  result.hash = relative.hash;\n\n  // if the relative url is empty, then there's nothing left to do here.\n  if (relative.href === '') {\n    result.href = result.format();\n    return result;\n  }\n\n  // hrefs like //foo/bar always cut to the protocol.\n  if (relative.slashes && !relative.protocol) {\n    // take everything except the protocol from relative\n    var rkeys = Object.keys(relative);\n    for (var rk = 0; rk < rkeys.length; rk++) {\n      var rkey = rkeys[rk];\n      if (rkey !== 'protocol')\n        result[rkey] = relative[rkey];\n    }\n\n    //urlParse appends trailing / to urls like http://www.example.com\n    if (slashedProtocol[result.protocol] &&\n        result.hostname && !result.pathname) {\n      result.path = result.pathname = '/';\n    }\n\n    result.href = result.format();\n    return result;\n  }\n\n  if (relative.protocol && relative.protocol !== result.protocol) {\n    // if it's a known url protocol, then changing\n    // the protocol does weird things\n    // first, if it's not file:, then we MUST have a host,\n    // and if there was a path\n    // to begin with, then we MUST have a path.\n    // if it is file:, then the host is dropped,\n    // because that's known to be hostless.\n    // anything else is assumed to be absolute.\n    if (!slashedProtocol[relative.protocol]) {\n      var keys = Object.keys(relative);\n      for (var v = 0; v < keys.length; v++) {\n        var k = keys[v];\n        result[k] = relative[k];\n      }\n      result.href = result.format();\n      return result;\n    }\n\n    result.protocol = relative.protocol;\n    if (!relative.host && !hostlessProtocol[relative.protocol]) {\n      var relPath = (relative.pathname || '').split('/');\n      while (relPath.length && !(relative.host = relPath.shift()));\n      if (!relative.host) relative.host = '';\n      if (!relative.hostname) relative.hostname = '';\n      if (relPath[0] !== '') relPath.unshift('');\n      if (relPath.length < 2) relPath.unshift('');\n      result.pathname = relPath.join('/');\n    } else {\n      result.pathname = relative.pathname;\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    result.host = relative.host || '';\n    result.auth = relative.auth;\n    result.hostname = relative.hostname || relative.host;\n    result.port = relative.port;\n    // to support http.request\n    if (result.pathname || result.search) {\n      var p = result.pathname || '';\n      var s = result.search || '';\n      result.path = p + s;\n    }\n    result.slashes = result.slashes || relative.slashes;\n    result.href = result.format();\n    return result;\n  }\n\n  var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n      isRelAbs = (\n          relative.host ||\n          relative.pathname && relative.pathname.charAt(0) === '/'\n      ),\n      mustEndAbs = (isRelAbs || isSourceAbs ||\n                    (result.host && relative.pathname)),\n      removeAllDots = mustEndAbs,\n      srcPath = result.pathname && result.pathname.split('/') || [],\n      relPath = relative.pathname && relative.pathname.split('/') || [],\n      psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n  // if the url is a non-slashed url, then relative\n  // links like ../.. should be able\n  // to crawl up to the hostname, as well.  This is strange.\n  // result.protocol has already been set by now.\n  // Later on, put the first path part into the host field.\n  if (psychotic) {\n    result.hostname = '';\n    result.port = null;\n    if (result.host) {\n      if (srcPath[0] === '') srcPath[0] = result.host;\n      else srcPath.unshift(result.host);\n    }\n    result.host = '';\n    if (relative.protocol) {\n      relative.hostname = null;\n      relative.port = null;\n      if (relative.host) {\n        if (relPath[0] === '') relPath[0] = relative.host;\n        else relPath.unshift(relative.host);\n      }\n      relative.host = null;\n    }\n    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n  }\n\n  if (isRelAbs) {\n    // it's absolute.\n    result.host = (relative.host || relative.host === '') ?\n                  relative.host : result.host;\n    result.hostname = (relative.hostname || relative.hostname === '') ?\n                      relative.hostname : result.hostname;\n    result.search = relative.search;\n    result.query = relative.query;\n    srcPath = relPath;\n    // fall through to the dot-handling below.\n  } else if (relPath.length) {\n    // it's relative\n    // throw away the existing file, and take the new path instead.\n    if (!srcPath) srcPath = [];\n    srcPath.pop();\n    srcPath = srcPath.concat(relPath);\n    result.search = relative.search;\n    result.query = relative.query;\n  } else if (!util.isNullOrUndefined(relative.search)) {\n    // just pull out the search.\n    // like href='?foo'.\n    // Put this after the other two cases because it simplifies the booleans\n    if (psychotic) {\n      result.hostname = result.host = srcPath.shift();\n      //occationaly the auth can get stuck only in host\n      //this especially happens in cases like\n      //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n      var authInHost = result.host && result.host.indexOf('@') > 0 ?\n                       result.host.split('@') : false;\n      if (authInHost) {\n        result.auth = authInHost.shift();\n        result.host = result.hostname = authInHost.shift();\n      }\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    //to support http.request\n    if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n      result.path = (result.pathname ? result.pathname : '') +\n                    (result.search ? result.search : '');\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  if (!srcPath.length) {\n    // no path at all.  easy.\n    // we've already handled the other stuff above.\n    result.pathname = null;\n    //to support http.request\n    if (result.search) {\n      result.path = '/' + result.search;\n    } else {\n      result.path = null;\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  // if a url ENDs in . or .., then it must get a trailing slash.\n  // however, if it ends in anything else non-slashy,\n  // then it must NOT get a trailing slash.\n  var last = srcPath.slice(-1)[0];\n  var hasTrailingSlash = (\n      (result.host || relative.host || srcPath.length > 1) &&\n      (last === '.' || last === '..') || last === '');\n\n  // strip single dots, resolve double dots to parent dir\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = srcPath.length; i >= 0; i--) {\n    last = srcPath[i];\n    if (last === '.') {\n      srcPath.splice(i, 1);\n    } else if (last === '..') {\n      srcPath.splice(i, 1);\n      up++;\n    } else if (up) {\n      srcPath.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (!mustEndAbs && !removeAllDots) {\n    for (; up--; up) {\n      srcPath.unshift('..');\n    }\n  }\n\n  if (mustEndAbs && srcPath[0] !== '' &&\n      (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n    srcPath.unshift('');\n  }\n\n  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n    srcPath.push('');\n  }\n\n  var isAbsolute = srcPath[0] === '' ||\n      (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n  // put the host back\n  if (psychotic) {\n    result.hostname = result.host = isAbsolute ? '' :\n                                    srcPath.length ? srcPath.shift() : '';\n    //occationaly the auth can get stuck only in host\n    //this especially happens in cases like\n    //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n    var authInHost = result.host && result.host.indexOf('@') > 0 ?\n                     result.host.split('@') : false;\n    if (authInHost) {\n      result.auth = authInHost.shift();\n      result.host = result.hostname = authInHost.shift();\n    }\n  }\n\n  mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n  if (mustEndAbs && !isAbsolute) {\n    srcPath.unshift('');\n  }\n\n  if (!srcPath.length) {\n    result.pathname = null;\n    result.path = null;\n  } else {\n    result.pathname = srcPath.join('/');\n  }\n\n  //to support request.http\n  if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n    result.path = (result.pathname ? result.pathname : '') +\n                  (result.search ? result.search : '');\n  }\n  result.auth = relative.auth || result.auth;\n  result.slashes = result.slashes || relative.slashes;\n  result.href = result.format();\n  return result;\n};\n\nUrl.prototype.parseHost = function() {\n  var host = this.host;\n  var port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== ':') {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) this.hostname = host;\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/url/url.js?");
  
  /***/ }),
  
  /***/ "./node_modules/url/util.js":
  /*!**********************************!*\
    !*** ./node_modules/url/util.js ***!
    \**********************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nmodule.exports = {\n  isString: function(arg) {\n    return typeof(arg) === 'string';\n  },\n  isObject: function(arg) {\n    return typeof(arg) === 'object' && arg !== null;\n  },\n  isNull: function(arg) {\n    return arg === null;\n  },\n  isNullOrUndefined: function(arg) {\n    return arg == null;\n  }\n};\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/url/util.js?");
  
  /***/ }),
  
  /***/ "./node_modules/uuid/lib/bytesToUuid.js":
  /*!**********************************************!*\
    !*** ./node_modules/uuid/lib/bytesToUuid.js ***!
    \**********************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n  byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n  var i = offset || 0;\n  var bth = byteToHex;\n  return bth[buf[i++]] + bth[buf[i++]] +\n          bth[buf[i++]] + bth[buf[i++]] + '-' +\n          bth[buf[i++]] + bth[buf[i++]] + '-' +\n          bth[buf[i++]] + bth[buf[i++]] + '-' +\n          bth[buf[i++]] + bth[buf[i++]] + '-' +\n          bth[buf[i++]] + bth[buf[i++]] +\n          bth[buf[i++]] + bth[buf[i++]] +\n          bth[buf[i++]] + bth[buf[i++]];\n}\n\nmodule.exports = bytesToUuid;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/uuid/lib/bytesToUuid.js?");
  
  /***/ }),
  
  /***/ "./node_modules/uuid/lib/rng-browser.js":
  /*!**********************************************!*\
    !*** ./node_modules/uuid/lib/rng-browser.js ***!
    \**********************************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("// Unique ID creation requires a high quality random # generator.  In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API.  We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues.bind(crypto)) ||\n                      (typeof(msCrypto) != 'undefined' && msCrypto.getRandomValues.bind(msCrypto));\nif (getRandomValues) {\n  // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n  var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n  module.exports = function whatwgRNG() {\n    getRandomValues(rnds8);\n    return rnds8;\n  };\n} else {\n  // Math.random()-based (RNG)\n  //\n  // If all else fails, use Math.random().  It's fast, but is of unspecified\n  // quality.\n  var rnds = new Array(16);\n\n  module.exports = function mathRNG() {\n    for (var i = 0, r; i < 16; i++) {\n      if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n      rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n    }\n\n    return rnds;\n  };\n}\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/uuid/lib/rng-browser.js?");
  
  /***/ }),
  
  /***/ "./node_modules/uuid/v4.js":
  /*!*********************************!*\
    !*** ./node_modules/uuid/v4.js ***!
    \*********************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("var rng = __webpack_require__(/*! ./lib/rng */ \"./node_modules/uuid/lib/rng-browser.js\");\nvar bytesToUuid = __webpack_require__(/*! ./lib/bytesToUuid */ \"./node_modules/uuid/lib/bytesToUuid.js\");\n\nfunction v4(options, buf, offset) {\n  var i = buf && offset || 0;\n\n  if (typeof(options) == 'string') {\n    buf = options === 'binary' ? new Array(16) : null;\n    options = null;\n  }\n  options = options || {};\n\n  var rnds = options.random || (options.rng || rng)();\n\n  // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n  rnds[6] = (rnds[6] & 0x0f) | 0x40;\n  rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n  // Copy bytes to buffer, if provided\n  if (buf) {\n    for (var ii = 0; ii < 16; ++ii) {\n      buf[i + ii] = rnds[ii];\n    }\n  }\n\n  return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n\n\n//# sourceURL=webpack://d3Foresight/./node_modules/uuid/v4.js?");
  
  /***/ }),
  
  /***/ "./node_modules/webpack/buildin/global.js":
  /*!***********************************!*\
    !*** (webpack)/buildin/global.js ***!
    \***********************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n//# sourceURL=webpack://d3Foresight/(webpack)/buildin/global.js?");
  
  /***/ }),
  
  /***/ "./node_modules/webpack/buildin/module.js":
  /*!***********************************!*\
    !*** (webpack)/buildin/module.js ***!
    \***********************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n\n//# sourceURL=webpack://d3Foresight/(webpack)/buildin/module.js?");
  
  /***/ }),
  
  /***/ "./src/chart.ts":
  /*!**********************!*\
    !*** ./src/chart.ts ***!
    \**********************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tooltip_1 = __webpack_require__(/*! ./components/common/tooltip */ \"./src/components/common/tooltip.js\");\nvar ev = __webpack_require__(/*! ./events */ \"./src/events.ts\");\nvar uuid = __webpack_require__(/*! uuid/v4 */ \"./node_modules/uuid/v4.js\");\n/**\n * Chart superclass\n */\nvar Chart = /** @class */ (function () {\n    function Chart(selection, options) {\n        if (options === void 0) { options = {}; }\n        var _this = this;\n        var defaultConfig = {\n            axes: {\n                x: {\n                    title: 'X',\n                    description: 'X axis',\n                    url: '#'\n                },\n                y: {\n                    title: 'Y',\n                    description: 'Y axis',\n                    url: '#'\n                }\n            },\n            margin: {\n                top: 5,\n                right: 60,\n                bottom: 70,\n                left: 55\n            },\n            onset: false\n        };\n        this.config = Object.assign({}, defaultConfig, options);\n        // Add space for onset\n        this.onsetHeight = this.config.onset ? 30 : 0;\n        this.config.margin.bottom += this.onsetHeight;\n        var chartBB = selection.node().getBoundingClientRect();\n        var divWidth = chartBB.width;\n        var divHeight = 480;\n        // Create blank chart\n        this.width = divWidth - this.config.margin.left - this.config.margin.right;\n        this.height = divHeight - this.config.margin.top - this.config.margin.bottom;\n        // Add svg\n        this.svg = selection.append('svg')\n            .attr('width', this.width + this.config.margin.left + this.config.margin.right)\n            .attr('height', this.height + this.config.margin.top + this.config.margin.bottom)\n            .append('g')\n            .attr('transform', \"translate(\" + this.config.margin.left + \",\" + this.config.margin.top + \")\");\n        this.tooltip = new tooltip_1.default();\n        selection.append(function () { return _this.tooltip.node; });\n        this.selection = selection;\n        // Create a uuid for this instance\n        this.uuid = uuid();\n        // Current position in the time series\n        this.currentIdx = -1;\n    }\n    Object.defineProperty(Chart.prototype, \"layout\", {\n        /**\n         * Return layout related parameters\n         */\n        get: function () {\n            return {\n                width: this.width,\n                height: this.height,\n                totalHeight: this.height + this.onsetHeight\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Chart.prototype, \"scales\", {\n        get: function () {\n            return {\n                xScale: this.xScale,\n                xScaleDate: this.xScaleDate,\n                xScalePoint: this.xScalePoint,\n                ticks: this.ticks,\n                yScale: this.yScale\n            };\n        },\n        enumerable: true,\n        configurable: true\n    });\n    /**\n     * Return the value of currentIdx + delta as defined by the ticks\n     */\n    Chart.prototype.deltaIndex = function (delta) {\n        return Math.max(Math.min(this.currentIdx + delta, this.scales.ticks.length - 1), 0);\n    };\n    Chart.prototype.plot = function (data) { };\n    Chart.prototype.update = function (idx) { };\n    /**\n     * Append hook function if the hookName is supported and return subId\n     */\n    Chart.prototype.addHook = function (hookName, fn) {\n        return ev.addSub(this.uuid, hookName, function (msg, data) { return fn(data); });\n    };\n    /**\n     * Remove specified subscription\n     */\n    Chart.prototype.removeHook = function (token) {\n        ev.removeSub(token);\n    };\n    /**\n     * Append another component to svg\n     */\n    Chart.prototype.append = function (component) {\n        this.svg.append(function () { return component.node; });\n        return component;\n    };\n    return Chart;\n}());\nexports.default = Chart;\n\n\n//# sourceURL=webpack://d3Foresight/./src/chart.ts?");
  
  /***/ }),
  
  /***/ "./src/components/common/axis-x.js":
  /*!*****************************************!*\
    !*** ./src/components/common/axis-x.js ***!
    \*****************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.XAxisDate = exports.XAxis = undefined;\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _textures = __webpack_require__(/*! textures */ \"./node_modules/textures/dist/textures.esm.js\");\n\nvar _textures2 = _interopRequireDefault(_textures);\n\nvar _tooltip = __webpack_require__(/*! ../../utilities/tooltip */ \"./src/utilities/tooltip.ts\");\n\nvar tt = _interopRequireWildcard(_tooltip);\n\nvar _misc = __webpack_require__(/*! ../../utilities/misc */ \"./src/utilities/misc.ts\");\n\nvar _sComponent = __webpack_require__(/*! ../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar XAxis = exports.XAxis = function (_SComponent) {\n  (0, _inherits3.default)(XAxis, _SComponent);\n\n  function XAxis(layout, _ref) {\n    var tooltip = _ref.tooltip,\n        title = _ref.title,\n        description = _ref.description,\n        url = _ref.url;\n    (0, _classCallCheck3.default)(this, XAxis);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (XAxis.__proto__ || (0, _getPrototypeOf2.default)(XAxis)).call(this));\n\n    _this.selection.attr('class', 'axis axis-x').attr('transform', 'translate(0, ' + layout.height + ')');\n\n    var xText = _this.selection.append('text').attr('text-anchor', 'start').attr('transform', 'translate(' + (layout.width + 10) + ', -15)');\n\n    if (Array.isArray(title)) {\n      xText.append('tspan').text(title[0]).attr('x', 0);\n      title.slice(1).forEach(function (txt) {\n        xText.append('tspan').text(txt).attr('x', 0).attr('dy', '1em');\n      });\n    } else {\n      xText.append('tspan').text(title).attr('x', 0);\n    }\n\n    xText.on('mouseover', function () {\n      tooltip.hidden = false;\n    }).on('mouseout', function () {\n      tooltip.hidden = true;\n    }).on('mousemove', function () {\n      tooltip.render(tt.parseText({\n        text: description\n      }));\n      tt.moveTooltip(tooltip, (0, _misc.selectUncle)(this, '.overlay'), 'left');\n    });\n\n    if (url) {\n      xText.style('cursor', 'pointer').on('click', function () {\n        window.open(url, '_blank');\n      });\n    }\n\n    _this.layout = layout;\n    return _this;\n  }\n\n  (0, _createClass3.default)(XAxis, [{\n    key: 'plot',\n    value: function plot(scales, maxTicks) {\n      var xAxis = d3.axisBottom(scales.xScale);\n      var totalTicks = scales.xScale.domain().length;\n      if (maxTicks && maxTicks < totalTicks / 2) {\n        var showAt = parseInt(totalTicks / maxTicks);\n        xAxis.tickValues(scales.xScale.domain().filter(function (d, i) {\n          return !(i % showAt);\n        }));\n      }\n      this.selection.transition().duration(200).call(xAxis);\n    }\n  }]);\n  return XAxis;\n}(_sComponent2.default);\n\nvar XAxisDate = exports.XAxisDate = function (_SComponent2) {\n  (0, _inherits3.default)(XAxisDate, _SComponent2);\n\n  function XAxisDate(layout, _ref2) {\n    var tooltip = _ref2.tooltip,\n        title = _ref2.title,\n        description = _ref2.description,\n        url = _ref2.url;\n    (0, _classCallCheck3.default)(this, XAxisDate);\n\n    var _this2 = (0, _possibleConstructorReturn3.default)(this, (XAxisDate.__proto__ || (0, _getPrototypeOf2.default)(XAxisDate)).call(this));\n\n    _this2.selection.append('g').attr('class', 'axis axis-x').attr('transform', 'translate(0,' + layout.totalHeight + ')');\n\n    var axisXDate = _this2.selection.append('g').attr('class', 'axis axis-x-date').attr('transform', 'translate(0,' + (layout.totalHeight + 25) + ')');\n\n    var xText = axisXDate.append('text').attr('text-anchor', 'start').attr('transform', 'translate(' + (layout.width + 10) + ',-15)');\n\n    if (Array.isArray(title)) {\n      xText.append('tspan').text(title[0]).attr('x', 0);\n      title.slice(1).forEach(function (txt) {\n        xText.append('tspan').text(txt).attr('x', 0).attr('dy', '1em');\n      });\n    } else {\n      xText.append('tspan').text(title).attr('x', 0);\n    }\n\n    xText.on('mouseover', function () {\n      tooltip.hidden = false;\n    }).on('mouseout', function () {\n      tooltip.hidden = true;\n    }).on('mousemove', function () {\n      tooltip.render(tt.parseText({\n        text: description\n      }));\n      tt.moveTooltip(tooltip, (0, _misc.selectUncle)(this, '.overlay'), 'left');\n    });\n\n    if (url) {\n      xText.style('cursor', 'pointer').on('click', function () {\n        window.open(url, '_blank');\n      });\n    }\n\n    _this2.selection.append('g').attr('class', 'axis axis-x-ticks').attr('transform', 'translate(0, ' + layout.height + ')');\n\n    var onsetTexture = _textures2.default.lines().lighter().strokeWidth(0.5).size(8).stroke('#ccc');\n    _this2.selection.call(onsetTexture);\n\n    _this2.selection.append('rect').attr('class', 'onset-texture').attr('height', layout.totalHeight - layout.height).attr('width', layout.width).attr('x', 0).attr('y', layout.height).style('fill', onsetTexture.url());\n\n    _this2.layout = layout;\n    return _this2;\n  }\n\n  (0, _createClass3.default)(XAxisDate, [{\n    key: 'plot',\n    value: function plot(scales) {\n      var xAxis = d3.axisBottom(scales.xScalePoint).tickValues(scales.xScalePoint.domain().filter(function (d, i) {\n        return !(i % 2);\n      })).tickFormat(function (d, i) {\n        return d.split(\"-\")[1];\n      });\n\n      var xAxisReverseTick = d3.axisTop(scales.xScalePoint).tickValues(scales.xScalePoint.domain().filter(function (d, i) {\n        return !(i % 2);\n      }));\n\n      var xAxisDate = d3.axisBottom(scales.xScaleDate).ticks(d3.timeMonth).tickFormat(d3.timeFormat('%b %d'));\n\n      if (this.width < 420) {\n        xAxisDate.ticks(2);\n        xAxis.tickValues(scales.xScalePoint.domain().filter(function (d, i) {\n          return !(i % 10);\n        }));\n      }\n\n      this.selection.select('.axis-x').transition().duration(200).call(xAxis);\n\n      var tickOnlyAxis = this.selection.select('.axis-x-ticks').transition().duration(200).call(xAxisReverseTick);\n\n      tickOnlyAxis.selectAll('text').remove();\n\n      this.selection.select('.axis-x-date').transition().duration(200).call(xAxisDate);\n    }\n  }]);\n  return XAxisDate;\n}(_sComponent2.default);\n\n//# sourceURL=webpack://d3Foresight/./src/components/common/axis-x.js?");
  
  /***/ }),
  
  /***/ "./src/components/common/axis-y.js":
  /*!*****************************************!*\
    !*** ./src/components/common/axis-y.js ***!
    \*****************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.YAxis = undefined;\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _tooltip = __webpack_require__(/*! ../../utilities/tooltip */ \"./src/utilities/tooltip.ts\");\n\nvar tt = _interopRequireWildcard(_tooltip);\n\nvar _sComponent = __webpack_require__(/*! ../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nvar _misc = __webpack_require__(/*! ../../utilities/misc */ \"./src/utilities/misc.ts\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar YAxis = exports.YAxis = function (_SComponent) {\n  (0, _inherits3.default)(YAxis, _SComponent);\n\n  function YAxis(layout, _ref) {\n    var tooltip = _ref.tooltip,\n        title = _ref.title,\n        description = _ref.description,\n        url = _ref.url;\n    (0, _classCallCheck3.default)(this, YAxis);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (YAxis.__proto__ || (0, _getPrototypeOf2.default)(YAxis)).call(this));\n\n    _this.title = title;\n    _this.layout = layout;\n    _this.tooltip = tooltip;\n    _this.description = description;\n\n    _this.selection.attr('class', 'axis axis-y');\n\n    _this.yText = _this.selection.append('text').attr('id', 'y-axis-label').attr('transform', 'translate(-54 , ' + layout.height / 2 + ') rotate(-90)').attr('dy', '.71em').style('text-anchor', 'middle').text(_this.title).on('mouseover', function () {\n      tooltip.hidden = false;\n    }).on('mouseout', function () {\n      tooltip.hidden = true;\n    }).on('mousemove', function () {\n      tooltip.render(tt.parseText({\n        text: description\n      }));\n      tt.moveTooltip(tooltip, (0, _misc.selectUncle)(this, '.overlay'));\n    });\n    return _this;\n  }\n\n  (0, _createClass3.default)(YAxis, [{\n    key: 'changeTitle',\n    value: function changeTitle(titleChange) {\n      var _this2 = this;\n\n      this.title = titleChange;\n      this.selection.selectAll('#y-axis-label').remove();\n      this.selection.append('text').attr('id', 'y-axis-label').attr('transform', 'translate(-54 , ' + this.layout.height / 2 + ') rotate(-90)').attr('dy', '.71em').style('text-anchor', 'middle').text(this.title).on('mouseover', function () {\n        _this2.tooltip.hidden = false;\n      }).on('mouseout', function () {\n        _this2.tooltip.hidden = true;\n      }).on('mousemove', function () {\n        this.tooltip.render(tt.parseText({\n          text: this.description\n        }));\n        tt.moveTooltip(this.tooltip, (0, _misc.selectUncle)(this, '.overlay'));\n      });\n    }\n  }, {\n    key: 'plot',\n    value: function plot(scales, maxTicks) {\n      var yAxis = d3.axisLeft(scales.yScale).tickFormat(d3.format(','));\n      if (maxTicks) yAxis.ticks(maxTicks);\n      this.selection.transition().duration(200).call(yAxis);\n    }\n  }]);\n  return YAxis;\n}(_sComponent2.default);\n\n//# sourceURL=webpack://d3Foresight/./src/components/common/axis-y.js?");
  
  /***/ }),
  
  /***/ "./src/components/common/control-panel/control-buttons.js":
  /*!****************************************************************!*\
    !*** ./src/components/common/control-panel/control-buttons.js ***!
    \****************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _events = __webpack_require__(/*! ../../../events */ \"./src/events.ts\");\n\nvar ev = _interopRequireWildcard(_events);\n\nvar _tooltip = __webpack_require__(/*! ../../../utilities/tooltip */ \"./src/utilities/tooltip.ts\");\n\nvar tt = _interopRequireWildcard(_tooltip);\n\nvar _component = __webpack_require__(/*! ../../component */ \"./src/components/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ControlButtons = function (_Component) {\n  (0, _inherits3.default)(ControlButtons, _Component);\n\n  function ControlButtons(tooltip, uuid) {\n    (0, _classCallCheck3.default)(this, ControlButtons);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (ControlButtons.__proto__ || (0, _getPrototypeOf2.default)(ControlButtons)).call(this));\n\n    _this.selection.classed('control-btns', true);\n\n    var buttonData = [{\n      name: 'legendBtn',\n      iconClass: 'icon-menu',\n      tooltipText: 'Toggle Legend',\n      event: ev.PANEL_TOGGLE\n    }, {\n      name: 'backBtn',\n      iconClass: 'icon-left-big',\n      tooltipText: 'Move backward',\n      event: ev.PANEL_MOVE_PREV\n    }, {\n      name: 'nextBtn',\n      iconClass: 'icon-right-big',\n      tooltipText: 'Move forward',\n      event: ev.PANEL_MOVE_NEXT\n    }, {\n      name: 'rescaleBtn',\n      iconClass: 'fa fa-refresh',\n      tooltipText: 'Rescale',\n      event: ev.LEGEND_RESCALE\n    }];\n\n    var buttons = buttonData.map(function (data) {\n      var btnDiv = _this.selection.append('div').classed('btn', true).on('mouseover', function () {\n        tooltip.hidden = false;\n      }).on('mouseout', function () {\n        tooltip.hidden = true;\n      }).on('mousemove', function () {\n        tooltip.render(tt.parseText({ text: data.tooltipText }));\n        tt.moveTooltip(tooltip, d3.select(this), 'left');\n      }).on('click', function () {\n        return ev.publish(uuid, data.event, {});\n      });\n\n      btnDiv.append('i').classed(data.iconClass, true);\n      return btnDiv;\n    });\n\n    _this.legendBtn = buttons[0];\n    return _this;\n  }\n\n  (0, _createClass3.default)(ControlButtons, [{\n    key: 'legendBtnState',\n    get: function get() {\n      return this.legendBtn.classed('active');\n    },\n    set: function set(state) {\n      this.legendBtn.classed('active', state);\n    }\n  }]);\n  return ControlButtons;\n}(_component2.default);\n\nexports.default = ControlButtons;\n\n//# sourceURL=webpack://d3Foresight/./src/components/common/control-panel/control-buttons.js?");
  
  /***/ }),
  
  /***/ "./src/components/common/control-panel/drawer-row.js":
  /*!***********************************************************!*\
    !*** ./src/components/common/control-panel/drawer-row.js ***!
    \***********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = __webpack_require__(/*! babel-runtime/helpers/get */ \"./node_modules/babel-runtime/helpers/get.js\");\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _tooltip = __webpack_require__(/*! ../../../utilities/tooltip */ \"./src/utilities/tooltip.ts\");\n\nvar tt = _interopRequireWildcard(_tooltip);\n\nvar _component = __webpack_require__(/*! ../../component */ \"./src/components/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DrawerRow = function (_Component) {\n  (0, _inherits3.default)(DrawerRow, _Component);\n\n  function DrawerRow(name, color) {\n    (0, _classCallCheck3.default)(this, DrawerRow);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (DrawerRow.__proto__ || (0, _getPrototypeOf2.default)(DrawerRow)).call(this));\n\n    _this.id = name;\n    _this.selection.attr('class', 'row');\n\n    _this.icon = _this.selection.append('i').style('color', color).classed('row-icon', true);\n\n    _this.selection.append('span').attr('class', 'row-title').text(name);\n    return _this;\n  }\n\n  (0, _createClass3.default)(DrawerRow, [{\n    key: 'setText',\n    value: function setText(text) {\n      this.selection.select('.row-title').text(text);\n    }\n  }, {\n    key: 'addLink',\n    value: function addLink(url, tooltip) {\n      var urlAnchor = this.selection.append('a').attr('href', url).attr('target', '_blank').classed('row-url', true);\n\n      urlAnchor.append('i').classed('icon-link-ext', true);\n\n      urlAnchor.on('mousemove', function () {\n        d3.event.stopPropagation();\n        tooltip.render(tt.parseText({ text: 'Show details' }));\n        tt.moveTooltip(tooltip, d3.select(this), 'left');\n      }).on('click', function () {\n        return d3.event.stopPropagation();\n      });\n    }\n  }, {\n    key: 'addOnClick',\n    value: function addOnClick(fn) {\n      var _this2 = this;\n\n      (0, _get3.default)(DrawerRow.prototype.__proto__ || (0, _getPrototypeOf2.default)(DrawerRow.prototype), 'addOnClick', this).call(this);\n      this.selection.on('click', function () {\n        _this2.active = !_this2.active;\n        fn({ id: _this2.id, state: _this2.active });\n      });\n    }\n  }, {\n    key: 'click',\n    value: function click() {\n      this.selection.on('click')();\n    }\n  }, {\n    key: 'active',\n    get: function get() {\n      return this.icon.classed('icon-circle');\n    },\n    set: function set(state) {\n      this.icon.classed('icon-circle', state);\n      this.icon.classed('icon-circle-empty', !state);\n    }\n  }, {\n    key: 'na',\n    get: function get() {\n      this.selection.classed('na');\n    },\n    set: function set(state) {\n      this.selection.classed('na', state);\n    }\n  }]);\n  return DrawerRow;\n}(_component2.default);\n\nexports.default = DrawerRow;\n\n//# sourceURL=webpack://d3Foresight/./src/components/common/control-panel/drawer-row.js?");
  
  /***/ }),
  
  /***/ "./src/components/common/control-panel/index.js":
  /*!******************************************************!*\
    !*** ./src/components/common/control-panel/index.js ***!
    \******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _events = __webpack_require__(/*! ../../../events */ \"./src/events.ts\");\n\nvar ev = _interopRequireWildcard(_events);\n\nvar _controlButtons = __webpack_require__(/*! ./control-buttons */ \"./src/components/common/control-panel/control-buttons.js\");\n\nvar _controlButtons2 = _interopRequireDefault(_controlButtons);\n\nvar _legendDrawer = __webpack_require__(/*! ./legend-drawer */ \"./src/components/common/control-panel/legend-drawer.js\");\n\nvar _legendDrawer2 = _interopRequireDefault(_legendDrawer);\n\nvar _component = __webpack_require__(/*! ../../component */ \"./src/components/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ControlPanel = function (_Component) {\n  (0, _inherits3.default)(ControlPanel, _Component);\n\n  function ControlPanel(config) {\n    (0, _classCallCheck3.default)(this, ControlPanel);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (ControlPanel.__proto__ || (0, _getPrototypeOf2.default)(ControlPanel)).call(this));\n\n    _this.selection.attr('class', 'd3f-controls');\n    _this.config = config;\n\n    _this.legendDrawer = _this.append(new _legendDrawer2.default(config));\n\n    var sideButtons = _this.append(new _controlButtons2.default(config.tooltip, config.uuid));\n\n    ev.addSub(config.uuid, ev.PANEL_TOGGLE, function (msg, data) {\n      _this.legendDrawer.hidden = !_this.legendDrawer.hidden;\n      sideButtons.legendBtnState = !sideButtons.legendBtnState;\n    });\n\n    sideButtons.legendBtnState = true;\n    return _this;\n  }\n\n  (0, _createClass3.default)(ControlPanel, [{\n    key: 'plot',\n    value: function plot(predictions, additional, config) {\n      this.legendDrawer.plot(predictions, additional, config);\n    }\n  }, {\n    key: 'update',\n    value: function update(predictions) {\n      this.legendDrawer.update(predictions);\n    }\n  }, {\n    key: 'updateTitle',\n    value: function updateTitle(title) {\n      this.legendDrawer.updateTitle(title);\n    }\n  }]);\n  return ControlPanel;\n}(_component2.default);\n\nexports.default = ControlPanel;\n\n//# sourceURL=webpack://d3Foresight/./src/components/common/control-panel/index.js?");
  
  /***/ }),
  
  /***/ "./src/components/common/control-panel/legend-drawer.js":
  /*!**************************************************************!*\
    !*** ./src/components/common/control-panel/legend-drawer.js ***!
    \**************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"./node_modules/babel-runtime/helpers/toConsumableArray.js\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _events = __webpack_require__(/*! ../../../events */ \"./src/events.ts\");\n\nvar ev = _interopRequireWildcard(_events);\n\nvar _colors = __webpack_require__(/*! ../../../styles/modules/colors.json */ \"./src/styles/modules/colors.json\");\n\nvar _colors2 = _interopRequireDefault(_colors);\n\nvar _drawerRow = __webpack_require__(/*! ./drawer-row */ \"./src/components/common/control-panel/drawer-row.js\");\n\nvar _drawerRow2 = _interopRequireDefault(_drawerRow);\n\nvar _toggleButtons = __webpack_require__(/*! ./toggle-buttons */ \"./src/components/common/control-panel/toggle-buttons.js\");\n\nvar _toggleButtons2 = _interopRequireDefault(_toggleButtons);\n\nvar _component = __webpack_require__(/*! ../../component */ \"./src/components/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nvar _searchBox = __webpack_require__(/*! ./search-box */ \"./src/components/common/control-panel/search-box.js\");\n\nvar _searchBox2 = _interopRequireDefault(_searchBox);\n\nvar _tooltip = __webpack_require__(/*! ../../../utilities/tooltip */ \"./src/utilities/tooltip.ts\");\n\nvar tt = _interopRequireWildcard(_tooltip);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction makePredictionRow(p, tooltip) {\n  var drawerRow = new _drawerRow2.default(p.id, p.style.color);\n  var ttText = void 0;\n  if (p.meta) {\n    if (p.meta.url) {\n      drawerRow.addLink(p.meta.url, tooltip);\n    }\n    ttText = tt.parseText({ title: p.meta.name, text: p.meta.description });\n  } else {\n    ttText = tt.parseText({ title: p.id, text: '' });\n  }\n\n  drawerRow.addTooltip(tooltip, ttText, 'right');\n  drawerRow.active = !p.hidden;\n  return drawerRow;\n}\n\nvar LegendDrawer = function (_Component) {\n  (0, _inherits3.default)(LegendDrawer, _Component);\n\n  function LegendDrawer(config) {\n    (0, _classCallCheck3.default)(this, LegendDrawer);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (LegendDrawer.__proto__ || (0, _getPrototypeOf2.default)(LegendDrawer)).call(this));\n\n    _this.init = false;\n    _this.selection.classed('legend-drawer', true);\n\n    var topContainer = _this.selection.append('div');\n\n    var topItems = [{\n      color: _colors2.default.actual,\n      text: 'Actual',\n      textLong: 'Observed Deaths',\n      tooltipData: {\n        title: 'Actual Data',\n        text: 'Latest data available for the week'\n      }\n    }, {\n      color: _colors2.default.observed,\n      text: 'Observed',\n      textLong: 'Observed',\n      tooltipData: {\n        title: 'Observed Data',\n        text: 'Data available for weeks when the predictions were made'\n      }\n    }, {\n      color: _colors2.default['history'],\n      text: 'History',\n      textLong: 'History',\n      tooltipData: {\n        title: 'Historical Data',\n        text: 'Toggle historical data lines'\n      }\n    }];\n\n    _this.topRowsMap = {};\n    topItems.forEach(function (data) {\n      var drawerRow = new _drawerRow2.default(data.textLong, data.color);\n      drawerRow.addOnClick(function (_ref) {\n        var id = _ref.id,\n            state = _ref.state;\n\n        ev.publish(config.uuid, ev.LEGEND_ITEM, { id: id, state: state });\n      });\n      drawerRow.addTooltip(config.tooltip, tt.parseText(data.tooltipData), 'left');\n      drawerRow.active = true;\n      topContainer.append(function () {\n        return drawerRow.node;\n      });\n      _this.topRowsMap[data.text.toLowerCase()] = drawerRow;\n    });\n\n    var middleContainer = _this.selection.append('div').attr('class', 'legend-middle-container');\n\n    if (config.ci) {\n      var ciRow = middleContainer.append('div').attr('class', 'row control-row');\n      ciRow.append('span').text('CI');\n\n      var ciValues = [].concat((0, _toConsumableArray3.default)(config.ci.values), ['none']);\n      _this.ciButtons = new _toggleButtons2.default(ciValues);\n      _this.ciButtons.addTooltip(config.tooltip, tt.parseText({\n        title: 'Confidence Interval',\n        text: 'Select confidence interval for prediction markers'\n      }), 'left');\n\n      _this.ciButtons.addOnClick(function (_ref2) {\n        var idx = _ref2.idx;\n\n        ev.publish(config.uuid, ev.LEGEND_CI, { idx: ciValues.length - 1 === idx ? -1 : idx });\n      });\n      _this.ciButtons.set(config.ci.idx);\n      ciRow.append(function () {\n        return _this.ciButtons.node;\n      });\n    }\n\n    var showHideRow = middleContainer.append('div').attr('class', 'row control-row');\n    showHideRow.append('span').text('Show');\n\n    _this.showHideButtons = new _toggleButtons2.default(['all', 'none', 'ensemble']);\n    _this.showHideButtons.addTooltip(config.tooltip, tt.parseText({\n      title: 'Toggle visibility',\n      text: 'Show / hide all predictions'\n    }), 'left');\n\n    _this.showHideButtons.addOnClick(function (_ref3) {\n      var idx = _ref3.idx;\n\n      if (idx != 2) {\n        _this.showHideAllItems(idx === 0);\n      } else {\n        _this.showHideAllItems(false);\n        var id = 'COVIDhub-ensemble';\n        var state = true;\n        ev.publish(_this.uuid, ev.LEGEND_ITEM, { id: id, state: state });\n        if (!_this.ensembleRow) {\n          _this.ensembleRow = _this.bottomRows.find(function (r) {\n            return r.id === 'COVIDhub-ensemble';\n          });\n        }\n        _this.ensembleRow.active = true;\n      }\n    });\n    _this.showHideButtons.set(2);\n    showHideRow.append(function () {\n      return _this.showHideButtons.node;\n    });\n\n    _this.searchBox = new _searchBox2.default();\n    middleContainer.append(function () {\n      return _this.searchBox.node;\n    });\n\n    _this.pinnedContainer = topContainer.append('div');\n\n    _this.bottomContainer = _this.selection.append('div').attr('class', 'legend-bottom-container');\n\n    _this.tooltip = config.tooltip;\n    _this.uuid = config.uuid;\n    return _this;\n  }\n\n  (0, _createClass3.default)(LegendDrawer, [{\n    key: 'showRows',\n    value: function showRows(states) {\n      this.bottomRows.forEach(function (row, idx) {\n        row.hidden = !states[idx];\n      });\n    }\n  }, {\n    key: 'showHideAllItems',\n    value: function showHideAllItems(show) {\n      this.bottomRows.forEach(function (row) {\n        if (row.active !== show) {\n          row.click();\n        }\n      });\n    }\n  }, {\n    key: 'plot',\n    value: function plot(predictions, additional, config) {\n      var _this2 = this;\n\n      for (var topId in this.topRowsMap) {\n        this.topRowsMap[topId].hidden = !config[topId];\n      }\n\n      var maxNPreds = 10;\n      if (predictions.length > maxNPreds) {\n        this.searchBox.hidden = false;\n\n        this.searchBox.addKeyup(function (_ref4) {\n          var text = _ref4.text;\n\n          var searchBase = predictions.map(function (p) {\n            return (p.id + ' ' + p.meta.name + ' ' + p.meta.description).toLowerCase();\n          });\n          _this2.showRows(searchBase.map(function (sb) {\n            return sb.includes(text);\n          }));\n        });\n      } else {\n        this.searchBox.hidden = true;\n      }\n\n      this.bottomContainer.selectAll('*').remove();\n      if (this.init == false) {\n        predictions.forEach(function (p) {\n          return p.hidden = true;\n        });\n      }\n      this.bottomRows = predictions.filter(function (p) {\n        return config.pinnedModels.indexOf(p.id) === -1;\n      }).map(function (p) {\n        if (_this2.init == false) {\n          p.hidden = !(_this2.showHideButtons.idx == 2 && p.id == 'COVIDhub-ensemble');\n        } else {\n          if (_this2.showHideButtons.idx == 2 && p.id != 'COVIDhub-ensemble') {\n            p.hidden = true;\n          }\n        }\n        var drawerRow = makePredictionRow(p, _this2.tooltip);\n        if (drawerRow.id === 'COVIDhub-ensemble') {\n          _this2.ensembleRow = drawerRow;\n        }\n        drawerRow.addOnClick(function (_ref5) {\n          var id = _ref5.id,\n              state = _ref5.state;\n\n          _this2.showHideButtons.reset();\n          ev.publish(_this2.uuid, ev.LEGEND_ITEM, { id: id, state: state });\n        });\n        _this2.bottomContainer.append(function () {\n          return drawerRow.node;\n        });\n        return drawerRow;\n      });\n\n      if (this.init == false) {\n        if (this.showHideButtons.idx == 2) {\n          if (!this.ensembleRow) {\n            this.ensembleRow = this.bottomRows.find(function (r) {\n              return r.id === 'COVIDhub-ensemble';\n            });\n          }\n          this.showHideButtons.set(2);\n        } else if (this.showHideButtons.idx == 0) {\n          this.bottomRows.forEach(function (p) {\n            return p.click();\n          });\n          this.showHideButtons.set(0);\n        }\n        this.init = true;\n      }\n\n      this.pinnedContainer.selectAll('*').remove();\n      this.pinnedRows = [].concat((0, _toConsumableArray3.default)(predictions.filter(function (p) {\n        return config.pinnedModels.indexOf(p.id) > -1;\n      })), (0, _toConsumableArray3.default)(additional.filter(function (ad) {\n        return ad.legend;\n      }))).map(function (it) {\n        var drawerRow = makePredictionRow(it, _this2.tooltip);\n        drawerRow.addOnClick(function (_ref6) {\n          var id = _ref6.id,\n              state = _ref6.state;\n\n          ev.publish(_this2.uuid, ev.LEGEND_ITEM, { id: id, state: state });\n        });\n\n        _this2.pinnedContainer.append(function () {\n          return drawerRow.node;\n        });\n        return drawerRow;\n      });\n    }\n  }, {\n    key: 'update',\n    value: function update(predictions) {\n      var _this3 = this;\n\n      predictions.forEach(function (p) {\n        var row = _this3.bottomRows.find(function (r) {\n          return r.id === p.id;\n        }) || _this3.pinnedRows.find(function (r) {\n          return r.id === p.id;\n        });\n\n        if (row) {\n          row.na = p.noData;\n        }\n      });\n      ev.publish(this.uuid, ev.LEGEND_RESCALE, {});\n    }\n  }, {\n    key: 'updateTitle',\n    value: function updateTitle(title) {\n      this.topRowsMap['actual'].setText('Observed ' + title);\n    }\n  }]);\n  return LegendDrawer;\n}(_component2.default);\n\nexports.default = LegendDrawer;\n\n//# sourceURL=webpack://d3Foresight/./src/components/common/control-panel/legend-drawer.js?");
  
  /***/ }),
  
  /***/ "./src/components/common/control-panel/search-box.js":
  /*!***********************************************************!*\
    !*** ./src/components/common/control-panel/search-box.js ***!
    \***********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _component = __webpack_require__(/*! ../../component */ \"./src/components/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SearchBox = function (_Component) {\n  (0, _inherits3.default)(SearchBox, _Component);\n\n  function SearchBox() {\n    (0, _classCallCheck3.default)(this, SearchBox);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (SearchBox.__proto__ || (0, _getPrototypeOf2.default)(SearchBox)).call(this));\n\n    _this.selection.classed('row', true);\n\n    _this.input = _this.selection.append('input').attr('class', 'search-input').attr('type', 'text').attr('placeholder', 'Filter models');\n\n    _this.hidden = true;\n    return _this;\n  }\n\n  (0, _createClass3.default)(SearchBox, [{\n    key: 'addKeyup',\n    value: function addKeyup(fn) {\n      this.input.keyup = null;\n      this.input.on('keyup', function () {\n        fn({ text: this.value.toLowerCase() });\n      });\n    }\n  }]);\n  return SearchBox;\n}(_component2.default);\n\nexports.default = SearchBox;\n\n//# sourceURL=webpack://d3Foresight/./src/components/common/control-panel/search-box.js?");
  
  /***/ }),
  
  /***/ "./src/components/common/control-panel/toggle-buttons.js":
  /*!***************************************************************!*\
    !*** ./src/components/common/control-panel/toggle-buttons.js ***!
    \***************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = __webpack_require__(/*! babel-runtime/helpers/get */ \"./node_modules/babel-runtime/helpers/get.js\");\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _component = __webpack_require__(/*! ../../component */ \"./src/components/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ToggleButtons = function (_Component) {\n  (0, _inherits3.default)(ToggleButtons, _Component);\n\n  function ToggleButtons(texts) {\n    (0, _classCallCheck3.default)(this, ToggleButtons);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (ToggleButtons.__proto__ || (0, _getPrototypeOf2.default)(ToggleButtons)).call(this));\n\n    _this.selection.classed('toggle-group', true);\n\n    _this.buttons = texts.map(function (txt) {\n      return _this.selection.append('span').classed('toggle-button', true).text(txt);\n    });\n    _this.idx = -1;\n    return _this;\n  }\n\n  (0, _createClass3.default)(ToggleButtons, [{\n    key: 'addOnClick',\n    value: function addOnClick(fn) {\n      (0, _get3.default)(ToggleButtons.prototype.__proto__ || (0, _getPrototypeOf2.default)(ToggleButtons.prototype), 'addOnClick', this).call(this);\n      var that = this;\n      this.buttons.forEach(function (btn, idx) {\n        btn.on('click', function () {\n          fn({ idx: idx });\n          that.reset();\n          that.set(idx);\n        });\n      });\n    }\n  }, {\n    key: 'set',\n    value: function set(idx) {\n      this.reset();\n      this.idx = idx;\n      this.buttons[idx].classed('selected', true);\n    }\n  }, {\n    key: 'unset',\n    value: function unset(idx) {\n      this.buttons[idx].classed('selected', false);\n    }\n  }, {\n    key: 'reset',\n    value: function reset() {\n      var _this2 = this;\n\n      this.buttons.forEach(function (btn, idx) {\n        return _this2.unset(idx);\n      });\n      this.idx = -1;\n    }\n  }]);\n  return ToggleButtons;\n}(_component2.default);\n\nexports.default = ToggleButtons;\n\n//# sourceURL=webpack://d3Foresight/./src/components/common/control-panel/toggle-buttons.js?");
  
  /***/ }),
  
  /***/ "./src/components/common/tooltip.js":
  /*!******************************************!*\
    !*** ./src/components/common/tooltip.js ***!
    \******************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _component = __webpack_require__(/*! ../component */ \"./src/components/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Tooltip = function (_Component) {\n  (0, _inherits3.default)(Tooltip, _Component);\n\n  function Tooltip() {\n    (0, _classCallCheck3.default)(this, Tooltip);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (Tooltip.__proto__ || (0, _getPrototypeOf2.default)(Tooltip)).call(this));\n\n    _this.selection.attr('class', 'd3f-tooltip').style('display', 'none');\n\n    _this.offset = 15;\n    return _this;\n  }\n\n  (0, _createClass3.default)(Tooltip, [{\n    key: 'move',\n    value: function move(position) {\n      var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'right';\n\n      this.selection.style('top', position.y + this.offset + 'px').style('left', position.x + (direction === 'right' ? this.offset : -this.width - this.offset) + 'px');\n    }\n  }, {\n    key: 'render',\n    value: function render(html) {\n      if (html === '') {\n        this.hidden = true;\n      } else {\n        this.hidden = false;\n        this.selection.html(html);\n      }\n    }\n  }, {\n    key: 'width',\n    get: function get() {\n      return this.node.getBoundingClientRect().width;\n    }\n  }]);\n  return Tooltip;\n}(_component2.default);\n\nexports.default = Tooltip;\n\n//# sourceURL=webpack://d3Foresight/./src/components/common/tooltip.js?");
  
  /***/ }),
  
  /***/ "./src/components/component.js":
  /*!*************************************!*\
    !*** ./src/components/component.js ***!
    \*************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _tooltip = __webpack_require__(/*! ../utilities/tooltip */ \"./src/utilities/tooltip.ts\");\n\nvar tt = _interopRequireWildcard(_tooltip);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Component = function () {\n  function Component() {\n    var elem = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.createElement('div');\n    (0, _classCallCheck3.default)(this, Component);\n\n    this.selection = d3.select(elem);\n  }\n\n  (0, _createClass3.default)(Component, [{\n    key: 'addTooltip',\n    value: function addTooltip(tooltip, html) {\n      var direction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'right';\n\n      this.selection.on('mouseover', function () {\n        tooltip.hidden = false;\n      }).on('mouseout', function () {\n        tooltip.hidden = true;\n      }).on('mousemove', function () {\n        tooltip.render(html);\n        tt.moveTooltip(tooltip, d3.select(this), direction);\n      });\n    }\n  }, {\n    key: 'addOnClick',\n    value: function addOnClick() {\n      this.selection.style('cursor', 'pointer');\n    }\n  }, {\n    key: 'append',\n    value: function append(component) {\n      this.selection.append(function () {\n        return component.node;\n      });\n      return component;\n    }\n  }, {\n    key: 'node',\n    get: function get() {\n      return this.selection.node();\n    }\n  }, {\n    key: 'hidden',\n    get: function get() {\n      return this.selection.style('display') === 'none';\n    },\n    set: function set(state) {\n      this.selection.style('display', state ? 'none' : null);\n    }\n  }]);\n  return Component;\n}();\n\nexports.default = Component;\n\n//# sourceURL=webpack://d3Foresight/./src/components/component.js?");
  
  /***/ }),
  
  /***/ "./src/components/distribution-chart/distribution-panel.js":
  /*!*****************************************************************!*\
    !*** ./src/components/distribution-chart/distribution-panel.js ***!
    \*****************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"./node_modules/babel-runtime/helpers/extends.js\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _axisX = __webpack_require__(/*! ../common/axis-x */ \"./src/components/common/axis-x.js\");\n\nvar _axisY = __webpack_require__(/*! ../common/axis-y */ \"./src/components/common/axis-y.js\");\n\nvar _prediction = __webpack_require__(/*! ./prediction */ \"./src/components/distribution-chart/prediction.js\");\n\nvar _prediction2 = _interopRequireDefault(_prediction);\n\nvar _domains = __webpack_require__(/*! ../../utilities/data/domains */ \"./src/utilities/data/domains.ts\");\n\nvar domains = _interopRequireWildcard(_domains);\n\nvar _overlay = __webpack_require__(/*! ./overlay */ \"./src/components/distribution-chart/overlay.js\");\n\nvar _overlay2 = _interopRequireDefault(_overlay);\n\nvar _noPredText = __webpack_require__(/*! ./no-pred-text */ \"./src/components/distribution-chart/no-pred-text.js\");\n\nvar _noPredText2 = _interopRequireDefault(_noPredText);\n\nvar _colors = __webpack_require__(/*! ../../utilities/colors */ \"./src/utilities/colors.ts\");\n\nvar colors = _interopRequireWildcard(_colors);\n\nvar _misc = __webpack_require__(/*! ../../utilities/misc */ \"./src/utilities/misc.ts\");\n\nvar _sComponent = __webpack_require__(/*! ../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DistributionPanel = function (_SComponent) {\n  (0, _inherits3.default)(DistributionPanel, _SComponent);\n\n  function DistributionPanel(layout, _ref) {\n    var tooltip = _ref.tooltip;\n    (0, _classCallCheck3.default)(this, DistributionPanel);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (DistributionPanel.__proto__ || (0, _getPrototypeOf2.default)(DistributionPanel)).call(this));\n\n    _this.xScale = d3.scalePoint().range([0, layout.width]);\n    _this.yScale = d3.scaleLinear().range([layout.height, 0]);\n    _this.xAxis = _this.append(new _axisX.XAxis(layout, { tooltip: tooltip }));\n    _this.yAxis = _this.append(new _axisY.YAxis(layout, {\n      title: 'Probability',\n      description: 'Probability assigned to x-axis bins',\n      tooltip: tooltip\n    }));\n\n    _this.predictions = [];\n    _this.selectedCurveIdx = null;\n    _this.tooltip = tooltip;\n    _this.layout = layout;\n    _this.overlay = _this.append(new _overlay2.default(layout, { tooltip: tooltip }));\n    _this.noPredText = _this.append(new _noPredText2.default());\n    return _this;\n  }\n\n  (0, _createClass3.default)(DistributionPanel, [{\n    key: 'plot',\n    value: function plot(data, yLimits) {\n      var _this2 = this;\n\n      this.xScale.domain(domains.xCurve(data, this.selectedCurveIdx));\n      this.yScale.domain([0, yLimits[this.selectedCurveIdx]]);\n\n      this.xAxis.plot(this.scales, 10);\n      this.yAxis.plot(this.scales, 5);\n\n      this.colors = colors.getColorMap(data.models.length);\n\n      this.predictions = (0, _misc.filterActiveLines)(this.predictions, data.models);\n\n      data.models.forEach(function (m, idx) {\n        var predMarker = void 0;\n        var markerIndex = _this2.predictions.findIndex(function (p) {\n          return p.id === m.id;\n        });\n        if (markerIndex === -1) {\n          predMarker = new _prediction2.default({\n            id: m.id,\n            meta: m.meta,\n            style: (0, _extends3.default)({ color: _this2.colors[idx] }, m.style)\n          });\n          _this2.append(predMarker);\n          _this2.predictions.push(predMarker);\n        } else {\n          predMarker = _this2.predictions[markerIndex];\n        }\n        predMarker.plot(_this2.scales, m.curves[_this2.selectedCurveIdx]);\n      });\n\n      this.overlay.plot(this.scales, this.predictions);\n\n      this.noPredText.hidden = this.predictions.filter(function (p) {\n        return p.noData;\n      }).length !== this.predictions.length;\n    }\n  }, {\n    key: 'scales',\n    get: function get() {\n      return {\n        xScale: this.xScale,\n        yScale: this.yScale\n      };\n    }\n  }]);\n  return DistributionPanel;\n}(_sComponent2.default);\n\nexports.default = DistributionPanel;\n\n//# sourceURL=webpack://d3Foresight/./src/components/distribution-chart/distribution-panel.js?");
  
  /***/ }),
  
  /***/ "./src/components/distribution-chart/no-pred-text.js":
  /*!***********************************************************!*\
    !*** ./src/components/distribution-chart/no-pred-text.js ***!
    \***********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _sComponent = __webpack_require__(/*! ../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NoPredText = function (_SComponent) {\n  (0, _inherits3.default)(NoPredText, _SComponent);\n\n  function NoPredText() {\n    (0, _classCallCheck3.default)(this, NoPredText);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (NoPredText.__proto__ || (0, _getPrototypeOf2.default)(NoPredText)).call(this));\n\n    _this.text = _this.selection.append('text').attr('class', 'no-pred-text').attr('transform', 'translate(30 , 30)');\n\n    _this.text.append('tspan').text('Predictions not available').attr('x', 0);\n\n    _this.text.append('tspan').text('for selected time').attr('x', 0).attr('dy', '2em');\n    return _this;\n  }\n\n  return NoPredText;\n}(_sComponent2.default);\n\nexports.default = NoPredText;\n\n//# sourceURL=webpack://d3Foresight/./src/components/distribution-chart/no-pred-text.js?");
  
  /***/ }),
  
  /***/ "./src/components/distribution-chart/overlay.js":
  /*!******************************************************!*\
    !*** ./src/components/distribution-chart/overlay.js ***!
    \******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _tooltip = __webpack_require__(/*! ../../utilities/tooltip */ \"./src/utilities/tooltip.ts\");\n\nvar tt = _interopRequireWildcard(_tooltip);\n\nvar _sComponent = __webpack_require__(/*! ../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Overlay = function (_SComponent) {\n  (0, _inherits3.default)(Overlay, _SComponent);\n\n  function Overlay(layout, _ref) {\n    var tooltip = _ref.tooltip;\n    (0, _classCallCheck3.default)(this, Overlay);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (Overlay.__proto__ || (0, _getPrototypeOf2.default)(Overlay)).call(this));\n\n    _this.line = _this.selection.append('line').attr('class', 'hover-line').attr('x1', 0).attr('y1', 0).attr('x2', 0).attr('y2', layout.height).style('display', 'none');\n\n    _this.overlay = _this.selection.append('rect').attr('class', 'overlay').attr('height', layout.height).attr('width', layout.width).on('mouseover', function () {\n      _this.line.style('display', null);\n      tooltip.hidden = false;\n    }).on('mouseout', function () {\n      _this.line.style('display', 'none');\n      tooltip.hidden = true;\n    });\n    _this.tooltip = tooltip;\n    return _this;\n  }\n\n  (0, _createClass3.default)(Overlay, [{\n    key: 'plot',\n    value: function plot(scales, predictions) {\n      var line = this.line;\n      var tooltip = this.tooltip;\n      this.overlay.on('mousemove', function () {\n        var mouse = d3.mouse(this);\n\n        var index = Math.round(mouse[0] / scales.xScale.range()[1] * scales.xScale.domain().length);\n        var snappedX = scales.xScale(scales.xScale.domain()[index]);\n\n        line.transition().duration(50).attr('x1', snappedX).attr('x2', snappedX);\n\n        var binVal = tt.formatBin(scales.xScale.domain(), index);\n\n        tooltip.render(tt.parsePredictions({\n          title: 'Bin: ' + binVal,\n          predictions: predictions,\n          index: index\n        }));\n\n        tt.moveTooltip(tooltip, d3.select(this));\n      });\n    }\n  }]);\n  return Overlay;\n}(_sComponent2.default);\n\nexports.default = Overlay;\n\n//# sourceURL=webpack://d3Foresight/./src/components/distribution-chart/overlay.js?");
  
  /***/ }),
  
  /***/ "./src/components/distribution-chart/pointer.js":
  /*!******************************************************!*\
    !*** ./src/components/distribution-chart/pointer.js ***!
    \******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _sComponent = __webpack_require__(/*! ../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nvar _events = __webpack_require__(/*! ../../events */ \"./src/events.ts\");\n\nvar ev = _interopRequireWildcard(_events);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar generateTrianglePoints = function generateTrianglePoints(origin) {\n  var side = 15;\n  return [[origin[0] - side / 2, origin[1] - side / Math.sqrt(2)], [origin[0] + side / 2, origin[1] - side / Math.sqrt(2)], [origin[0], origin[1] - 2]].map(function (p) {\n    return p[0] + ',' + p[1];\n  }).join(' ');\n};\n\nvar Pointer = function (_SComponent) {\n  (0, _inherits3.default)(Pointer, _SComponent);\n\n  function Pointer(layout, _ref) {\n    var uuid = _ref.uuid;\n    (0, _classCallCheck3.default)(this, Pointer);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (Pointer.__proto__ || (0, _getPrototypeOf2.default)(Pointer)).call(this));\n\n    _this.selection.attr('class', 'time-pointer-group');\n\n    _this.yPos = layout.height;\n\n    _this.selection.append('polyline').attr('class', 'pointer-triangle').attr('points', generateTrianglePoints([0, _this.yPos]));\n\n    _this.selection.append('rect').attr('class', 'pointer-overlay').attr('height', 80).attr('width', layout.width).attr('x', 0).attr('y', layout.height - 30);\n\n    _this.uuid = uuid;\n    return _this;\n  }\n\n  (0, _createClass3.default)(Pointer, [{\n    key: 'plot',\n    value: function plot(scales, currentIdx) {\n      var uuid = this.uuid;\n      this.selection.select('.pointer-triangle').transition().duration(200).attr('points', generateTrianglePoints([scales.xScale(currentIdx), this.yPos]));\n\n      this.selection.select('.pointer-overlay').on('click', function () {\n        var clickIndex = Math.round(scales.xScale.invert(d3.mouse(this)[0]));\n        ev.publish(uuid, ev.JUMP_TO_INDEX, clickIndex);\n      });\n    }\n  }]);\n  return Pointer;\n}(_sComponent2.default);\n\nexports.default = Pointer;\n\n//# sourceURL=webpack://d3Foresight/./src/components/distribution-chart/pointer.js?");
  
  /***/ }),
  
  /***/ "./src/components/distribution-chart/prediction.js":
  /*!*********************************************************!*\
    !*** ./src/components/distribution-chart/prediction.js ***!
    \*********************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = __webpack_require__(/*! babel-runtime/helpers/get */ \"./node_modules/babel-runtime/helpers/get.js\");\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _set2 = __webpack_require__(/*! babel-runtime/helpers/set */ \"./node_modules/babel-runtime/helpers/set.js\");\n\nvar _set3 = _interopRequireDefault(_set2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _sComponent = __webpack_require__(/*! ../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nvar _style = __webpack_require__(/*! ../../utilities/style */ \"./src/utilities/style.ts\");\n\nvar _misc = __webpack_require__(/*! ../../utilities/misc */ \"./src/utilities/misc.ts\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Prediction = function (_SComponent) {\n  (0, _inherits3.default)(Prediction, _SComponent);\n\n  function Prediction(_ref) {\n    var id = _ref.id,\n        meta = _ref.meta,\n        style = _ref.style;\n    (0, _classCallCheck3.default)(this, Prediction);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (Prediction.__proto__ || (0, _getPrototypeOf2.default)(Prediction)).call(this));\n\n    _this.selection.attr('class', 'prediction-group').attr('id', (0, _misc.kebabCase)(id) + '-marker');\n\n    _this.selection.append('path').attr('class', 'area-prediction').style('fill', style.color);\n    (0, _style.applyStyle)(_this.selection.select('.area-prediction'), style.area);\n\n    _this.selection.append('path').attr('class', 'line-prediction').style('stroke', style.color);\n    (0, _style.applyStyle)(_this.selection.select('.line-prediction'), style.line);\n\n    _this.style = style;\n    _this.id = id;\n    _this.meta = meta;\n\n    _this._hidden = false;\n\n    _this.noData = true;\n    return _this;\n  }\n\n  (0, _createClass3.default)(Prediction, [{\n    key: 'plot',\n    value: function plot(scales, curveData) {\n      if (curveData.data === null) {\n        this.noData = true;\n        this.hideMarkers();\n      } else {\n        this.noData = false;\n        if (!this.hidden) {\n          this.showMarkers();\n        }\n\n        var line = d3.line().x(function (d) {\n          return scales.xScale(d[0]);\n        }).y(function (d) {\n          return scales.yScale(d[1]);\n        });\n\n        this.selection.select('.line-prediction').datum(curveData.data).transition().duration(200).attr('d', line);\n\n        var area = d3.area().x(function (d) {\n          return scales.xScale(d[0]);\n        }).y1(function (d) {\n          return scales.yScale(0);\n        }).y0(function (d) {\n          return scales.yScale(d[1]);\n        });\n\n        this.selection.select('.area-prediction').datum(curveData.data).transition().duration(200).attr('d', area);\n      }\n      this.displayedData = curveData.data;\n    }\n  }, {\n    key: 'query',\n    value: function query(index) {\n      return !this.noData && !this.hidden && this.displayedData[index][1];\n    }\n  }, {\n    key: 'hideMarkers',\n    value: function hideMarkers() {\n      (0, _set3.default)(Prediction.prototype.__proto__ || (0, _getPrototypeOf2.default)(Prediction.prototype), 'hidden', true, this);\n    }\n  }, {\n    key: 'showMarkers',\n    value: function showMarkers() {\n      (0, _set3.default)(Prediction.prototype.__proto__ || (0, _getPrototypeOf2.default)(Prediction.prototype), 'hidden', false, this);\n    }\n  }, {\n    key: 'clear',\n    value: function clear() {\n      (0, _get3.default)(Prediction.prototype.__proto__ || (0, _getPrototypeOf2.default)(Prediction.prototype), 'clear', this).call(this);\n      this.selection.remove();\n    }\n  }, {\n    key: 'hidden',\n    get: function get() {\n      return this._hidden;\n    },\n    set: function set(hide) {\n      if (hide) {\n        this.hideMarkers();\n      } else {\n        if (!this.noData) {\n          this.showMarkers();\n        }\n      }\n      this._hidden = hide;\n    }\n  }]);\n  return Prediction;\n}(_sComponent2.default);\n\nexports.default = Prediction;\n\n//# sourceURL=webpack://d3Foresight/./src/components/distribution-chart/prediction.js?");
  
  /***/ }),
  
  /***/ "./src/components/s-component.js":
  /*!***************************************!*\
    !*** ./src/components/s-component.js ***!
    \***************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _component = __webpack_require__(/*! ./component */ \"./src/components/component.js\");\n\nvar _component2 = _interopRequireDefault(_component);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SComponent = function (_Component) {\n  (0, _inherits3.default)(SComponent, _Component);\n\n  function SComponent() {\n    (0, _classCallCheck3.default)(this, SComponent);\n    return (0, _possibleConstructorReturn3.default)(this, (SComponent.__proto__ || (0, _getPrototypeOf2.default)(SComponent)).call(this, document.createElementNS(d3.namespaces.svg, 'g')));\n  }\n\n  (0, _createClass3.default)(SComponent, [{\n    key: 'clear',\n    value: function clear() {\n      this.selection.selectAll('*').transition().duration(200).remove();\n    }\n  }]);\n  return SComponent;\n}(_component2.default);\n\nexports.default = SComponent;\n\n//# sourceURL=webpack://d3Foresight/./src/components/s-component.js?");
  
  /***/ }),
  
  /***/ "./src/components/time-chart/actual.js":
  /*!*********************************************!*\
    !*** ./src/components/time-chart/actual.js ***!
    \*********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _sComponent = __webpack_require__(/*! ../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Actual = function (_SComponent) {\n  (0, _inherits3.default)(Actual, _SComponent);\n\n  function Actual() {\n    (0, _classCallCheck3.default)(this, Actual);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (Actual.__proto__ || (0, _getPrototypeOf2.default)(Actual)).call(this));\n\n    _this.selection.attr('class', 'actual-group');\n    _this.line = _this.selection.append('path').attr('class', 'line-actual');\n    _this.id = 'Actual';\n    return _this;\n  }\n\n  (0, _createClass3.default)(Actual, [{\n    key: 'plot',\n    value: function plot(scales, actualData) {\n      var line = d3.line().x(function (d) {\n        return scales.xScale(d.x);\n      }).y(function (d) {\n        return scales.yScale(d.y);\n      });\n\n      this.data = actualData.map(function (data, idx) {\n        return {\n          x: idx,\n          y: data\n        };\n      });\n\n      this.line.datum(this.data.filter(function (d) {\n        return d.y;\n      })).transition().duration(200).attr('d', line);\n\n      var circles = this.selection.selectAll('.point-actual').data(this.data.filter(function (d) {\n        return d.y;\n      }));\n\n      circles.exit().remove();\n\n      circles.enter().append('circle').merge(circles).attr('class', 'point-actual').transition(200).ease(d3.easeQuadOut).attr('cx', function (d) {\n        return scales.xScale(d.x);\n      }).attr('cy', function (d) {\n        return scales.yScale(d.y);\n      }).attr('r', 2);\n    }\n  }, {\n    key: 'rescale',\n    value: function rescale(scales) {\n      var line = d3.line().x(function (d) {\n        return scales.xScale(d.x);\n      }).y(function (d) {\n        return scales.yScale(d.y);\n      });\n      this.line.datum(this.data.filter(function (d) {\n        return d.y;\n      })).transition().duration(200).attr('d', line);\n\n      var circles = this.selection.selectAll('.point-actual').data(this.data.filter(function (d) {\n        return d.y;\n      }));\n\n      circles.exit().remove();\n\n      circles.enter().append('circle').merge(circles).attr('class', 'point-actual').transition(200).ease(d3.easeQuadOut).attr('cx', function (d) {\n        return scales.xScale(d.x);\n      }).attr('cy', function (d) {\n        return scales.yScale(d.y);\n      }).attr('r', 2);\n    }\n  }, {\n    key: 'query',\n    value: function query(idx) {\n      if (this.hidden) {\n        return false;\n      } else {\n        try {\n          return this.data[idx].y;\n        } catch (e) {\n          return false;\n        }\n      }\n    }\n  }]);\n  return Actual;\n}(_sComponent2.default);\n\nexports.default = Actual;\n\n//# sourceURL=webpack://d3Foresight/./src/components/time-chart/actual.js?");
  
  /***/ }),
  
  /***/ "./src/components/time-chart/additional-line.js":
  /*!******************************************************!*\
    !*** ./src/components/time-chart/additional-line.js ***!
    \******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _sComponent = __webpack_require__(/*! ../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nvar _style = __webpack_require__(/*! ../../utilities/style */ \"./src/utilities/style.ts\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AdditionalLine = function (_SComponent) {\n  (0, _inherits3.default)(AdditionalLine, _SComponent);\n\n  function AdditionalLine(layout, _ref) {\n    var id = _ref.id,\n        meta = _ref.meta,\n        style = _ref.style,\n        legend = _ref.legend,\n        tooltip = _ref.tooltip;\n    (0, _classCallCheck3.default)(this, AdditionalLine);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (AdditionalLine.__proto__ || (0, _getPrototypeOf2.default)(AdditionalLine)).call(this));\n\n    _this.selection.attr('class', 'additional-group');\n\n    _this.line = _this.selection.append('line').attr('x1', 0).attr('y1', 0).attr('x2', layout.width).attr('y2', 0).style('stroke', style.color).style('fill', 'transparent');\n\n    (0, _style.applyStyle)(_this.line, style.line);\n\n    _this.path = _this.selection.append('path').style('stroke', style.color).style('fill', 'transparent');\n\n    (0, _style.applyStyle)(_this.path, style.line);\n\n    _this.id = id;\n    _this.meta = meta;\n    _this.style = style;\n    _this.legend = legend;\n    _this.tooltip = tooltip;\n\n    _this.dataType = 'array';return _this;\n  }\n\n  (0, _createClass3.default)(AdditionalLine, [{\n    key: 'plotScalar',\n    value: function plotScalar(scales, value) {\n      this.line.transition().duration(200).attr('y1', scales.yScale(value)).attr('y2', scales.yScale(value));\n      this.data = value;\n    }\n  }, {\n    key: 'plotArray',\n    value: function plotArray(scales, array) {\n      this.data = array.map(function (val, idx) {\n        return {\n          x: idx,\n          y: val\n        };\n      });\n\n      var path = d3.line().x(function (d) {\n        return scales.xScale(d.x);\n      }).y(function (d) {\n        return scales.yScale(d.y);\n      });\n\n      this.path.datum(this.data.filter(function (d) {\n        return d.y;\n      })).transition().duration(200).attr('d', path);\n\n      var r = void 0;\n      try {\n        r = this.style.point.r;\n      } catch (e) {\n        r = 2;\n      }\n\n      var circles = this.selection.selectAll('.point-additional').data(this.data.filter(function (d) {\n        return d.y;\n      }));\n\n      circles.exit().remove();\n\n      circles.enter().append('circle').merge(circles).attr('class', 'point-additional').transition(200).ease(d3.easeQuadOut).attr('cx', function (d) {\n        return scales.xScale(d.x);\n      }).attr('cy', function (d) {\n        return scales.yScale(d.y);\n      }).attr('r', r).style('stroke', this.style.color).style('fill', this.style.color);\n\n      (0, _style.applyStyle)(circles, this.style.point);\n    }\n  }, {\n    key: 'plot',\n    value: function plot(scales, data) {\n      if (typeof data === 'number') {\n        this.dataType = 'scalar';\n        this.path.attr('display', 'none');\n        this.line.attr('display', null);\n        this.plotScalar(scales, data);\n      } else {\n        this.dataType = 'array';\n        this.line.attr('display', 'none');\n        this.path.attr('display', null);\n        this.plotArray(scales, data);\n      }\n    }\n  }, {\n    key: 'query',\n    value: function query(idx) {\n      if (this.hidden) {\n        return false;\n      } else {\n        try {\n          if (this.dataType === 'scalar') {\n            return this.data;\n          } else {\n            return this.data[idx].y;\n          }\n        } catch (e) {\n          return false;\n        }\n      }\n    }\n  }]);\n  return AdditionalLine;\n}(_sComponent2.default);\n\nexports.default = AdditionalLine;\n\n//# sourceURL=webpack://d3Foresight/./src/components/time-chart/additional-line.js?");
  
  /***/ }),
  
  /***/ "./src/components/time-chart/baseline.js":
  /*!***********************************************!*\
    !*** ./src/components/time-chart/baseline.js ***!
    \***********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _tooltip = __webpack_require__(/*! ../../utilities/tooltip */ \"./src/utilities/tooltip.ts\");\n\nvar tt = _interopRequireWildcard(_tooltip);\n\nvar _misc = __webpack_require__(/*! ../../utilities/misc */ \"./src/utilities/misc.ts\");\n\nvar _sComponent = __webpack_require__(/*! ../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Baseline = function (_SComponent) {\n  (0, _inherits3.default)(Baseline, _SComponent);\n\n  function Baseline(layout, _ref) {\n    var tooltip = _ref.tooltip,\n        text = _ref.text,\n        description = _ref.description,\n        url = _ref.url;\n    (0, _classCallCheck3.default)(this, Baseline);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (Baseline.__proto__ || (0, _getPrototypeOf2.default)(Baseline)).call(this));\n\n    _this.selection.attr('class', 'baseline-group');\n\n    _this.line = _this.selection.append('line').attr('x1', 0).attr('y1', 0).attr('x2', layout.width).attr('y2', 0).attr('class', 'baseline');\n\n    _this.text = _this.selection.append('text').attr('transform', 'translate(' + (layout.width + 10) + ', 0)');\n\n    if (Array.isArray(text)) {\n      _this.text.append('tspan').text(text[0]).attr('x', 0);\n      text.slice(1).forEach(function (txt) {\n        _this.text.append('tspan').text(txt).attr('x', 0).attr('dy', '1em');\n      });\n    } else {\n      _this.text.append('tspan').text(text).attr('x', 0);\n    }\n\n    _this.text.on('mouseover', function () {\n      tooltip.hidden = false;\n    }).on('mouseout', function () {\n      tooltip.hidden = true;\n    }).on('mousemove', function () {\n      tooltip.render(tt.parseText({ text: description }));\n      tt.moveTooltip(tooltip, (0, _misc.selectUncle)(this, '.overlay'), 'left');\n    });\n\n    if (url) {\n      _this.text.style('cursor', 'pointer').on('click', function () {\n        window.open(url, '_blank');\n      });\n    }\n    return _this;\n  }\n\n  (0, _createClass3.default)(Baseline, [{\n    key: 'plot',\n    value: function plot(scales, baseline) {\n      if (baseline) {\n        this.hidden = false;\n      } else {\n        this.hidden = true;\n        return;\n      }\n\n      this.line.transition().duration(200).attr('y1', scales.yScale(baseline)).attr('y2', scales.yScale(baseline));\n\n      this.text.transition().duration(200).attr('dy', scales.yScale(baseline));\n    }\n  }]);\n  return Baseline;\n}(_sComponent2.default);\n\nexports.default = Baseline;\n\n//# sourceURL=webpack://d3Foresight/./src/components/time-chart/baseline.js?");
  
  /***/ }),
  
  /***/ "./src/components/time-chart/historical-lines.js":
  /*!*******************************************************!*\
    !*** ./src/components/time-chart/historical-lines.js ***!
    \*******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _tooltip = __webpack_require__(/*! ../../utilities/tooltip */ \"./src/utilities/tooltip.ts\");\n\nvar tt = _interopRequireWildcard(_tooltip);\n\nvar _misc = __webpack_require__(/*! ../../utilities/misc */ \"./src/utilities/misc.ts\");\n\nvar _sComponent = __webpack_require__(/*! ../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HistoricalLines = function (_SComponent) {\n  (0, _inherits3.default)(HistoricalLines, _SComponent);\n\n  function HistoricalLines(_ref) {\n    var tooltip = _ref.tooltip;\n    (0, _classCallCheck3.default)(this, HistoricalLines);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (HistoricalLines.__proto__ || (0, _getPrototypeOf2.default)(HistoricalLines)).call(this));\n\n    _this.selection.attr('class', 'history-group');\n    _this.tooltip = tooltip;\n    _this.id = 'History';\n    return _this;\n  }\n\n  (0, _createClass3.default)(HistoricalLines, [{\n    key: 'plot',\n    value: function plot(scales, historicalData) {\n      var _this2 = this;\n\n      this.clear();\n\n      var line = d3.line().x(function (d) {\n        return scales.xScale(d.x);\n      }).y(function (d) {\n        return scales.yScale(d.y);\n      });\n\n      historicalData.map(function (hd) {\n        var plottingData = hd.actual.map(function (data, idx) {\n          return {\n            x: idx,\n            y: data\n          };\n        });\n\n        var path = _this2.selection.append('path').attr('class', 'line-history').attr('id', hd.id + '-history');\n\n        path.datum(plottingData).transition().duration(200).attr('d', line);\n\n        var tooltip = _this2.tooltip;\n        path.on('mouseover', function () {\n          d3.select('.line-history.highlight').datum(plottingData).attr('d', line);\n          tooltip.hidden = false;\n        }).on('mouseout', function () {\n          d3.select('.line-history.highlight').datum([]).attr('d', line);\n          tooltip.hidden = true;\n        }).on('mousemove', function (event) {\n          tooltip.render(tt.parseText({ text: hd.id }));\n          tt.moveTooltip(tooltip, (0, _misc.selectUncle)(this, '.overlay'));\n        });\n      });\n\n      this.selection.append('path').attr('class', 'line-history highlight');\n    }\n  }]);\n  return HistoricalLines;\n}(_sComponent2.default);\n\nexports.default = HistoricalLines;\n\n//# sourceURL=webpack://d3Foresight/./src/components/time-chart/historical-lines.js?");
  
  /***/ }),
  
  /***/ "./src/components/time-chart/observed.js":
  /*!***********************************************!*\
    !*** ./src/components/time-chart/observed.js ***!
    \***********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _sComponent = __webpack_require__(/*! ../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Observed = function (_SComponent) {\n  (0, _inherits3.default)(Observed, _SComponent);\n\n  function Observed() {\n    (0, _classCallCheck3.default)(this, Observed);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (Observed.__proto__ || (0, _getPrototypeOf2.default)(Observed)).call(this));\n\n    _this.selection.attr('class', 'observed-group');\n    _this.line = _this.selection.append('path').attr('class', 'line-observed');\n    _this.id = 'Observed';\n    return _this;\n  }\n\n  (0, _createClass3.default)(Observed, [{\n    key: 'plot',\n    value: function plot(scales, observedData) {\n      this.observedData = observedData;\n      this.xScale = scales.xScale;\n      this.yScale = scales.yScale;\n    }\n  }, {\n    key: 'update',\n    value: function update(idx) {\n      var _this2 = this;\n\n      var filteredData = [];\n\n      try {\n        var _loop = function _loop(i) {\n          var yLags = _this2.observedData[idx - i].slice().filter(function (d) {\n            return d.lag <= i;\n          });\n          filteredData.push({\n            x: idx - i,\n            y: yLags.sort(function (a, b) {\n              return b.lag - a.lag;\n            })[0].value\n          });\n        };\n\n        for (var i = 0; i <= idx; i++) {\n          _loop(i);\n        }\n      } catch (e) {\n        filteredData = [];\n      }\n\n      var circles = this.selection.selectAll('.point-observed').data(filteredData);\n\n      circles.exit().remove();\n\n      circles.enter().append('circle').merge(circles).attr('class', 'point-observed').transition().duration(200).ease(d3.easeQuadOut).attr('cx', function (d) {\n        return _this2.xScale(d.x);\n      }).attr('cy', function (d) {\n        return _this2.yScale(d.y);\n      }).attr('r', 2);\n\n      var line = d3.line().x(function (d) {\n        return _this2.xScale(d.x);\n      }).y(function (d) {\n        return _this2.yScale(d.y);\n      });\n\n      this.line.datum(filteredData).transition().duration(200).attr('d', line);\n\n      filteredData.reverse();\n      this.filteredData = filteredData;\n    }\n  }, {\n    key: 'query',\n    value: function query(idx) {\n      if (this.hidden) {\n        return false;\n      } else {\n        try {\n          return this.filteredData[idx].y;\n        } catch (e) {\n          return false;\n        }\n      }\n    }\n  }]);\n  return Observed;\n}(_sComponent2.default);\n\nexports.default = Observed;\n\n//# sourceURL=webpack://d3Foresight/./src/components/time-chart/observed.js?");
  
  /***/ }),
  
  /***/ "./src/components/time-chart/overlay.js":
  /*!**********************************************!*\
    !*** ./src/components/time-chart/overlay.js ***!
    \**********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"./node_modules/babel-runtime/helpers/toConsumableArray.js\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _tooltip = __webpack_require__(/*! ../../utilities/tooltip */ \"./src/utilities/tooltip.ts\");\n\nvar tt = _interopRequireWildcard(_tooltip);\n\nvar _events = __webpack_require__(/*! ../../events */ \"./src/events.ts\");\n\nvar ev = _interopRequireWildcard(_events);\n\nvar _sComponent = __webpack_require__(/*! ../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nvar _additionalLine = __webpack_require__(/*! ../time-chart/additional-line */ \"./src/components/time-chart/additional-line.js\");\n\nvar _additionalLine2 = _interopRequireDefault(_additionalLine);\n\nvar _prediction = __webpack_require__(/*! ../time-chart/prediction */ \"./src/components/time-chart/prediction/index.js\");\n\nvar _prediction2 = _interopRequireDefault(_prediction);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar NoPredText = function (_SComponent) {\n  (0, _inherits3.default)(NoPredText, _SComponent);\n\n  function NoPredText() {\n    (0, _classCallCheck3.default)(this, NoPredText);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (NoPredText.__proto__ || (0, _getPrototypeOf2.default)(NoPredText)).call(this));\n\n    _this.selection.append('text').attr('class', 'no-pred-text').attr('transform', 'translate(20, 20)').text('Predictions not available');\n\n    _this.selection.append('text').attr('class', 'no-pred-text').attr('transform', 'translate(20, 40)').text('for selected time');\n    return _this;\n  }\n\n  return NoPredText;\n}(_sComponent2.default);\n\nvar HoverLine = function (_SComponent2) {\n  (0, _inherits3.default)(HoverLine, _SComponent2);\n\n  function HoverLine(layout) {\n    (0, _classCallCheck3.default)(this, HoverLine);\n\n    var _this2 = (0, _possibleConstructorReturn3.default)(this, (HoverLine.__proto__ || (0, _getPrototypeOf2.default)(HoverLine)).call(this));\n\n    _this2.line = _this2.selection.append('line').attr('class', 'hover-line').attr('x1', 0).attr('y1', 0).attr('x2', 0).attr('y2', layout.totalHeight);\n    return _this2;\n  }\n\n  (0, _createClass3.default)(HoverLine, [{\n    key: 'x',\n    set: function set(x) {\n      this.line.transition().duration(50).attr('x1', x).attr('x2', x);\n    }\n  }]);\n  return HoverLine;\n}(_sComponent2.default);\n\nvar TodayLine = function (_SComponent3) {\n  (0, _inherits3.default)(TodayLine, _SComponent3);\n\n  function TodayLine(layout) {\n    (0, _classCallCheck3.default)(this, TodayLine);\n\n    var _this3 = (0, _possibleConstructorReturn3.default)(this, (TodayLine.__proto__ || (0, _getPrototypeOf2.default)(TodayLine)).call(this));\n\n    _this3.line = _this3.selection.append('line').attr('class', 'now-line').attr('x1', 0).attr('y1', 0).attr('x2', 0).attr('y2', layout.totalHeight);\n\n    _this3.text = _this3.selection.append('text').attr('class', 'now-text').attr('transform', 'translate(15, 10) rotate(-90)').style('text-anchor', 'end').text('Today');\n    return _this3;\n  }\n\n  (0, _createClass3.default)(TodayLine, [{\n    key: 'x',\n    set: function set(x) {\n      this.line.attr('x1', x).attr('x2', x);\n\n      this.text.attr('dy', x);\n    }\n  }]);\n  return TodayLine;\n}(_sComponent2.default);\n\nvar Overlay = function (_SComponent4) {\n  (0, _inherits3.default)(Overlay, _SComponent4);\n\n  function Overlay(layout, _ref) {\n    var tooltip = _ref.tooltip,\n        uuid = _ref.uuid;\n    (0, _classCallCheck3.default)(this, Overlay);\n\n    var _this4 = (0, _possibleConstructorReturn3.default)(this, (Overlay.__proto__ || (0, _getPrototypeOf2.default)(Overlay)).call(this));\n\n    _this4.noPredText = _this4.append(new NoPredText(layout));\n    _this4.todayLine = _this4.append(new TodayLine(layout));\n    _this4.hoverLine = _this4.append(new HoverLine(layout));\n    _this4.hoverLine.hidden = true;\n\n    _this4.overlay = _this4.selection.append('rect').attr('class', 'overlay').attr('height', layout.totalHeight).attr('width', layout.width).on('mouseover', function () {\n      _this4.hoverLine.hidden = false;\n      tooltip.hidden = false;\n    }).on('mouseout', function () {\n      _this4.hoverLine.hidden = true;\n      tooltip.hidden = true;\n    });\n\n    _this4.tooltip = tooltip;\n    _this4.uuid = uuid;\n    return _this4;\n  }\n\n  (0, _createClass3.default)(Overlay, [{\n    key: 'plot',\n    value: function plot(scales, queryObjects) {\n      var todayX = scales.xScaleDate(new Date());\n      if (todayX >= scales.xScalePoint(scales.ticks[0]) && todayX <= scales.xScalePoint(scales.ticks[scales.ticks.length - 1])) {\n        this.todayLine.x = todayX;\n        this.todayLine.hidden = false;\n      } else {\n        this.todayLine.hidden = true;\n      }\n\n      var objects = {\n        static: queryObjects.filter(function (q) {\n          return ['Actual', 'Observed'].indexOf(q.id) > -1;\n        }),\n        models: queryObjects.filter(function (q) {\n          return q instanceof _prediction2.default;\n        }),\n        additional: queryObjects.filter(function (q) {\n          return q instanceof _additionalLine2.default && q.tooltip;\n        })\n      };\n\n      var that = this;\n      this.overlay.on('mousemove', function () {\n        var mouse = d3.mouse(this);\n\n        var index = Math.round(scales.xScale.invert(mouse[0]));\n        var snappedX = scales.xScale(index);\n\n        that.hoverLine.x = snappedX;\n\n        var visibleModels = objects.models.filter(function (q) {\n          return q.query(index) !== false;\n        });\n\n        var ttTitle = '';\n        if (visibleModels.length > 0) {\n          var aheadIndex = visibleModels[0].displayedIdx(index);\n          if (aheadIndex !== null) {\n            ttTitle = aheadIndex + 1 + ' ahead';\n          }\n        }\n\n        that.tooltip.render(tt.parsePredictions({\n          title: ttTitle,\n          predictions: [].concat((0, _toConsumableArray3.default)(objects.static), (0, _toConsumableArray3.default)(objects.additional), (0, _toConsumableArray3.default)(objects.models)),\n          index: index\n        }));\n\n        tt.moveTooltip(that.tooltip, d3.select(this));\n      }).on('click', function () {\n        ev.publish(that.uuid, ev.JUMP_TO_INDEX_INTERNAL, Math.round(scales.xScale.invert(d3.mouse(this)[0])));\n      });\n    }\n  }, {\n    key: 'update',\n    value: function update(predictions) {\n      this.noPredText.hidden = !predictions.every(function (p) {\n        return p.noData;\n      });\n    }\n  }]);\n  return Overlay;\n}(_sComponent2.default);\n\nexports.default = Overlay;\n\n//# sourceURL=webpack://d3Foresight/./src/components/time-chart/overlay.js?");
  
  /***/ }),
  
  /***/ "./src/components/time-chart/prediction/index.js":
  /*!*******************************************************!*\
    !*** ./src/components/time-chart/prediction/index.js ***!
    \*******************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = __webpack_require__(/*! babel-runtime/helpers/get */ \"./node_modules/babel-runtime/helpers/get.js\");\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _sComponent = __webpack_require__(/*! ../../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nvar _lineMarker = __webpack_require__(/*! ./line-marker */ \"./src/components/time-chart/prediction/line-marker.js\");\n\nvar _lineMarker2 = _interopRequireDefault(_lineMarker);\n\nvar _onsetMarker = __webpack_require__(/*! ./onset-marker */ \"./src/components/time-chart/prediction/onset-marker.js\");\n\nvar _onsetMarker2 = _interopRequireDefault(_onsetMarker);\n\nvar _peakMarker = __webpack_require__(/*! ./peak-marker */ \"./src/components/time-chart/prediction/peak-marker.js\");\n\nvar _peakMarker2 = _interopRequireDefault(_peakMarker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Prediction = function (_SComponent) {\n  (0, _inherits3.default)(Prediction, _SComponent);\n\n  function Prediction(_ref) {\n    var id = _ref.id,\n        meta = _ref.meta,\n        onsetY = _ref.onsetY,\n        cid = _ref.cid,\n        tooltip = _ref.tooltip,\n        onset = _ref.onset,\n        peak = _ref.peak,\n        style = _ref.style;\n    (0, _classCallCheck3.default)(this, Prediction);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (Prediction.__proto__ || (0, _getPrototypeOf2.default)(Prediction)).call(this));\n\n    _this.lineMarker = _this.append(new _lineMarker2.default(id, style));\n    if (onset) {\n      _this.onsetMarker = _this.append(new _onsetMarker2.default(id, onsetY, style));\n    }\n    if (peak) {\n      _this.peakMarker = _this.append(new _peakMarker2.default(id, style));\n    }\n\n    _this.style = style;\n    _this.id = id;\n    _this.meta = meta;\n    _this.cid = cid;\n    _this.tooltip = tooltip;\n    _this.show = {\n      onset: onset,\n      peak: peak\n    };\n\n    _this._hidden = false;\n\n    _this.noData = true;\n    return _this;\n  }\n\n  (0, _createClass3.default)(Prediction, [{\n    key: 'plot',\n    value: function plot(scales, modelData) {\n      this.modelData = modelData;\n      this.displayedData = Array(this.modelData.length).fill(false);\n      this.scales = scales;\n    }\n  }, {\n    key: 'update',\n    value: function update(idx) {\n      var _this2 = this;\n\n      var currData = this.modelData[idx];\n      if (currData === null) {\n        this.noData = true;\n        this.hideMarkers();\n      } else {\n        this.noData = false;\n        if (!this.hidden) {\n          this.showMarkers();\n        }\n\n        if (this.show.onset) {\n          this.onsetMarker.move(this.config, currData.onsetTime);\n        }\n        if (this.show.peak) {\n          this.peakMarker.move(this.config, currData.peakTime, currData.peakValue);\n        }\n\n        var series = [];\n        var idxOverflow = Math.min(0, this.modelData.length - (idx + currData.series.length));\n        var displayLimit = currData.series.length - idxOverflow;\n\n        for (var i = 0; i < displayLimit; i++) {\n          series.push({\n            index: i + idx + 1,\n            point: currData.series[i].point,\n            low: this.cid === -1 ? currData.series[i].point : currData.series[i].low[this.cid],\n            high: this.cid === -1 ? currData.series[i].point : currData.series[i].high[this.cid]\n          });\n        }\n\n        this.displayedData = Array(this.modelData.length).fill(false);\n        series.forEach(function (d) {\n          _this2.displayedData[d.index] = d.point;\n        });\n\n        this.lineMarker.move(this.config, series);\n      }\n    }\n  }, {\n    key: 'hideMarkers',\n    value: function hideMarkers() {\n      if (this.show.onset) {\n        this.onsetMarker.hidden = true;\n      }\n      if (this.show.peak) {\n        this.peakMarker.hidden = true;\n      }\n      this.lineMarker.hidden = true;\n    }\n  }, {\n    key: 'showMarkers',\n    value: function showMarkers() {\n      if (this.show.onset) {\n        this.onsetMarker.hidden = false;\n      }\n      if (this.show.peak) {\n        this.peakMarker.hidden = false;\n      }\n      this.lineMarker.hidden = false;\n    }\n  }, {\n    key: 'clear',\n    value: function clear() {\n      (0, _get3.default)(Prediction.prototype.__proto__ || (0, _getPrototypeOf2.default)(Prediction.prototype), 'clear', this).call(this);\n      this.selection.remove();\n    }\n  }, {\n    key: 'query',\n    value: function query(idx) {\n      return !this.noData && !this.hidden && this.displayedData[idx];\n    }\n  }, {\n    key: 'displayedIdx',\n    value: function displayedIdx(idx) {\n      for (var i = 0; i < this.displayedData.length; i++) {\n        if (this.displayedData[i] !== false) return idx - i;\n      }\n      return null;\n    }\n  }, {\n    key: 'config',\n    get: function get() {\n      return {\n        scales: this.scales,\n        id: this.id,\n        meta: this.meta,\n        style: this.style,\n        cid: this.cid,\n        tooltip: this.tooltip\n      };\n    }\n  }, {\n    key: 'hidden',\n    get: function get() {\n      return this._hidden;\n    },\n    set: function set(hide) {\n      if (hide) {\n        this.hideMarkers();\n      } else {\n        if (!this.noData) {\n          this.showMarkers();\n        }\n      }\n      this._hidden = hide;\n    }\n  }]);\n  return Prediction;\n}(_sComponent2.default);\n\nexports.default = Prediction;\n\n//# sourceURL=webpack://d3Foresight/./src/components/time-chart/prediction/index.js?");
  
  /***/ }),
  
  /***/ "./src/components/time-chart/prediction/line-marker.js":
  /*!*************************************************************!*\
    !*** ./src/components/time-chart/prediction/line-marker.js ***!
    \*************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _sComponent = __webpack_require__(/*! ../../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nvar _style = __webpack_require__(/*! ../../../utilities/style */ \"./src/utilities/style.ts\");\n\nvar _misc = __webpack_require__(/*! ../../../utilities/misc */ \"./src/utilities/misc.ts\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LineMarker = function (_SComponent) {\n  (0, _inherits3.default)(LineMarker, _SComponent);\n\n  function LineMarker(id, style) {\n    (0, _classCallCheck3.default)(this, LineMarker);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (LineMarker.__proto__ || (0, _getPrototypeOf2.default)(LineMarker)).call(this));\n\n    _this.selection.attr('class', 'prediction-group').attr('id', (0, _misc.kebabCase)(id) + '-marker');\n\n    _this.selection.append('path').attr('class', 'area-prediction').style('fill', style.color);\n    (0, _style.applyStyle)(_this.selection.select('.area-prediction'), style.area);\n\n    _this.selection.append('path').attr('class', 'line-prediction').style('stroke', style.color);\n    (0, _style.applyStyle)(_this.selection.select('.line-prediction'), style.line);\n\n    _this.selection.selectAll('.point-prediction').enter().append('circle').attr('class', 'point-prediction');\n    return _this;\n  }\n\n  (0, _createClass3.default)(LineMarker, [{\n    key: 'move',\n    value: function move(cfg, series) {\n      var circles = this.selection.selectAll('.point-prediction').data(series);\n\n      circles.exit().remove();\n\n      circles.enter().append('circle').merge(circles).attr('class', 'point-prediction').transition().duration(200).ease(d3.easeQuadOut).attr('cx', function (d) {\n        return cfg.scales.xScale(d.index);\n      }).attr('cy', function (d) {\n        return cfg.scales.yScale(d.point);\n      }).attr('r', 3).style('stroke', cfg.style.color);\n      (0, _style.applyStyle)(circles, cfg.style.point);\n\n      var line = d3.line().x(function (d) {\n        return cfg.scales.xScale(d.index);\n      }).y(function (d) {\n        return cfg.scales.yScale(d.point);\n      });\n\n      this.selection.select('.line-prediction').datum(series).transition().duration(200).attr('d', line);\n\n      var area = d3.area().x(function (d) {\n        return cfg.scales.xScale(d.index);\n      }).y1(function (d) {\n        return cfg.scales.yScale(d.low);\n      }).y0(function (d) {\n        return cfg.scales.yScale(d.high);\n      });\n\n      this.selection.select('.area-prediction').datum(series).transition().duration(200).attr('d', area);\n    }\n  }]);\n  return LineMarker;\n}(_sComponent2.default);\n\nexports.default = LineMarker;\n\n//# sourceURL=webpack://d3Foresight/./src/components/time-chart/prediction/line-marker.js?");
  
  /***/ }),
  
  /***/ "./src/components/time-chart/prediction/onset-marker.js":
  /*!**************************************************************!*\
    !*** ./src/components/time-chart/prediction/onset-marker.js ***!
    \**************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _tooltip = __webpack_require__(/*! ../../../utilities/tooltip */ \"./src/utilities/tooltip.ts\");\n\nvar tt = _interopRequireWildcard(_tooltip);\n\nvar _colors = __webpack_require__(/*! ../../../utilities/colors */ \"./src/utilities/colors.ts\");\n\nvar colors = _interopRequireWildcard(_colors);\n\nvar _misc = __webpack_require__(/*! ../../../utilities/misc */ \"./src/utilities/misc.ts\");\n\nvar _sComponent = __webpack_require__(/*! ../../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar OnsetMarker = function (_SComponent) {\n  (0, _inherits3.default)(OnsetMarker, _SComponent);\n\n  function OnsetMarker(id, onsetY, style) {\n    (0, _classCallCheck3.default)(this, OnsetMarker);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (OnsetMarker.__proto__ || (0, _getPrototypeOf2.default)(OnsetMarker)).call(this));\n\n    _this.selection.attr('class', 'onset-group').attr('id', (0, _misc.kebabCase)(id) + '-marker');\n\n    var color = style.color;\n    var stp = 6;\n    var colorPoint = colors.hexToRgba(color, 0.8);\n    var colorRange = colors.hexToRgba(color, 0.6);\n\n    _this.selection.append('line').attr('y1', onsetY).attr('y2', onsetY).attr('class', 'range onset-range').style('stroke', colorRange);\n\n    _this.selection.append('line').attr('y1', onsetY - stp / 2).attr('y2', onsetY + stp / 2).attr('class', 'stopper onset-stopper onset-low').style('stroke', colorRange);\n\n    _this.selection.append('line').attr('y1', onsetY - stp / 2).attr('y2', onsetY + stp / 2).attr('class', 'stopper onset-stopper onset-high').style('stroke', colorRange);\n\n    _this.point = _this.selection.append('circle').attr('r', 3).attr('cy', onsetY).attr('class', 'onset-mark').style('stroke', 'transparent').style('fill', colorPoint);\n\n    _this.color = color;\n    return _this;\n  }\n\n  (0, _createClass3.default)(OnsetMarker, [{\n    key: 'move',\n    value: function move(cfg, onset) {\n      var _this2 = this;\n\n      this.point.transition().duration(200).attr('cx', cfg.scales.xScale(onset.point));\n\n      this.point.on('mouseover', function () {\n        _this2.highlight = true;\n        cfg.tooltip.hidden = false;\n        cfg.tooltip.render(tt.parsePoint({\n          title: cfg.id,\n          values: [{ key: 'Onset Time', value: cfg.scales.ticks[onset.point] }],\n          color: _this2.color\n        }));\n      }).on('mouseout', function () {\n        _this2.highlight = false;\n        cfg.tooltip.hidden = true;\n      }).on('mousemove', function () {\n        tt.moveTooltip(cfg.tooltip, (0, _misc.selectUncle)(this, '.overlay'));\n      });\n\n      if (cfg.cid === -1) {\n        this.selection.selectAll('line').attr('display', 'none');\n      } else {\n        this.selection.selectAll('line').attr('display', null);\n\n        this.selection.select('.onset-range').transition().duration(200).attr('x1', cfg.scales.xScale(onset.low[cfg.cid])).attr('x2', cfg.scales.xScale(onset.high[cfg.cid]));\n\n        this.selection.select('.onset-low').transition().duration(200).attr('x1', cfg.scales.xScale(onset.low[cfg.cid])).attr('x2', cfg.scales.xScale(onset.low[cfg.cid]));\n\n        this.selection.select('.onset-high').transition().duration(200).attr('x1', cfg.scales.xScale(onset.high[cfg.cid])).attr('x2', cfg.scales.xScale(onset.high[cfg.cid]));\n      }\n    }\n  }, {\n    key: 'highlight',\n    set: function set(state) {\n      var colorHover = colors.hexToRgba(this.color, 0.3);\n\n      this.point.transition().duration(200).style('stroke', state ? colorHover : 'transparent');\n\n      this.selection.selectAll('line').transition().duration(200).style('stroke-width', state ? '2px' : '1px');\n    }\n  }]);\n  return OnsetMarker;\n}(_sComponent2.default);\n\nexports.default = OnsetMarker;\n\n//# sourceURL=webpack://d3Foresight/./src/components/time-chart/prediction/onset-marker.js?");
  
  /***/ }),
  
  /***/ "./src/components/time-chart/prediction/peak-marker.js":
  /*!*************************************************************!*\
    !*** ./src/components/time-chart/prediction/peak-marker.js ***!
    \*************************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _tooltip = __webpack_require__(/*! ../../../utilities/tooltip */ \"./src/utilities/tooltip.ts\");\n\nvar tt = _interopRequireWildcard(_tooltip);\n\nvar _colors = __webpack_require__(/*! ../../../utilities/colors */ \"./src/utilities/colors.ts\");\n\nvar colors = _interopRequireWildcard(_colors);\n\nvar _misc = __webpack_require__(/*! ../../../utilities/misc */ \"./src/utilities/misc.ts\");\n\nvar _sComponent = __webpack_require__(/*! ../../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PeakMarker = function (_SComponent) {\n  (0, _inherits3.default)(PeakMarker, _SComponent);\n\n  function PeakMarker(id, style) {\n    (0, _classCallCheck3.default)(this, PeakMarker);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (PeakMarker.__proto__ || (0, _getPrototypeOf2.default)(PeakMarker)).call(this));\n\n    _this.selection.attr('class', 'peak-group').attr('id', (0, _misc.kebabCase)(id) + '-marker');\n\n    var color = style.color;\n    var colorPoint = colors.hexToRgba(color, 0.8);\n    var colorRange = colors.hexToRgba(color, 0.6);\n\n    _this.selection.append('line').attr('class', 'range peak-range peak-range-x').style('stroke', colorRange).style('stroke-dasharray', '5, 5');\n\n    _this.selection.append('line').attr('class', 'range peak-range peak-range-y').style('stroke', colorRange).style('stroke-dasharray', '5, 5');\n\n    _this.selection.append('line').attr('class', 'stopper peak-stopper peak-low-x').style('stroke', colorRange);\n\n    _this.selection.append('line').attr('class', 'stopper peak-stopper peak-high-x').style('stroke', colorRange);\n\n    _this.selection.append('line').attr('class', 'stopper peak-stopper peak-low-y').style('stroke', colorRange);\n\n    _this.selection.append('line').attr('class', 'stopper peak-stopper peak-high-y').style('stroke', colorRange);\n\n    _this.point = _this.selection.append('circle').attr('r', 5).attr('class', 'peak-mark').style('stroke', 'transparent').style('fill', colorPoint);\n\n    _this.color = color;\n    return _this;\n  }\n\n  (0, _createClass3.default)(PeakMarker, [{\n    key: 'move',\n    value: function move(cfg, peakTime, peakValue) {\n      var _this2 = this;\n\n      var leftW = cfg.scales.xScale(peakTime.point);\n      var leftP = cfg.scales.yScale(peakValue.point);\n\n      this.point.transition().duration(200).attr('cx', leftW).attr('cy', leftP);\n\n      this.point.on('mouseover', function () {\n        _this2.highlight = true;\n        cfg.tooltip.hidden = false;\n        cfg.tooltip.render(tt.parsePoint({\n          title: cfg.id,\n          values: [{ key: 'Peak Percent', value: peakValue.point }, { key: 'Peak Time', value: cfg.scales.ticks[peakTime.point] }],\n          color: _this2.color\n        }));\n      }).on('mouseout', function () {\n        _this2.highlight = false;\n        cfg.tooltip.hidden = true;\n      }).on('mousemove', function () {\n        tt.moveTooltip(cfg.tooltip, (0, _misc.selectUncle)(this, '.overlay'));\n      });\n\n      if (cfg.cid === -1) {\n        this.selection.selectAll('line').attr('visibility', 'hidden');\n      } else {\n        this.selection.selectAll('line').attr('visibility', null);\n\n        this.selection.select('.peak-range-x').transition().duration(200).attr('x1', cfg.scales.xScale(peakTime.low[cfg.cid])).attr('x2', cfg.scales.xScale(peakTime.high[cfg.cid])).attr('y1', cfg.scales.yScale(peakValue.point)).attr('y2', cfg.scales.yScale(peakValue.point));\n\n        this.selection.select('.peak-range-y').transition().duration(200).attr('x1', cfg.scales.xScale(peakTime.point)).attr('x2', cfg.scales.xScale(peakTime.point)).attr('y1', cfg.scales.yScale(peakValue.low[cfg.cid])).attr('y2', cfg.scales.yScale(peakValue.high[cfg.cid]));\n\n        this.selection.select('.peak-low-x').transition().duration(200).attr('x1', cfg.scales.xScale(peakTime.low[cfg.cid])).attr('x2', cfg.scales.xScale(peakTime.low[cfg.cid])).attr('y1', cfg.scales.yScale(peakValue.point) - 5).attr('y2', cfg.scales.yScale(peakValue.point) + 5);\n\n        this.selection.select('.peak-high-x').transition().duration(200).attr('x1', cfg.scales.xScale(peakTime.high[cfg.cid])).attr('x2', cfg.scales.xScale(peakTime.high[cfg.cid])).attr('y1', cfg.scales.yScale(peakValue.point) - 5).attr('y2', cfg.scales.yScale(peakValue.point) + 5);\n\n        leftW = cfg.scales.xScale(peakTime.point);\n        this.selection.select('.peak-low-y').transition().duration(200).attr('x1', (!leftW ? 0 : leftW) - 5).attr('x2', (!leftW ? 0 : leftW) + 5).attr('y1', cfg.scales.yScale(peakValue.low[cfg.cid])).attr('y2', cfg.scales.yScale(peakValue.low[cfg.cid]));\n\n        this.selection.select('.peak-high-y').transition().duration(200).attr('x1', (!leftW ? 0 : leftW) - 5).attr('x2', (!leftW ? 0 : leftW) + 5).attr('y1', cfg.scales.yScale(peakValue.high[cfg.cid])).attr('y2', cfg.scales.yScale(peakValue.high[cfg.cid]));\n      }\n    }\n  }, {\n    key: 'highlight',\n    set: function set(state) {\n      var colorHover = colors.hexToRgba(this.color, 0.3);\n\n      this.point.transition().duration(200).style('stroke', state ? colorHover : 'transparent');\n\n      this.selection.selectAll('line').transition().duration(200).style('stroke-width', state ? '2px' : '0.5px');\n\n      this.selection.selectAll('.range').style('stroke-dasharray', state ? null : '5, 5');\n    }\n  }]);\n  return PeakMarker;\n}(_sComponent2.default);\n\nexports.default = PeakMarker;\n\n//# sourceURL=webpack://d3Foresight/./src/components/time-chart/prediction/peak-marker.js?");
  
  /***/ }),
  
  /***/ "./src/components/time-chart/timerect.js":
  /*!***********************************************!*\
    !*** ./src/components/time-chart/timerect.js ***!
    \***********************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _sComponent = __webpack_require__(/*! ../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TimeRect = function (_SComponent) {\n  (0, _inherits3.default)(TimeRect, _SComponent);\n\n  function TimeRect(layout) {\n    (0, _classCallCheck3.default)(this, TimeRect);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (TimeRect.__proto__ || (0, _getPrototypeOf2.default)(TimeRect)).call(this));\n\n    _this.rect = _this.selection.append('rect').attr('x', 0).attr('y', 0).attr('width', 0).attr('height', layout.height).attr('class', 'timerect');\n\n    _this.text = _this.selection.append('text').attr('class', 'data-version-text').attr('transform', 'translate(15, 0) rotate(-90)').style('text-anchor', 'end');\n    return _this;\n  }\n\n  (0, _createClass3.default)(TimeRect, [{\n    key: 'plot',\n    value: function plot(scales) {\n      this.xScaleDate = scales.xScaleDate;\n    }\n  }, {\n    key: 'update',\n    value: function update(time) {\n      if (time === null) {\n        this.hidden = true;\n      } else {\n        this.hidden = false;\n        this.rect.transition().duration(200).attr('width', this.xScaleDate(time));\n\n        this.text.transition().duration(200).attr('transform', 'translate(' + (this.xScaleDate(time) + 15) + ', 10) rotate(-90)');\n      }\n    }\n  }]);\n  return TimeRect;\n}(_sComponent2.default);\n\nexports.default = TimeRect;\n\n//# sourceURL=webpack://d3Foresight/./src/components/time-chart/timerect.js?");
  
  /***/ }),
  
  /***/ "./src/components/time-chart/timezero-line.js":
  /*!****************************************************!*\
    !*** ./src/components/time-chart/timezero-line.js ***!
    \****************************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _sComponent = __webpack_require__(/*! ../s-component */ \"./src/components/s-component.js\");\n\nvar _sComponent2 = _interopRequireDefault(_sComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TimezeroLine = function (_SComponent) {\n  (0, _inherits3.default)(TimezeroLine, _SComponent);\n\n  function TimezeroLine(layout) {\n    (0, _classCallCheck3.default)(this, TimezeroLine);\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (TimezeroLine.__proto__ || (0, _getPrototypeOf2.default)(TimezeroLine)).call(this));\n\n    _this.line = _this.selection.append('line').attr('class', 'timezero-line').attr('x1', 0).attr('y1', 0).attr('x2', 0).attr('y2', layout.totalHeight);\n\n    _this.text = _this.selection.append('text').attr('class', 'timezero-text').attr('transform', 'translate(-10, 10) rotate(-90)').style('text-anchor', 'end').text('Timezero');\n    return _this;\n  }\n\n  (0, _createClass3.default)(TimezeroLine, [{\n    key: 'plot',\n    value: function plot(scales) {\n      this.xScale = scales.xScale;\n    }\n  }, {\n    key: 'update',\n    value: function update(idx) {\n      this.x = this.xScale(idx);\n    }\n  }, {\n    key: 'x',\n    set: function set(x) {\n      this.line.transition().duration(200).attr('x1', x).attr('x2', x);\n\n      this.text.transition().duration(200).attr('dy', x);\n    }\n  }, {\n    key: 'textHidden',\n    set: function set(state) {\n      this.text.style('display', state ? 'none' : null);\n    }\n  }]);\n  return TimezeroLine;\n}(_sComponent2.default);\n\nexports.default = TimezeroLine;\n\n//# sourceURL=webpack://d3Foresight/./src/components/time-chart/timezero-line.js?");
  
  /***/ }),
  
  /***/ "./src/distribution-chart.js":
  /*!***********************************!*\
    !*** ./src/distribution-chart.js ***!
    \***********************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"./node_modules/babel-runtime/helpers/extends.js\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _assign = __webpack_require__(/*! babel-runtime/core-js/object/assign */ \"./node_modules/babel-runtime/core-js/object/assign.js\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _axisX = __webpack_require__(/*! ./components/common/axis-x */ \"./src/components/common/axis-x.js\");\n\nvar _controlPanel = __webpack_require__(/*! ./components/common/control-panel */ \"./src/components/common/control-panel/index.js\");\n\nvar _controlPanel2 = _interopRequireDefault(_controlPanel);\n\nvar _distributionPanel = __webpack_require__(/*! ./components/distribution-chart/distribution-panel */ \"./src/components/distribution-chart/distribution-panel.js\");\n\nvar _distributionPanel2 = _interopRequireDefault(_distributionPanel);\n\nvar _pointer = __webpack_require__(/*! ./components/distribution-chart/pointer */ \"./src/components/distribution-chart/pointer.js\");\n\nvar _pointer2 = _interopRequireDefault(_pointer);\n\nvar _domains = __webpack_require__(/*! ./utilities/data/domains */ \"./src/utilities/data/domains.ts\");\n\nvar domains = _interopRequireWildcard(_domains);\n\nvar _chart = __webpack_require__(/*! ./chart */ \"./src/chart.ts\");\n\nvar _chart2 = _interopRequireDefault(_chart);\n\nvar _verify = __webpack_require__(/*! ./utilities/data/verify */ \"./src/utilities/data/verify.js\");\n\nvar _config = __webpack_require__(/*! ./utilities/data/config */ \"./src/utilities/data/config.ts\");\n\nvar _events = __webpack_require__(/*! ./events */ \"./src/events.ts\");\n\nvar ev = _interopRequireWildcard(_events);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DistributionChart = function (_Chart) {\n  (0, _inherits3.default)(DistributionChart, _Chart);\n\n  function DistributionChart(element) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    (0, _classCallCheck3.default)(this, DistributionChart);\n\n    var defaultConfig = {\n      pointType: 'week',\n      confidenceIntervals: [],\n      margin: {\n        top: 5,\n        right: 60,\n        bottom: 80,\n        left: 5\n      }\n    };\n\n    var selection = d3.select(element).attr('class', 'd3f-chart d3f-distribution-chart');\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (DistributionChart.__proto__ || (0, _getPrototypeOf2.default)(DistributionChart)).call(this, selection, (0, _assign2.default)({}, defaultConfig, options)));\n\n    _this.xScale = d3.scaleLinear().range([0, _this.width]);\n    _this.xScaleDate = d3.scaleTime().range([0, _this.width]);\n    _this.xScalePoint = d3.scalePoint().range([0, _this.width]);\n\n    _this.xAxis = _this.append(new _axisX.XAxisDate(_this.layout, (0, _extends3.default)({}, _this.config.axes.x, {\n      tooltip: _this.tooltip\n    })));\n\n    var panelMargin = {\n      top: 5, right: 10, bottom: 70, left: 50\n    };\n    var panelHeight = _this.height / 2;\n    var panelWidth = _this.width / 2;\n    var panelPositions = [[0, 0], [0, panelHeight], [panelWidth, 0], [panelWidth, panelHeight]];\n\n    _this.panels = panelPositions.map(function (pos) {\n      var svg = _this.svg.append('svg').attr('x', pos[0]).attr('y', pos[1]).attr('width', panelWidth).attr('height', panelHeight).append('g').attr('transform', 'translate(' + panelMargin.left + ', ' + panelMargin.top + ')');\n\n      var panel = new _distributionPanel2.default({\n        width: panelWidth - panelMargin.left - panelMargin.right,\n        height: panelHeight - panelMargin.top - panelMargin.bottom\n      }, { tooltip: _this.tooltip });\n      svg.append(function () {\n        return panel.node;\n      });\n      return panel;\n    });\n\n    _this.dropdowns = panelPositions.map(function (pos) {\n      var wrapperWrapper = _this.selection.append('div');\n      wrapperWrapper.style('text-align', 'center');\n\n      var wrapper = wrapperWrapper.append('span');\n      wrapper.attr('class', 'select is-small');\n      var dd = wrapper.append('select');\n\n      wrapperWrapper.style('position', 'absolute');\n      wrapperWrapper.style('left', pos[0] + panelMargin.left / 2 + 'px');\n      wrapperWrapper.style('width', panelWidth + 'px');\n      wrapperWrapper.style('top', pos[1] + panelHeight - panelMargin.bottom + 30 + 'px');\n\n      return dd;\n    });\n\n    _this.pointer = _this.append(new _pointer2.default(_this.layout, { uuid: _this.uuid }));\n    _this.controlPanel = new _controlPanel2.default({ ci: false, tooltip: _this.tooltip, uuid: _this.uuid });\n    _this.selection.append(function () {\n      return _this.controlPanel.node;\n    });\n\n    ev.addSub(_this.uuid, ev.PANEL_MOVE_NEXT, function (msg, data) {\n      var oldIdx = _this.currentIdx;\n      var newIdx = _this.deltaIndex(1);\n      if (newIdx !== oldIdx) {\n        ev.publish(_this.uuid, ev.JUMP_TO_INDEX, newIdx);\n      }\n    });\n\n    ev.addSub(_this.uuid, ev.PANEL_MOVE_PREV, function (msg, data) {\n      var oldIdx = _this.currentIdx;\n      var newIdx = _this.deltaIndex(-1);\n      if (newIdx !== oldIdx) {\n        ev.publish(_this.uuid, ev.JUMP_TO_INDEX, newIdx);\n      }\n    });\n\n    ev.addSub(_this.uuid, ev.LEGEND_ITEM, function (msg, _ref) {\n      var id = _ref.id,\n          state = _ref.state;\n\n      _this.panels.forEach(function (p) {\n        var predMarker = p.predictions.find(function (p) {\n          return p.id === id;\n        });\n        if (predMarker) {\n          predMarker.hidden = !state;\n        }\n      });\n    });\n    return _this;\n  }\n\n  (0, _createClass3.default)(DistributionChart, [{\n    key: 'plot',\n    value: function plot(data) {\n      var _this2 = this;\n\n      (0, _verify.verifyDistChartData)(data);\n      var dataConfig = (0, _config.getDistChartDataConfig)(data, this.config);\n      this.ticks = dataConfig.ticks;\n      this.currentIdx = data.currentIdx;\n\n      this.dropdowns.forEach(function (dd) {\n        dd.selectAll('*').remove();\n        dataConfig.curveNames.forEach(function (cn, idx) {\n          var option = dd.append('option');\n          option.text(cn);\n          option.attr('value', idx);\n        });\n      });\n\n      this.xScaleDate.domain(domains.xDate(data, dataConfig));\n      this.xScalePoint.domain(domains.xPoint(data, dataConfig));\n      this.xScale.domain(domains.x(data, dataConfig));\n\n      this.xAxis.plot(this.scales);\n      this.pointer.plot(this.scales, this.currentIdx);\n\n      var yMaxima = domains.yCurveMaxima(data);\n\n      this.panels.forEach(function (p, idx) {\n        if (!p.selectedCurveIdx) {\n          p.selectedCurveIdx = idx;\n          _this2.dropdowns[idx].property('value', idx);\n        } else {\n          _this2.dropdowns[idx].property('value', p.selectedCurveIdx);\n        }\n        p.plot(data, yMaxima);\n      });\n\n      this.dropdowns.forEach(function (dd, idx) {\n        var currentPanel = _this2.panels[idx];\n        dd.on('change', function () {\n          var selectedIdx = parseInt(d3.select(this).property('value'));\n          currentPanel.selectedCurveIdx = selectedIdx;\n          currentPanel.plot(data, yMaxima);\n        });\n      });\n\n      this.controlPanel.plot(this.panels[0].predictions, [], dataConfig);\n\n      this.controlPanel.update(this.panels[0].predictions);\n    }\n  }]);\n  return DistributionChart;\n}(_chart2.default);\n\nexports.default = DistributionChart;\n\n//# sourceURL=webpack://d3Foresight/./src/distribution-chart.js?");
  
  /***/ }),
  
  /***/ "./src/events.ts":
  /*!***********************!*\
    !*** ./src/events.ts ***!
    \***********************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n/**\n * Module specifying events for pubsub\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PubSub = __webpack_require__(/*! pubsub-js */ \"./node_modules/pubsub-js/src/pubsub.js\");\n// Internal events\nexports.PANEL_MOVE_NEXT = 'PANEL_MOVE_NEXT';\nexports.PANEL_MOVE_PREV = 'PANEL_MOVE_PREV';\nexports.PANEL_TOGGLE = 'PANEL_TOGGLE';\nexports.LEGEND_ITEM = 'LEGEND_ITEM';\nexports.LEGEND_RESCALE = 'LEGEND_RESCALE';\nexports.LEGEND_CI = 'LEGEND_CI';\nexports.LEGEND_ALL = 'LEGEND_ALL';\nexports.JUMP_TO_INDEX_INTERNAL = 'JUMP_TO_INDEX_INTERNAL';\n// Exposed events\nexports.JUMP_TO_INDEX = 'JUMP_TO_INDEX';\n/**\n * Reset all subscriptions for an event\n */\nfunction resetSub(prefix, event) {\n    PubSub.unsubscribe(prefix + \".\" + event);\n}\nexports.resetSub = resetSub;\n/**\n * Remove subscription for a token\n */\nfunction removeSub(token) {\n    PubSub.unsubscribe(token);\n}\nexports.removeSub = removeSub;\n/**\n * Function to subscribe an object with an event\n */\nfunction addSub(prefix, event, fn) {\n    return PubSub.subscribe(prefix + \".\" + event, fn);\n}\nexports.addSub = addSub;\n/**\n * Publish an event\n */\nfunction publish(prefix, event, data) {\n    PubSub.publish(prefix + \".\" + event, data);\n}\nexports.publish = publish;\n\n\n//# sourceURL=webpack://d3Foresight/./src/events.ts?");
  
  /***/ }),
  
  /***/ "./src/index.ts":
  /*!**********************!*\
    !*** ./src/index.ts ***!
    \**********************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__webpack_require__(/*! ./styles/main.scss */ \"./src/styles/main.scss\");\nvar events_1 = __webpack_require__(/*! ./events */ \"./src/events.ts\");\nvar time_chart_1 = __webpack_require__(/*! ./time-chart */ \"./src/time-chart.js\");\nexports.TimeChart = time_chart_1.default;\nvar distribution_chart_1 = __webpack_require__(/*! ./distribution-chart */ \"./src/distribution-chart.js\");\nexports.DistributionChart = distribution_chart_1.default;\nexports.events = { JUMP_TO_INDEX: events_1.JUMP_TO_INDEX };\n\n\n//# sourceURL=webpack://d3Foresight/./src/index.ts?");
  
  /***/ }),
  
  /***/ "./src/styles/main.scss":
  /*!******************************!*\
    !*** ./src/styles/main.scss ***!
    \******************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  eval("\nvar content = __webpack_require__(/*! !../../node_modules/css-loader!../../node_modules/sass-loader/lib/loader.js?sourceMap!./main.scss */ \"./node_modules/css-loader/index.js!./node_modules/sass-loader/lib/loader.js?sourceMap!./src/styles/main.scss\");\n\nif(typeof content === 'string') content = [[module.i, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = __webpack_require__(/*! ../../node_modules/style-loader/lib/addStyles.js */ \"./node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(false) {}\n\n//# sourceURL=webpack://d3Foresight/./src/styles/main.scss?");
  
  /***/ }),
  
  /***/ "./src/styles/modules/colors.json":
  /*!****************************************!*\
    !*** ./src/styles/modules/colors.json ***!
    \****************************************/
  /*! exports provided: accent, actual, observed, history, history-highlight, axis-ticks, hover-line, disabled, black, gray, gray-light, white, white-shade, shadow, default */
  /***/ (function(module) {
  
  eval("module.exports = JSON.parse(\"{\\\"accent\\\":\\\"#5c6bc0\\\",\\\"actual\\\":\\\"#696969\\\",\\\"observed\\\":\\\"#18817f\\\",\\\"history\\\":\\\"#ddd\\\",\\\"history-highlight\\\":\\\"#ccc\\\",\\\"axis-ticks\\\":\\\"#bbb\\\",\\\"hover-line\\\":\\\"#bbb\\\",\\\"disabled\\\":\\\"#bbb\\\",\\\"black\\\":\\\"#000\\\",\\\"gray\\\":\\\"#333\\\",\\\"gray-light\\\":\\\"#666\\\",\\\"white\\\":\\\"#fff\\\",\\\"white-shade\\\":\\\"#f5f5f5\\\",\\\"shadow\\\":\\\"#ccc\\\"}\");\n\n//# sourceURL=webpack://d3Foresight/./src/styles/modules/colors.json?");
  
  /***/ }),
  
  /***/ "./src/time-chart.js":
  /*!***************************!*\
    !*** ./src/time-chart.js ***!
    \***************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _objectDestructuringEmpty2 = __webpack_require__(/*! babel-runtime/helpers/objectDestructuringEmpty */ \"./node_modules/babel-runtime/helpers/objectDestructuringEmpty.js\");\n\nvar _objectDestructuringEmpty3 = _interopRequireDefault(_objectDestructuringEmpty2);\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"./node_modules/babel-runtime/helpers/toConsumableArray.js\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"./node_modules/babel-runtime/helpers/extends.js\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _assign = __webpack_require__(/*! babel-runtime/core-js/object/assign */ \"./node_modules/babel-runtime/core-js/object/assign.js\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = __webpack_require__(/*! babel-runtime/core-js/object/get-prototype-of */ \"./node_modules/babel-runtime/core-js/object/get-prototype-of.js\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"./node_modules/babel-runtime/helpers/classCallCheck.js\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"./node_modules/babel-runtime/helpers/createClass.js\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = __webpack_require__(/*! babel-runtime/helpers/possibleConstructorReturn */ \"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = __webpack_require__(/*! babel-runtime/helpers/inherits */ \"./node_modules/babel-runtime/helpers/inherits.js\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _d = __webpack_require__(/*! d3 */ \"d3\");\n\nvar d3 = _interopRequireWildcard(_d);\n\nvar _domains = __webpack_require__(/*! ./utilities/data/domains */ \"./src/utilities/data/domains.ts\");\n\nvar domains = _interopRequireWildcard(_domains);\n\nvar _timepoints = __webpack_require__(/*! ./utilities/data/timepoints */ \"./src/utilities/data/timepoints.ts\");\n\nvar tpUtils = _interopRequireWildcard(_timepoints);\n\nvar _colors = __webpack_require__(/*! ./utilities/colors */ \"./src/utilities/colors.ts\");\n\nvar colors = _interopRequireWildcard(_colors);\n\nvar _axisX = __webpack_require__(/*! ./components/common/axis-x */ \"./src/components/common/axis-x.js\");\n\nvar _axisY = __webpack_require__(/*! ./components/common/axis-y */ \"./src/components/common/axis-y.js\");\n\nvar _controlPanel = __webpack_require__(/*! ./components/common/control-panel */ \"./src/components/common/control-panel/index.js\");\n\nvar _controlPanel2 = _interopRequireDefault(_controlPanel);\n\nvar _actual = __webpack_require__(/*! ./components/time-chart/actual */ \"./src/components/time-chart/actual.js\");\n\nvar _actual2 = _interopRequireDefault(_actual);\n\nvar _baseline = __webpack_require__(/*! ./components/time-chart/baseline */ \"./src/components/time-chart/baseline.js\");\n\nvar _baseline2 = _interopRequireDefault(_baseline);\n\nvar _historicalLines = __webpack_require__(/*! ./components/time-chart/historical-lines */ \"./src/components/time-chart/historical-lines.js\");\n\nvar _historicalLines2 = _interopRequireDefault(_historicalLines);\n\nvar _observed = __webpack_require__(/*! ./components/time-chart/observed */ \"./src/components/time-chart/observed.js\");\n\nvar _observed2 = _interopRequireDefault(_observed);\n\nvar _overlay = __webpack_require__(/*! ./components/time-chart/overlay */ \"./src/components/time-chart/overlay.js\");\n\nvar _overlay2 = _interopRequireDefault(_overlay);\n\nvar _timezeroLine = __webpack_require__(/*! ./components/time-chart/timezero-line */ \"./src/components/time-chart/timezero-line.js\");\n\nvar _timezeroLine2 = _interopRequireDefault(_timezeroLine);\n\nvar _prediction = __webpack_require__(/*! ./components/time-chart/prediction */ \"./src/components/time-chart/prediction/index.js\");\n\nvar _prediction2 = _interopRequireDefault(_prediction);\n\nvar _additionalLine = __webpack_require__(/*! ./components/time-chart/additional-line */ \"./src/components/time-chart/additional-line.js\");\n\nvar _additionalLine2 = _interopRequireDefault(_additionalLine);\n\nvar _timerect = __webpack_require__(/*! ./components/time-chart/timerect */ \"./src/components/time-chart/timerect.js\");\n\nvar _timerect2 = _interopRequireDefault(_timerect);\n\nvar _chart = __webpack_require__(/*! ./chart */ \"./src/chart.ts\");\n\nvar _chart2 = _interopRequireDefault(_chart);\n\nvar _verify = __webpack_require__(/*! ./utilities/data/verify */ \"./src/utilities/data/verify.js\");\n\nvar _config = __webpack_require__(/*! ./utilities/data/config */ \"./src/utilities/data/config.ts\");\n\nvar _misc = __webpack_require__(/*! ./utilities/misc */ \"./src/utilities/misc.ts\");\n\nvar _events = __webpack_require__(/*! ./events */ \"./src/events.ts\");\n\nvar ev = _interopRequireWildcard(_events);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TimeChart = function (_Chart) {\n  (0, _inherits3.default)(TimeChart, _Chart);\n\n  function TimeChart(element) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    (0, _classCallCheck3.default)(this, TimeChart);\n\n    var defaultConfig = {\n      baseline: {\n        text: 'Baseline',\n        description: 'Baseline value',\n        url: '#'\n      },\n      pointType: 'week',\n      confidenceIntervals: []\n    };\n\n    var selection = d3.select(element).attr('class', 'd3f-chart d3f-time-chart');\n\n    var _this = (0, _possibleConstructorReturn3.default)(this, (TimeChart.__proto__ || (0, _getPrototypeOf2.default)(TimeChart)).call(this, selection, (0, _assign2.default)({}, defaultConfig, options)));\n\n    _this.xScale = d3.scaleLinear().range([0, _this.width]);\n    _this.xScaleDate = d3.scaleTime().range([0, _this.width]);\n    _this.xScalePoint = d3.scalePoint().range([0, _this.width]);\n    _this.yScale = d3.scaleLinear().range([_this.height, 0]);\n\n    _this.yAxis = _this.append(new _axisY.YAxis(_this.layout, (0, _extends3.default)({}, _this.config.axes.y, {\n      tooltip: _this.tooltip\n    })));\n\n    _this.xAxis = _this.append(new _axisX.XAxisDate(_this.layout, (0, _extends3.default)({}, _this.config.axes.x, {\n      tooltip: _this.tooltip\n    })));\n\n    _this.timerect = _this.append(new _timerect2.default(_this.layout));\n    _this.timezeroLine = _this.append(new _timezeroLine2.default(_this.layout));\n    _this.overlay = _this.append(new _overlay2.default(_this.layout, {\n      tooltip: _this.tooltip,\n      uuid: _this.uuid\n    }));\n    _this.history = _this.append(new _historicalLines2.default({\n      tooltip: _this.tooltip\n    }));\n    _this.baseline = _this.append(new _baseline2.default(_this.layout, (0, _extends3.default)({}, _this.config.baseline, {\n      tooltip: _this.tooltip\n    })));\n    _this.actual = _this.append(new _actual2.default());\n    _this.observed = _this.append(new _observed2.default());\n    _this.predictions = [];\n    _this.additional = [];\n    _this.cid = 0;\n\n    var panelConfig = {\n      ci: _this.config.confidenceIntervals.length === 0 ? false : {\n        idx: _this.cid,\n        values: _this.config.confidenceIntervals\n      },\n      tooltip: _this.tooltip,\n      uuid: _this.uuid\n    };\n\n    _this.controlPanel = new _controlPanel2.default(panelConfig);\n    _this.selection.append(function () {\n      return _this.controlPanel.node;\n    });\n\n    ev.addSub(_this.uuid, ev.PANEL_MOVE_NEXT, function (msg, data) {\n      var oldIdx = _this.currentIdx;\n      _this.moveForward();\n      if (_this.currentIdx !== oldIdx) {\n        ev.publish(_this.uuid, ev.JUMP_TO_INDEX, _this.currentIdx);\n      }\n    });\n\n    ev.addSub(_this.uuid, ev.PANEL_MOVE_PREV, function (msg, data) {\n      var oldIdx = _this.currentIdx;\n      _this.moveBackward();\n      if (_this.currentIdx !== oldIdx) {\n        ev.publish(_this.uuid, ev.JUMP_TO_INDEX, _this.currentIdx);\n      }\n    });\n\n    ev.addSub(_this.uuid, ev.JUMP_TO_INDEX_INTERNAL, function (msg, idx) {\n      var oldIdx = _this.currentIdx;\n      _this.update(idx);\n      if (_this.currentIdx !== oldIdx) {\n        ev.publish(_this.uuid, ev.JUMP_TO_INDEX, idx);\n      }\n    });\n\n    ev.addSub(_this.uuid, ev.LEGEND_ITEM, function (msg, _ref) {\n      var id = _ref.id,\n          state = _ref.state;\n\n      if (id === 'History') {\n        _this.history.hidden = !_this.history.hidden;\n      } else if (id === 'Actual') {\n        _this.actual.hidden = !_this.actual.hidden;\n      } else if (id === 'Observed') {\n        _this.observed.hidden = !_this.observed.hidden;\n      } else {\n        var marker = [].concat((0, _toConsumableArray3.default)(_this.predictions), (0, _toConsumableArray3.default)(_this.additional)).find(function (m) {\n          return m.id === id;\n        });\n        if (marker) {\n          marker.hidden = !state;\n        }\n      }\n    });\n\n    ev.addSub(_this.uuid, ev.LEGEND_RESCALE, function (msg, _ref2) {\n      (0, _objectDestructuringEmpty3.default)(_ref2);\n\n      _this.updateDomains(_this.predictions);\n    });\n\n    ev.addSub(_this.uuid, ev.LEGEND_CI, function (msg, _ref3) {\n      var idx = _ref3.idx;\n\n      _this.predictions.forEach(function (p) {\n        _this.cid = p.cid = idx;\n        p.update(_this.currentIdx);\n      });\n    });\n    return _this;\n  }\n\n  (0, _createClass3.default)(TimeChart, [{\n    key: 'updateDomains',\n    value: function updateDomains(predictions) {\n      var _this2 = this;\n\n      if (this.config.axes.y.domain) {\n        this.yScale.domain(this.config.axes.y.domain);\n      } else {\n        this.yScale.domain(domains.y_pred(this.actual.data, predictions, this.dataConfig));\n      }\n      this.yAxis.plot(this.scales);\n      this.actual.rescale(this.scales);\n      this.predictions.forEach(function (p) {\n        return p.update(_this2.currentIdx);\n      });\n    }\n  }, {\n    key: 'plot',\n    value: function plot(data) {\n      (0, _verify.verifyTimeChartData)(data);\n\n      this.dataConfig = (0, _config.getTimeChartDataConfig)(data, this.config);\n      this.dataVersionTimes = tpUtils.parseDataVersionTimes(data, this.dataConfig);\n      this.ticks = data.timePoints.map(function (tp) {\n        return (0, _timepoints.getTick)(tp, \"year-week\");\n      });\n\n      if (this.config.axes.y.domain) {\n        this.yScale.domain(this.config.axes.y.domain);\n      } else {\n        this.yScale.domain(domains.y(data, this.dataConfig));\n      }\n\n      this.xScale.domain(domains.x(data, this.dataConfig));\n      this.xScaleDate.domain(domains.xDate(data, this.dataConfig));\n\n      this.xScalePoint.domain(data.timePoints.map(function (tp) {\n        return (0, _timepoints.getTick)(tp, \"year-week\");\n      }));\n\n      this.plotChart(data);\n\n      this.currentIdx = 0;\n      this.update(this.currentIdx);\n    }\n  }, {\n    key: 'plotChart',\n    value: function plotChart(data) {\n      var _this3 = this;\n\n      this.xAxis.plot(this.scales);\n      this.yAxis.plot(this.scales);\n\n      this.timerect.plot(this.scales);\n      this.timezeroLine.plot(this.scales);\n      this.timezeroLine.hidden = !this.dataConfig.timezeroLine;\n\n      this.baseline.hidden = !this.dataConfig.baseline;\n      if (this.dataConfig.baseline) {\n        this.baseline.plot(this.scales, data.baseline);\n      }\n      if (this.dataConfig.actual) {\n        this.actual.plot(this.scales, data.actual);\n      }\n      if (this.dataConfig.observed) {\n        this.observed.plot(this.scales, data.observed);\n      }\n      if (this.dataConfig.history) {\n        this.history.plot(this.scales, data.history);\n      }\n\n      if (this.dataConfig.additionalLines) {\n        this.additional = (0, _misc.filterActiveLines)(this.additional, data.additionalLines);\n        data.additionalLines.forEach(function (ad, idx) {\n          var addMarker = void 0;\n          var markerIndex = _this3.additional.findIndex(function (a) {\n            return a.id === ad.id;\n          });\n          if (markerIndex === -1) {\n            addMarker = new _additionalLine2.default(_this3.layout, {\n              id: ad.id,\n              meta: ad.meta,\n              tooltip: 'tooltip' in ad ? ad.tooltip : false,\n              legend: 'legend' in ad ? ad.legend : true,\n              style: (0, _extends3.default)({\n                color: 'gray'\n              }, ad.style)\n            });\n            _this3.append(addMarker);\n            _this3.additional.push(addMarker);\n          } else {\n            addMarker = _this3.additional[markerIndex];\n          }\n          addMarker.plot(_this3.scales, ad.data);\n        });\n      }\n\n      var totalModels = data.models.length;\n      var onsetDiff = (this.onsetHeight - 2) / (totalModels + 1);\n\n      this.colors = colors.getColorMap(data.models.length);\n\n      this.predictions = (0, _misc.filterActiveLines)(this.predictions, data.models);\n\n      data.models.forEach(function (m, idx) {\n        var predMarker = void 0;\n        var markerIndex = _this3.predictions.findIndex(function (p) {\n          return p.id === m.id;\n        });\n        if (markerIndex === -1) {\n          predMarker = new _prediction2.default((0, _extends3.default)({\n            id: m.id,\n            meta: m.meta,\n            onsetY: (idx + 1) * onsetDiff + _this3.height + 1,\n            cid: _this3.cid,\n            tooltip: _this3.tooltip\n          }, _this3.dataConfig.predictions, {\n            style: (0, _extends3.default)({\n              color: _this3.colors[idx]\n            }, m.style)\n          }));\n          _this3.append(predMarker);\n          _this3.predictions.push(predMarker);\n        } else {\n          predMarker = _this3.predictions[markerIndex];\n        }\n        predMarker.plot(_this3.scales, m.predictions);\n      });\n\n      this.controlPanel.plot(this.predictions, this.additional, this.dataConfig);\n\n      this.overlay.plot(this.scales, [this.actual, this.observed].concat((0, _toConsumableArray3.default)(this.predictions), (0, _toConsumableArray3.default)(this.additional)));\n    }\n  }, {\n    key: 'update',\n    value: function update(idx) {\n      if (idx !== this.currentIdx) {\n        this.currentIdx = idx;\n\n        this.timerect.update(this.dataVersionTimes[idx]);\n\n        this.predictions.forEach(function (p) {\n          p.update(idx);\n        });\n        this.updateDomains([].concat((0, _toConsumableArray3.default)(this.predictions), (0, _toConsumableArray3.default)(this.additional)).filter(function (m) {\n          return !m.hidden;\n        }));\n        this.overlay.update(this.predictions);\n        if (this.dataConfig.observed) {\n          this.observed.update(idx);\n        }\n        this.controlPanel.update(this.predictions);\n\n        this.timezeroLine.textHidden = this.predictions.every(function (p) {\n          return p.noData;\n        });\n\n        this.timezeroLine.update(idx);\n      }\n    }\n  }, {\n    key: 'updateYAxisTitle',\n    value: function updateYAxisTitle(newAxisTitle) {\n      this.yAxis.changeTitle(newAxisTitle);\n\n      this.controlPanel.updateTitle(newAxisTitle);\n    }\n  }, {\n    key: 'moveForward',\n    value: function moveForward() {\n      this.update(this.deltaIndex(1));\n    }\n  }, {\n    key: 'moveBackward',\n    value: function moveBackward() {\n      this.update(this.deltaIndex(-1));\n    }\n  }]);\n  return TimeChart;\n}(_chart2.default);\n\nexports.default = TimeChart;\n\n//# sourceURL=webpack://d3Foresight/./src/time-chart.js?");
  
  /***/ }),
  
  /***/ "./src/utilities/colors.ts":
  /*!*********************************!*\
    !*** ./src/utilities/colors.ts ***!
    \*********************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n/**\n * Color related functions\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Doc guard\n */\nvar d3 = __webpack_require__(/*! d3 */ \"d3\");\nvar tinycolor = __webpack_require__(/*! tinycolor2 */ \"./node_modules/tinycolor2/tinycolor.js\");\nvar iwanthue = __webpack_require__(/*! iwanthue */ \"./node_modules/iwanthue/index.js\");\n/**\n * Some pre generated palettes from http://tools.medialab.sciences-po.fr/iwanthue/\n */\nexports.colors30 = [\n    '#eb9491',\n    '#e26d67',\n    '#f0574b',\n    '#e3845e',\n    '#e76b2e',\n    '#c6925e',\n    '#d88a2f',\n    '#d2aa3b',\n    '#d3c179',\n    '#bfc83c',\n    '#909d37',\n    '#abd077',\n    '#75c142',\n    '#6c9e5b',\n    '#4dc968',\n    '#62c793',\n    '#61daca',\n    '#3cb8c0',\n    '#5daade',\n    '#568ced',\n    '#9999dc',\n    '#9c78ef',\n    '#be87d4',\n    '#db6dd8',\n    '#e29cce',\n    '#e165b7',\n    '#ef5297',\n    '#dc77a0',\n    '#ec5778',\n    '#cb7478'\n];\nexports.colors50 = [\n    '#d27878',\n    '#de7a58',\n    '#e96735',\n    '#ed9d7d',\n    '#d48232',\n    '#b8844c',\n    '#e5b06f',\n    '#df9b2a',\n    '#debf2e',\n    '#d5c056',\n    '#a59229',\n    '#ccc17d',\n    '#9a914f',\n    '#94a231',\n    '#b2c834',\n    '#bdd461',\n    '#b9cf84',\n    '#8ca259',\n    '#74a530',\n    '#96dc5b',\n    '#6e984c',\n    '#69b92e',\n    '#95cf73',\n    '#3bab40',\n    '#61d96a',\n    '#77b97c',\n    '#90da99',\n    '#46a459',\n    '#50d885',\n    '#4a9a74',\n    '#42dcaa',\n    '#7fdcbf',\n    '#4aba9e',\n    '#46c9d2',\n    '#5cb4e1',\n    '#499ae1',\n    '#4f8af1',\n    '#8b94d4',\n    '#8982e6',\n    '#c4a8ef',\n    '#b171ed',\n    '#c87dd6',\n    '#e364d2',\n    '#eea7e0',\n    '#c57dae',\n    '#e464ae',\n    '#eb5a88',\n    '#e88ba1',\n    '#f14c55',\n    '#ea6368'\n];\n/**\n * Convert hex to rgba\n */\nfunction hexToRgba(hex, alpha) {\n    return tinycolor(hex).setAlpha(alpha).toRgbString();\n}\nexports.hexToRgba = hexToRgba;\n/**\n * Return colormap of given size\n */\nfunction getColorMap(size) {\n    if (size > 20) {\n        return iwanthue(size, {\n            clustering: 'k-means',\n            seed: 'cool-palette',\n            quality: 100\n        });\n    }\n    else if (size > 10) {\n        // @ts-ignore\n        return d3.schemeCategory20;\n    }\n    else {\n        // @ts-ignore\n        return d3.schemeCategory10;\n    }\n}\nexports.getColorMap = getColorMap;\n\n\n//# sourceURL=webpack://d3Foresight/./src/utilities/colors.ts?");
  
  /***/ }),
  
  /***/ "./src/utilities/data/config.ts":
  /*!**************************************!*\
    !*** ./src/utilities/data/config.ts ***!
    \**************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n/**\n * Functions for parsing data object for information\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar timepoints_1 = __webpack_require__(/*! ./timepoints */ \"./src/utilities/data/timepoints.ts\");\n/**\n * Tell if onset predictions are present in the data\n */\nfunction isOnsetPresent(modelsData) {\n    var model = modelsData[0];\n    var nonNullPreds = model.predictions.filter(function (p) { return p !== null; });\n    if (nonNullPreds.length === 0) {\n        // Just to be safe\n        return false;\n    }\n    else {\n        return 'onsetTime' in nonNullPreds[0];\n    }\n}\n/**\n * Tell if peak predictions are present in the data\n */\nfunction isPeakPresent(modelsData) {\n    var model = modelsData[0];\n    var nonNullPreds = model.predictions.filter(function (p) { return p !== null; });\n    if (nonNullPreds.length === 0) {\n        // Just to be safe\n        return false;\n    }\n    else {\n        return ('peakTime' in nonNullPreds[0]) && ('peakValue' in nonNullPreds[0]);\n    }\n}\n/**\n * Return list of model ids that are to be pinned\n */\nfunction pinnedModelIds(modelsData) {\n    return modelsData.filter(function (model) {\n        return 'pinned' in model ? model.pinned : false;\n    }).map(function (model) { return model.id; });\n}\n/**\n * Tell if we have data version date present in the predictions data\n */\nfunction isVersionTimePresent(modelsData) {\n    var model = modelsData[0];\n    var nonNullPreds = model.predictions.filter(function (p) { return p !== null; });\n    if (nonNullPreds.length === 0) {\n        // Keeping the default behavior simple\n        return false;\n    }\n    else {\n        return nonNullPreds.every(function (p) { return 'dataVersionTime' in p; });\n    }\n}\n/**\n * Whether to show the timezeroLine\n */\nfunction showTimezeroLine(data, config) {\n    if ('timezeroLine' in config) {\n        // key takes priority\n        return config.timezeroLine;\n    }\n    else if ('timezeroLine' in data) {\n        return data.timezeroLine;\n    }\n    else {\n        // If version time is present, we show the timezero by default\n        return isVersionTimePresent(data.models);\n    }\n}\n/**\n * Parse time chart data and provide information about it\n */\nfunction getTimeChartDataConfig(data, config) {\n    return {\n        actual: 'actual' in data,\n        observed: 'observed' in data,\n        history: 'history' in data,\n        baseline: 'baseline' in data,\n        timezeroLine: showTimezeroLine(data, config),\n        predictions: {\n            peak: isPeakPresent(data.models),\n            onset: config.onset && isOnsetPresent(data.models),\n            versionTime: isVersionTimePresent(data.models)\n        },\n        pinnedModels: pinnedModelIds(data.models),\n        additionalLines: 'additionalLines' in data,\n        ticks: data.timePoints.map(function (tp) { return timepoints_1.getTick(tp, config.pointType); }),\n        pointType: config.pointType\n    };\n}\nexports.getTimeChartDataConfig = getTimeChartDataConfig;\n/**\n * Parse distribution chart data and provide information about it\n */\nfunction getDistChartDataConfig(data, config) {\n    return {\n        actual: false,\n        observed: false,\n        history: false,\n        pinnedModels: pinnedModelIds(data.models),\n        ticks: data.timePoints.map(function (tp) { return timepoints_1.getTick(tp, config.pointType); }),\n        pointType: config.pointType,\n        curveNames: data.models[0].curves.map(function (c) { return c.name; })\n    };\n}\nexports.getDistChartDataConfig = getDistChartDataConfig;\n\n\n//# sourceURL=webpack://d3Foresight/./src/utilities/data/config.ts?");
  
  /***/ }),
  
  /***/ "./src/utilities/data/domains.ts":
  /*!***************************************!*\
    !*** ./src/utilities/data/domains.ts ***!
    \***************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n/**\n * Functions for finding scale domains from data object\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Doc guard\n */\nvar d3 = __webpack_require__(/*! d3 */ \"d3\");\nvar timepoints_1 = __webpack_require__(/*! ./timepoints */ \"./src/utilities/data/timepoints.ts\");\n/**\n * Return max of a pred object { point, high?, low? }\n */\nfunction predMax(pred) {\n    var max = pred.point;\n    return max;\n}\n/**\n * Return domain for y axis using limits of data\n */\nfunction y(data, dataConfig) {\n    var min = 0;\n    var max = 0;\n    if (dataConfig.actual) {\n        max = Math.max.apply(Math, [max].concat(data.actual.filter(function (d) { return d; })));\n    }\n    data.models.forEach(function (md) {\n        md.predictions.forEach(function (p) {\n            if (p) {\n                max = Math.max.apply(Math, [max].concat(p.series.map(predMax)));\n                if (dataConfig.predictions.peak) {\n                    max = Math.max(max, predMax(p.peakValue));\n                }\n            }\n        });\n    });\n    return [min, Math.max(25, 1.3 * max)];\n}\nexports.y = y;\n/**\n * Return domain for y axis using limits of data\n */\nfunction y_pred(actual, predictions, dataConfig) {\n    var min = 0;\n    var max = 0;\n    if (dataConfig.actual) {\n        max = Math.max.apply(Math, [max].concat(actual.filter(function (d) { return d.y; }).map(function (d) { return d.y; })));\n    }\n    predictions.filter(function (p) { return !p.hidden; }).forEach(function (md) {\n        md.displayedData.filter(function (v) { return v != false; }).forEach(function (p) {\n            if (p) {\n                max = Math.max.apply(Math, [max].concat(p));\n                if (dataConfig.predictions.peak) {\n                    max = Math.max(max, predMax(p.peakValue));\n                }\n            }\n        });\n    });\n    return [min, Math.max(25, 1.2 * max)];\n}\nexports.y_pred = y_pred;\n/**\n * Return domain of x\n */\nfunction x(data, dataConfig) {\n    return [0, data.timePoints.length - 1];\n}\nexports.x = x;\n/**\n * Return domain for xdate\n */\nfunction xDate(data, dataConfig) {\n    return d3.extent(data.timePoints.map(function (tp) {\n        return timepoints_1.getDateTime(tp, dataConfig.pointType);\n    }));\n}\nexports.xDate = xDate;\n/**\n * Return point scale domain\n */\nfunction xPoint(data, dataConfig) {\n    return dataConfig.ticks;\n}\nexports.xPoint = xPoint;\n/**\n * Return domain for given curveid\n */\nfunction xCurve(data, curveIdx) {\n    // This assumes an ordinal scale\n    for (var i = 0; i < data.models.length; i++) {\n        var curveData = data.models[i].curves[curveIdx].data;\n        if (curveData) {\n            // Return the x series directly\n            return curveData.map(function (d) { return d[0]; });\n        }\n    }\n    return [0, 0];\n}\nexports.xCurve = xCurve;\n/**\n * Get shared y limits for type of data\n */\nfunction yCurveMaxima(data) {\n    var modelMaxes = data.models\n        .filter(function (m) {\n        // NOTE: Filtering based on the assumption that one model will have\n        // /all/ the curves or none of them\n        return m.curves.filter(function (c) { return c.data; }).length === m.curves.length;\n    })\n        .map(function (m) {\n        return m.curves.map(function (c) {\n            return [c.data.length, Math.max.apply(Math, c.data.map(function (d) { return d[1]; }))];\n        });\n    });\n    // HACK: Simplify this\n    // Identify curve type using the length of values in them\n    var lengthToLimit = modelMaxes.reduce(function (acc, mm) {\n        mm.forEach(function (c) {\n            acc[c[0]] = acc[c[0]] ? Math.max(acc[c[0]], c[1]) : c[1];\n        });\n        return acc;\n    }, {});\n    var lengths = modelMaxes[0].map(function (c) { return c[0]; });\n    return lengths.map(function (l) { return lengthToLimit[l]; });\n}\nexports.yCurveMaxima = yCurveMaxima;\n\n\n//# sourceURL=webpack://d3Foresight/./src/utilities/data/domains.ts?");
  
  /***/ }),
  
  /***/ "./src/utilities/data/time-chart-model.schema.json":
  /*!*********************************************************!*\
    !*** ./src/utilities/data/time-chart-model.schema.json ***!
    \*********************************************************/
  /*! exports provided: $schema, definitions, title, description, type, properties, required, default */
  /***/ (function(module) {
  
  eval("module.exports = JSON.parse(\"{\\\"$schema\\\":\\\"http://json-schema.org/draft-07/schema#\\\",\\\"definitions\\\":{\\\"pred\\\":{\\\"type\\\":\\\"object\\\",\\\"description\\\":\\\"Prediction for season onset\\\",\\\"properties\\\":{\\\"point\\\":{\\\"description\\\":\\\"Point value of the prediction\\\",\\\"type\\\":\\\"number\\\"},\\\"high\\\":{\\\"description\\\":\\\"High values for the confidence interval ranges\\\",\\\"type\\\":\\\"array\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"}},\\\"low\\\":{\\\"description\\\":\\\"Low values for the confidence interval ranges\\\",\\\"type\\\":\\\"array\\\",\\\"items\\\":{\\\"type\\\":\\\"number\\\"}}},\\\"required\\\":[\\\"point\\\"]}},\\\"title\\\":\\\"Model\\\",\\\"description\\\":\\\"A model with data for timeChart\\\",\\\"type\\\":\\\"object\\\",\\\"properties\\\":{\\\"id\\\":{\\\"description\\\":\\\"Short unique identifier for the model\\\",\\\"type\\\":\\\"string\\\"},\\\"pinned\\\":{\\\"description\\\":\\\"Whether to pin this model in legend\\\",\\\"type\\\":\\\"boolean\\\"},\\\"meta\\\":{\\\"description\\\":\\\"Metadata for the model\\\",\\\"type\\\":\\\"object\\\",\\\"properties\\\":{\\\"description\\\":{\\\"description\\\":\\\"Text with description of the model to show on tooltips\\\",\\\"type\\\":\\\"string\\\"},\\\"name\\\":{\\\"description\\\":\\\"Full name of the model\\\",\\\"type\\\":\\\"string\\\"},\\\"url\\\":{\\\"description\\\":\\\"Url for getting more details about the model\\\",\\\"type\\\":\\\"string\\\",\\\"format\\\":\\\"uri\\\"}},\\\"required\\\":[\\\"description\\\",\\\"name\\\"]},\\\"style\\\":{\\\"description\\\":\\\"Style settings for the model\\\",\\\"type\\\":\\\"object\\\",\\\"properties\\\":{\\\"color\\\":{\\\"description\\\":\\\"Base color for the model, by default this comes from the internal palette\\\",\\\"type\\\":\\\"string\\\"},\\\"point\\\":{\\\"description\\\":\\\"CSS styles for dots in the line\\\",\\\"type\\\":\\\"object\\\"},\\\"area\\\":{\\\"description\\\":\\\"CSS styles for the confidence area\\\",\\\"type\\\":\\\"object\\\"},\\\"line\\\":{\\\"description\\\":\\\"CSS styles for the main line\\\",\\\"type\\\":\\\"object\\\"}}},\\\"predictions\\\":{\\\"description\\\":\\\"Prediction array for each time point\\\",\\\"type\\\":\\\"array\\\",\\\"items\\\":{\\\"description\\\":\\\"Set of predictions for one time point\\\",\\\"type\\\":[\\\"object\\\",\\\"null\\\"],\\\"properties\\\":{\\\"onsetTime\\\":{\\\"$ref\\\":\\\"#/definitions/pred\\\"},\\\"peakTime\\\":{\\\"$ref\\\":\\\"#/definitions/pred\\\"},\\\"peakValue\\\":{\\\"$ref\\\":\\\"#/definitions/pred\\\"},\\\"dataVersionTime\\\":{\\\"description\\\":\\\"Time specifying the data available for that prediction\\\"},\\\"series\\\":{\\\"description\\\":\\\"Time ahead predictions\\\",\\\"type\\\":\\\"array\\\",\\\"items\\\":{\\\"$ref\\\":\\\"#/definitions/pred\\\"}}},\\\"required\\\":[\\\"series\\\"]}}},\\\"required\\\":[\\\"id\\\",\\\"meta\\\",\\\"predictions\\\"]}\");\n\n//# sourceURL=webpack://d3Foresight/./src/utilities/data/time-chart-model.schema.json?");
  
  /***/ }),
  
  /***/ "./src/utilities/data/timepoints.ts":
  /*!******************************************!*\
    !*** ./src/utilities/data/timepoints.ts ***!
    \******************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n/**\n * Functions for working with various timepoint types\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Doc guard\n */\nvar mmwr = __webpack_require__(/*! mmwr-week */ \"./node_modules/mmwr-week/dist/index.js\");\nvar moment = __webpack_require__(/*! moment */ \"moment\");\nvar d3 = __webpack_require__(/*! d3 */ \"d3\");\nvar errors = __webpack_require__(/*! ../errors */ \"./src/utilities/errors.ts\");\nvar misc_1 = __webpack_require__(/*! ../misc */ \"./src/utilities/misc.ts\");\nfunction parseWeek(d) {\n    return parseInt(d3.timeFormat('%W')(d));\n}\nfunction parseMonth(d) {\n    return parseInt(d3.timeFormat('%m')(d));\n}\nfunction isTimepoint(tp) {\n    return (tp !== null) && (typeof tp === 'object') && ('year' in tp);\n}\nfunction isDate(tp) {\n    return (tp instanceof Date);\n}\nfunction isString(tp) {\n    return (typeof tp === 'string' || tp instanceof String);\n}\nfunction stringToDate(tp) {\n    return moment(tp).toDate();\n}\n/**\n * Parse timepoint to standard dictionary format\n */\nfunction parseTimepoint(tp, pointType) {\n    if (isTimepoint(tp)) {\n        return tp;\n    }\n    if (isString(tp)) {\n        tp = stringToDate(tp);\n    }\n    if (isDate(tp)) {\n        tp = tp;\n        if (pointType === 'week') {\n            return { year: tp.getFullYear(), week: parseWeek(tp) };\n        }\n        else if (pointType === 'mmwr-week') {\n            var mdate = new mmwr.MMWRDate(0);\n            mdate.fromJSDate(tp);\n            return { year: mdate.year, week: mdate.week };\n        }\n        else if (pointType === 'biweek') {\n            return { year: tp.getFullYear(), week: Math.floor(parseWeek(tp) / 2) };\n        }\n        else if (pointType === 'month') {\n            return { year: tp.getFullYear(), month: parseMonth(tp) };\n        }\n        else {\n            throw new errors.UnknownPointType();\n        }\n    }\n    else {\n        throw new errors.UnknownPointType();\n    }\n}\n/**\n * Return ticks to show for the timepoints\n */\nfunction getTick(tp, pointType) {\n    tp = parseTimepoint(tp, pointType);\n    if ((pointType === 'week') || (pointType === 'mmwr-week')) {\n        return tp.week;\n    }\n    if (pointType === 'biweek') {\n        return tp.biweek;\n    }\n    if (pointType === 'month') {\n        return tp.month;\n    }\n    if (pointType === 'year-week') {\n        return tp.year + \"-\" + tp.week;\n    }\n    else {\n        throw new errors.UnknownPointType();\n    }\n}\nexports.getTick = getTick;\n/**\n * Return date time value for the timepoint\n */\nfunction getDateTime(tp, pointType) {\n    if (isString(tp)) {\n        return stringToDate(tp);\n    }\n    else if (isDate(tp)) {\n        return tp;\n    }\n    else if (isTimepoint(tp)) {\n        tp = tp;\n        if (pointType === 'week') {\n            return d3.timeParse('%Y-%W')(tp.year + \"-\" + tp.week);\n        }\n        else if (pointType === 'mmwr-week') {\n            return (new mmwr.MMWRDate(tp.year, tp.week)).toJSDate();\n        }\n        else if (pointType === 'biweek') {\n            return d3.timeParse('%Y-%W')(tp.year + \"-\" + tp.biweek * 2);\n        }\n        else if (pointType === 'month') {\n            return d3.timeParse('%Y-%m')(tp.year + \"-\" + tp.month);\n        }\n        else {\n            throw new errors.UnknownPointType();\n        }\n    }\n    else {\n        throw new errors.UnknownPointType();\n    }\n}\nexports.getDateTime = getDateTime;\n/**\n * Parse data version times as JS datetimes\n */\nfunction parseDataVersionTimes(data, dataConfig) {\n    if (dataConfig.predictions.versionTime) {\n        return misc_1.orArrays(data.models.map(function (m) {\n            var preds = m.predictions.map(function (p) {\n                if ((p === null) || (p.dataVersionTime === null)) {\n                    return null;\n                }\n                else {\n                    return getDateTime(p.dataVersionTime, dataConfig.pointType);\n                }\n            });\n            return preds;\n        }), function (a, b) { return a.valueOf() === b.valueOf(); });\n    }\n    else {\n        // Otherwise use time from regular timepoints\n        return data.timePoints.map(function (t) { return getDateTime(t, dataConfig.pointType); });\n    }\n}\nexports.parseDataVersionTimes = parseDataVersionTimes;\n\n\n//# sourceURL=webpack://d3Foresight/./src/utilities/data/timepoints.ts?");
  
  /***/ }),
  
  /***/ "./src/utilities/data/verify.js":
  /*!**************************************!*\
    !*** ./src/utilities/data/verify.js ***!
    \**************************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.verifyTimeChartData = verifyTimeChartData;\nexports.verifyDistChartData = verifyDistChartData;\n\nvar _errors = __webpack_require__(/*! ../errors */ \"./src/utilities/errors.ts\");\n\nvar _ajv = __webpack_require__(/*! ajv */ \"./node_modules/ajv/lib/ajv.js\");\n\nvar _ajv2 = _interopRequireDefault(_ajv);\n\nvar _timeChartModelSchema = __webpack_require__(/*! ./time-chart-model.schema.json */ \"./src/utilities/data/time-chart-model.schema.json\");\n\nvar _timeChartModelSchema2 = _interopRequireDefault(_timeChartModelSchema);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction verifyTimeChartData(data) {\n  if (!('timePoints' in data)) {\n    throw new _errors.IncorrectData('No timePoints key found in provided data');\n  }\n\n  if (!('models' in data)) {\n    throw new _errors.IncorrectData('No models in data');\n  }\n\n  var ajv = new _ajv2.default();\n  var validate = ajv.compile(_timeChartModelSchema2.default);\n\n  if (!data.models.every(function (m) {\n    return validate(m);\n  })) {\n    console.log(validate.errors);\n    throw new _errors.IncorrectData('Model data not in approprate structure');\n  }\n}\n\nfunction verifyDistChartData(data) {\n  if (!('timePoints' in data)) {\n    throw new _errors.IncorrectData('No timePoints key found in provided data');\n  }\n\n  if (!('models' in data)) {\n    throw new _errors.IncorrectData('No models in data');\n  }\n}\n\n//# sourceURL=webpack://d3Foresight/./src/utilities/data/verify.js?");
  
  /***/ }),
  
  /***/ "./src/utilities/errors.ts":
  /*!*********************************!*\
    !*** ./src/utilities/errors.ts ***!
    \*********************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = Object.setPrototypeOf ||\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Custom error for case when point type (the type of x axis) can't be handled\n */\nvar UnknownPointType = /** @class */ (function (_super) {\n    __extends(UnknownPointType, _super);\n    function UnknownPointType() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return UnknownPointType;\n}(Error));\nexports.UnknownPointType = UnknownPointType;\n/**\n * Custom error for situation when data provided for plotting is not quite right\n */\nvar IncorrectData = /** @class */ (function (_super) {\n    __extends(IncorrectData, _super);\n    function IncorrectData() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return IncorrectData;\n}(Error));\nexports.IncorrectData = IncorrectData;\n/**\n * DOM related error\n */\nvar DocumentError = /** @class */ (function (_super) {\n    __extends(DocumentError, _super);\n    function DocumentError() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return DocumentError;\n}(Error));\nexports.DocumentError = DocumentError;\n\n\n//# sourceURL=webpack://d3Foresight/./src/utilities/errors.ts?");
  
  /***/ }),
  
  /***/ "./src/utilities/misc.ts":
  /*!*******************************!*\
    !*** ./src/utilities/misc.ts ***!
    \*******************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n/**\n * Module for miscellaneous functions\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Doc guard\n */\nvar d3 = __webpack_require__(/*! d3 */ \"d3\");\nvar errors_1 = __webpack_require__(/*! ./errors */ \"./src/utilities/errors.ts\");\nfunction kebabCase(text) {\n    return text.toLowerCase().replace(/ /g, '-');\n}\nexports.kebabCase = kebabCase;\n/**\n * Return mouse position as absolute value for current view using the provided\n * d3Selection. The selection here matters because many of the elements with\n * mouse events are translated with respect to original svg. Most of the calls\n * to this function use .overlay as reference\n */\nfunction getMousePosition(d3Selection) {\n    var _a = d3.mouse(d3Selection.node()), x = _a[0], y = _a[1];\n    var bb = d3Selection.node().getBoundingClientRect();\n    return [x + bb.left, y + bb.top];\n}\nexports.getMousePosition = getMousePosition;\n/**\n * Return line objects which are present in lines. Clear the ones\n * which are absent.\n */\nfunction filterActiveLines(lineList, lines) {\n    var lineIds = lines.map(function (l) { return l.id; });\n    return lineList.filter(function (l) {\n        if (lineIds.indexOf(l.id) === -1) {\n            l.clear();\n            return false;\n        }\n        else {\n            return true;\n        }\n    });\n}\nexports.filterActiveLines = filterActiveLines;\n/**\n * Return uncle d3 selection\n */\nfunction selectUncle(currentSelector, uncleSelector) {\n    var currentNode = d3.select(currentSelector).node();\n    var walkUp = function (cNode, pNode) {\n        if (pNode === null) {\n            // We have reached the top level\n            throw new errors_1.DocumentError(\"Selector \" + uncleSelector + \" not found\");\n        }\n        else {\n            var selection = d3.select(pNode).select(uncleSelector);\n            if (selection.node() === null) {\n                return walkUp(pNode, pNode.parentNode);\n            }\n            else {\n                return selection;\n            }\n        }\n    };\n    return walkUp(currentNode, currentNode.parentNode);\n}\nexports.selectUncle = selectUncle;\nfunction allEqual(array, eqFn) {\n    // @ts-ignore\n    return !!array.reduce(function (acc, it) { return eqFn(acc, it) ? acc : false; });\n}\n/**\n * Take or of arrays, assume values at same indices to be the same\n */\nfunction orArrays(arrays, eqFn) {\n    if (eqFn === void 0) { eqFn = function (a, b) { return a === b; }; }\n    var len = arrays[0].length;\n    // We can always take the largest array but lets not do that right now\n    if (arrays.some(function (arr) { return arr.length !== len; })) {\n        throw new Error('Arrays of unequal length passed while oring');\n    }\n    return arrays[0].map(function (it, idx) {\n        var nonNulls = arrays.map(function (arr) { return arr[idx]; }).filter(function (d) { return d !== null; });\n        if (nonNulls.length > 0) {\n            if (allEqual(nonNulls, eqFn)) {\n                return nonNulls[0];\n            }\n            else {\n                throw new Error('Non equal items in arrays');\n            }\n        }\n        else {\n            return null;\n        }\n    });\n}\nexports.orArrays = orArrays;\n\n\n//# sourceURL=webpack://d3Foresight/./src/utilities/misc.ts?");
  
  /***/ }),
  
  /***/ "./src/utilities/style.ts":
  /*!********************************!*\
    !*** ./src/utilities/style.ts ***!
    \********************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Apply css styles on d3 selection. Allow allow few non-css visual properties\n * to be set.\n */\nfunction applyStyle(d3Selection, style) {\n    for (var key in style || {}) {\n        if (key === 'r') {\n            d3Selection.attr(key, style[key]);\n        }\n        else {\n            d3Selection.style(key, style[key]);\n        }\n    }\n}\nexports.applyStyle = applyStyle;\n\n\n//# sourceURL=webpack://d3Foresight/./src/utilities/style.ts?");
  
  /***/ }),
  
  /***/ "./src/utilities/tooltip.ts":
  /*!**********************************!*\
    !*** ./src/utilities/tooltip.ts ***!
    \**********************************/
  /*! no static exports found */
  /***/ (function(module, exports, __webpack_require__) {
  
  "use strict";
  eval("\n/**\n * Functions for working with tooltips.\n * As of now, we generate html strings and render with d3Selection.html\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Doc guard\n */\nvar misc_1 = __webpack_require__(/*! ./misc */ \"./src/utilities/misc.ts\");\n/**\n * Return a formatted string representing a bin at index from series\n */\nfunction formatBin(series, index) {\n    var start = series[index];\n    var end;\n    // Figure out if we are working with integers\n    var diff = series[1] - series[0];\n    if (index === (series.length - 1)) {\n        // We are at the end, use the diff\n        end = start + diff;\n    }\n    else {\n        end = series[index + 1];\n    }\n    if (diff < 1) {\n        // These are floats\n        return start.toFixed(2) + \"-\" + end.toFixed(2);\n    }\n    else {\n        return start + \"-\" + end;\n    }\n}\nexports.formatBin = formatBin;\n/**\n * Move tooltip to the position of the selection\n */\nfunction moveTooltip(tooltip, selection, direction) {\n    if (direction === void 0) { direction = 'right'; }\n    var _a = misc_1.getMousePosition(selection), x = _a[0], y = _a[1];\n    tooltip.move({ x: x, y: y }, direction);\n}\nexports.moveTooltip = moveTooltip;\n/**\n * Generate text for simple { title, text } data\n */\nfunction parseText(_a) {\n    var title = _a.title, text = _a.text;\n    var html = '';\n    if (title) {\n        html += \"<div class='tooltip-title'>\" + title + \"</div>\";\n    }\n    if (text) {\n        html += \"<div class='tooltip-text'>\" + text + \"</div>\";\n    }\n    return html;\n}\nexports.parseText = parseText;\n/**\n * Generate text for point prediction values\n * `title` is shown in `color`-ed background\n * `values` go as rows below the title\n */\nfunction parsePoint(_a) {\n    var title = _a.title, values = _a.values, color = _a.color;\n    var html = \"<div class='tooltip-row' style='background:\" + color + \";color:white'>\" + title + \"</div>\";\n    values.forEach(function (v) {\n        console.log(v);\n        html += \"<div class='tooltip-row'>\\n               \" + v.key + \"\\n               <span class='bold'> \" + parseInt(v.value).toLocaleString() + \"</span>\\n             </div>\";\n    });\n    return html;\n}\nexports.parsePoint = parsePoint;\n/**\n * Generate text for a list of predictions\n * `title` is shown in italics first\n * Each of the `predictions` at `index` provide the data for rows\n */\nfunction parsePredictions(_a) {\n    var title = _a.title, predictions = _a.predictions, index = _a.index;\n    var maxPreds = 10;\n    var html = '';\n    if (title) {\n        html += \"<div class='tooltip-row'>\\n               <em>\" + title + \"</em>\\n             </div>\";\n    }\n    // Show only those items which have some value to be shown at index\n    var visiblePreds = predictions.filter(function (p) {\n        var data = p.query(index);\n        return data === 0 || data;\n    });\n    visiblePreds.slice(0, maxPreds).forEach(function (p) {\n        var color = p.style ? p.style.color : null;\n        var style = \"background:\" + color + \";color:\" + (color ? 'white' : '');\n        html += \"<div class='tooltip-row' style='\" + style + \"'>\\n               \" + p.id + \"\\n               <span class='bold'>\\n                 \" + parseInt(p.query(index)).toLocaleString() + \"\\n               </span>\\n             </div>\";\n    });\n    // Notify in case of overflow\n    if (visiblePreds.length > maxPreds) {\n        html += \"<div class='tooltip-row'>\\n               <em>Truncated list. Please <br>\\n               select fewer than <br>\\n               \" + (maxPreds + 1) + \" predictions</em>\\n             </div>\";\n    }\n    return html;\n}\nexports.parsePredictions = parsePredictions;\n\n\n//# sourceURL=webpack://d3Foresight/./src/utilities/tooltip.ts?");
  
  /***/ }),
  
  /***/ "d3":
  /*!*********************!*\
    !*** external "d3" ***!
    \*********************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("module.exports = __WEBPACK_EXTERNAL_MODULE_d3__;\n\n//# sourceURL=webpack://d3Foresight/external_%22d3%22?");
  
  /***/ }),
  
  /***/ "moment":
  /*!*************************!*\
    !*** external "moment" ***!
    \*************************/
  /*! no static exports found */
  /***/ (function(module, exports) {
  
  eval("module.exports = __WEBPACK_EXTERNAL_MODULE_moment__;\n\n//# sourceURL=webpack://d3Foresight/external_%22moment%22?");
  
  /***/ })
  
  /******/ });
  });