diff --git a/lib/datawheel-canon.js b/lib/datawheel-canon.js
index beb7195c3..8b23e8709 100644
--- a/lib/datawheel-canon.js
+++ b/lib/datawheel-canon.js
@@ -6,7 +6,7 @@
/******/reject(new Error("Manifest request to "+requestPath+" timed out."));/******/}else if(request.status===404){/******/// no update available
/******/resolve();/******/}else if(request.status!==200&&request.status!==304){/******/// other failure
/******/reject(new Error("Manifest request to "+requestPath+" failed."));/******/}else{/******/// success
-/******/try{/******/var update=JSON.parse(request.responseText);/******/}catch(e){/******/reject(e);/******/return;/******/}/******/resolve(update);/******/}/******/};/******/});/******/}/******//******//******//******/var hotApplyOnUpdate=true;/******/var hotCurrentHash="ca1b322a816f2a7b5dea";// eslint-disable-line no-unused-vars
+/******/try{/******/var update=JSON.parse(request.responseText);/******/}catch(e){/******/reject(e);/******/return;/******/}/******/resolve(update);/******/}/******/};/******/});/******/}/******//******//******//******/var hotApplyOnUpdate=true;/******/var hotCurrentHash="a59ef44b05deca9d46b2";// eslint-disable-line no-unused-vars
/******/var hotCurrentModuleData={};/******/var hotCurrentChildModule;// eslint-disable-line no-unused-vars
/******/var hotCurrentParents=[];// eslint-disable-line no-unused-vars
/******/var hotCurrentParentsTemp=[];// eslint-disable-line no-unused-vars
@@ -50,4 +50,4 @@
/******/__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property);};/******//******/// __webpack_public_path__
/******/__webpack_require__.p="/assets/";/******//******/// __webpack_hash__
/******/__webpack_require__.h=function(){return hotCurrentHash;};/******//******/// Load entry module and return exports
-/******/return hotCreateRequire(774)(__webpack_require__.s=774);/******/})(/************************************************************************//******/[/* 0 *//***/function(module,exports){eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while (len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function () {\n return 0;\n};\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/node-libs-browser/~/process/browser.js\n// module id = 0\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/node-libs-browser/~/process/browser.js?");/***/},/* 1 *//***/function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/fbjs/lib/invariant.js\n// module id = 1\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/fbjs/lib/invariant.js?");/***/},/* 2 *//***/function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar emptyFunction = __webpack_require__(17);\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n (function () {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n })();\n}\n\nmodule.exports = warning;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/fbjs/lib/warning.js\n// module id = 2\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/fbjs/lib/warning.js?");/***/},/* 3 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_creator__ = __webpack_require__(110);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"creator\", function() { return __WEBPACK_IMPORTED_MODULE_0__src_creator__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_local__ = __webpack_require__(428);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"local\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_local__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_matcher__ = __webpack_require__(205);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"matcher\", function() { return __WEBPACK_IMPORTED_MODULE_2__src_matcher__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_mouse__ = __webpack_require__(429);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"mouse\", function() { return __WEBPACK_IMPORTED_MODULE_3__src_mouse__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_namespace__ = __webpack_require__(111);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"namespace\", function() { return __WEBPACK_IMPORTED_MODULE_4__src_namespace__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_namespaces__ = __webpack_require__(112);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"namespaces\", function() { return __WEBPACK_IMPORTED_MODULE_5__src_namespaces__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__src_select__ = __webpack_require__(430);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"select\", function() { return __WEBPACK_IMPORTED_MODULE_6__src_select__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__src_selectAll__ = __webpack_require__(431);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"selectAll\", function() { return __WEBPACK_IMPORTED_MODULE_7__src_selectAll__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__src_selection_index__ = __webpack_require__(19);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"selection\", function() { return __WEBPACK_IMPORTED_MODULE_8__src_selection_index__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__src_selector__ = __webpack_require__(115);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"selector\", function() { return __WEBPACK_IMPORTED_MODULE_9__src_selector__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__src_selectorAll__ = __webpack_require__(209);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"selectorAll\", function() { return __WEBPACK_IMPORTED_MODULE_10__src_selectorAll__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__src_selection_style__ = __webpack_require__(208);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"style\", function() { return __WEBPACK_IMPORTED_MODULE_11__src_selection_style__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__src_touch__ = __webpack_require__(458);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"touch\", function() { return __WEBPACK_IMPORTED_MODULE_12__src_touch__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__src_touches__ = __webpack_require__(459);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"touches\", function() { return __WEBPACK_IMPORTED_MODULE_13__src_touches__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__src_window__ = __webpack_require__(117);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"window\", function() { return __WEBPACK_IMPORTED_MODULE_14__src_window__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__src_selection_on__ = __webpack_require__(114);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"event\", function() { return __WEBPACK_IMPORTED_MODULE_15__src_selection_on__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"customEvent\", function() { return __WEBPACK_IMPORTED_MODULE_15__src_selection_on__[\"b\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3-selection/index.js\n// module id = 3\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3-selection/index.js?");/***/},/* 4 *//***/function(module,exports,__webpack_require__){"use strict";eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/react-dom/lib/reactProdInvariant.js\n// module id = 4\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/react-dom/lib/reactProdInvariant.js?");/***/},/* 5 *//***/function(module,exports,__webpack_require__){"use strict";eval("/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\n\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/object-assign/index.js\n// module id = 5\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/object-assign/index.js?");/***/},/* 6 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_bisect__ = __webpack_require__(169);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"bisect\", function() { return __WEBPACK_IMPORTED_MODULE_0__src_bisect__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"bisectRight\", function() { return __WEBPACK_IMPORTED_MODULE_0__src_bisect__[\"b\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"bisectLeft\", function() { return __WEBPACK_IMPORTED_MODULE_0__src_bisect__[\"c\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_ascending__ = __webpack_require__(44);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"ascending\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_ascending__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_bisector__ = __webpack_require__(170);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"bisector\", function() { return __WEBPACK_IMPORTED_MODULE_2__src_bisector__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_cross__ = __webpack_require__(338);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"cross\", function() { return __WEBPACK_IMPORTED_MODULE_3__src_cross__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_descending__ = __webpack_require__(339);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"descending\", function() { return __WEBPACK_IMPORTED_MODULE_4__src_descending__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_deviation__ = __webpack_require__(171);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"deviation\", function() { return __WEBPACK_IMPORTED_MODULE_5__src_deviation__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__src_extent__ = __webpack_require__(172);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"extent\", function() { return __WEBPACK_IMPORTED_MODULE_6__src_extent__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__src_histogram__ = __webpack_require__(340);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"histogram\", function() { return __WEBPACK_IMPORTED_MODULE_7__src_histogram__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__src_threshold_freedmanDiaconis__ = __webpack_require__(350);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"thresholdFreedmanDiaconis\", function() { return __WEBPACK_IMPORTED_MODULE_8__src_threshold_freedmanDiaconis__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__src_threshold_scott__ = __webpack_require__(351);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"thresholdScott\", function() { return __WEBPACK_IMPORTED_MODULE_9__src_threshold_scott__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__src_threshold_sturges__ = __webpack_require__(176);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"thresholdSturges\", function() { return __WEBPACK_IMPORTED_MODULE_10__src_threshold_sturges__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__src_max__ = __webpack_require__(342);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return __WEBPACK_IMPORTED_MODULE_11__src_max__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__src_mean__ = __webpack_require__(343);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"mean\", function() { return __WEBPACK_IMPORTED_MODULE_12__src_mean__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__src_median__ = __webpack_require__(344);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"median\", function() { return __WEBPACK_IMPORTED_MODULE_13__src_median__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__src_merge__ = __webpack_require__(345);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"merge\", function() { return __WEBPACK_IMPORTED_MODULE_14__src_merge__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__src_min__ = __webpack_require__(173);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return __WEBPACK_IMPORTED_MODULE_15__src_min__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__src_pairs__ = __webpack_require__(174);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"pairs\", function() { return __WEBPACK_IMPORTED_MODULE_16__src_pairs__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__src_permute__ = __webpack_require__(346);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"permute\", function() { return __WEBPACK_IMPORTED_MODULE_17__src_permute__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__src_quantile__ = __webpack_require__(101);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"quantile\", function() { return __WEBPACK_IMPORTED_MODULE_18__src_quantile__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__src_range__ = __webpack_require__(175);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"range\", function() { return __WEBPACK_IMPORTED_MODULE_19__src_range__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__src_scan__ = __webpack_require__(347);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"scan\", function() { return __WEBPACK_IMPORTED_MODULE_20__src_scan__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__src_shuffle__ = __webpack_require__(348);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"shuffle\", function() { return __WEBPACK_IMPORTED_MODULE_21__src_shuffle__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__src_sum__ = __webpack_require__(349);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"sum\", function() { return __WEBPACK_IMPORTED_MODULE_22__src_sum__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__src_ticks__ = __webpack_require__(177);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"ticks\", function() { return __WEBPACK_IMPORTED_MODULE_23__src_ticks__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"tickIncrement\", function() { return __WEBPACK_IMPORTED_MODULE_23__src_ticks__[\"b\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"tickStep\", function() { return __WEBPACK_IMPORTED_MODULE_23__src_ticks__[\"c\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__src_transpose__ = __webpack_require__(178);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"transpose\", function() { return __WEBPACK_IMPORTED_MODULE_24__src_transpose__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__src_variance__ = __webpack_require__(179);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"variance\", function() { return __WEBPACK_IMPORTED_MODULE_25__src_variance__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__src_zip__ = __webpack_require__(352);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"zip\", function() { return __WEBPACK_IMPORTED_MODULE_26__src_zip__[\"a\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3-array/index.js\n// module id = 6\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3-array/index.js?");/***/},/* 7 *//***/function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(4);\n\nvar DOMProperty = __webpack_require__(31);\nvar ReactDOMComponentFlags = __webpack_require__(275);\n\nvar invariant = __webpack_require__(1);\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags;\n\nvar internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);\n\n/**\n * Check if a given node should be cached.\n */\nfunction shouldPrecacheNode(node, nodeID) {\n return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' ';\n}\n\n/**\n * Drill down (through composites and empty components) until we get a host or\n * host text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\nfunction getRenderedHostOrTextFromComponent(component) {\n var rendered;\n while (rendered = component._renderedComponent) {\n component = rendered;\n }\n return component;\n}\n\n/**\n * Populate `_hostNode` on the rendered host/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\nfunction precacheNode(inst, node) {\n var hostInst = getRenderedHostOrTextFromComponent(inst);\n hostInst._hostNode = node;\n node[internalInstanceKey] = hostInst;\n}\n\nfunction uncacheNode(inst) {\n var node = inst._hostNode;\n if (node) {\n delete node[internalInstanceKey];\n inst._hostNode = null;\n }\n}\n\n/**\n * Populate `_hostNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container's child nodes are always cached (until it unmounts).\n */\nfunction precacheChildNodes(inst, node) {\n if (inst._flags & Flags.hasCachedChildNodes) {\n return;\n }\n var children = inst._renderedChildren;\n var childNode = node.firstChild;\n outer: for (var name in children) {\n if (!children.hasOwnProperty(name)) {\n continue;\n }\n var childInst = children[name];\n var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n if (childID === 0) {\n // We're currently unmounting this child in ReactMultiChild; skip it.\n continue;\n }\n // We assume the child nodes are in the same order as the child instances.\n for (; childNode !== null; childNode = childNode.nextSibling) {\n if (shouldPrecacheNode(childNode, childID)) {\n precacheNode(childInst, childNode);\n continue outer;\n }\n }\n // We reached the end of the DOM children without finding an ID match.\n true ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;\n }\n inst._flags |= Flags.hasCachedChildNodes;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n if (node[internalInstanceKey]) {\n return node[internalInstanceKey];\n }\n\n // Walk up the tree until we find an ancestor whose instance we have cached.\n var parents = [];\n while (!node[internalInstanceKey]) {\n parents.push(node);\n if (node.parentNode) {\n node = node.parentNode;\n } else {\n // Top of the tree. This node must not be part of a React tree (or is\n // unmounted, potentially).\n return null;\n }\n }\n\n var closest;\n var inst;\n for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n closest = inst;\n if (parents.length) {\n precacheChildNodes(inst, node);\n }\n }\n\n return closest;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode(node) {\n var inst = getClosestInstanceFromNode(node);\n if (inst != null && inst._hostNode === node) {\n return inst;\n } else {\n return null;\n }\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance(inst) {\n // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n !(inst._hostNode !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n if (inst._hostNode) {\n return inst._hostNode;\n }\n\n // Walk up the tree until we find an ancestor whose DOM node we have cached.\n var parents = [];\n while (!inst._hostNode) {\n parents.push(inst);\n !inst._hostParent ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;\n inst = inst._hostParent;\n }\n\n // Now parents contains each ancestor that does *not* have a cached native\n // node, and `inst` is the deepest ancestor that does.\n for (; parents.length; inst = parents.pop()) {\n precacheChildNodes(inst, inst._hostNode);\n }\n\n return inst._hostNode;\n}\n\nvar ReactDOMComponentTree = {\n getClosestInstanceFromNode: getClosestInstanceFromNode,\n getInstanceFromNode: getInstanceFromNode,\n getNodeFromInstance: getNodeFromInstance,\n precacheChildNodes: precacheChildNodes,\n precacheNode: precacheNode,\n uncacheNode: uncacheNode\n};\n\nmodule.exports = ReactDOMComponentTree;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/react-dom/lib/ReactDOMComponentTree.js\n// module id = 7\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/react-dom/lib/ReactDOMComponentTree.js?");/***/},/* 8 *//***/function(module,exports,__webpack_require__){"use strict";eval("\n\nmodule.exports = __webpack_require__(51);\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/react/react.js\n// module id = 8\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/react/react.js?");/***/},/* 9 *//***/function(module,exports,__webpack_require__){"use strict";eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/fbjs/lib/ExecutionEnvironment.js\n// module id = 9\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/fbjs/lib/ExecutionEnvironment.js?");/***/},/* 10 *//***/function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*\n d3plus-common v0.6.22\n Common functions and methods used across D3plus modules.\n Copyright (c) 2017 D3plus - https://d3plus.org\n @license MIT\n*/\n(function (global, factory) {\n ( false ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, __webpack_require__(3), __webpack_require__(14), __webpack_require__(242), __webpack_require__(6), __webpack_require__(23)) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(3), __webpack_require__(14), __webpack_require__(242), __webpack_require__(6), __webpack_require__(23)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : factory(global.d3plus = global.d3plus || {}, global.d3Selection, global.d3Transition, global.i18next, global.d3Array, global.d3Collection);\n})(this, function (exports, d3Selection, d3Transition, i18next, d3Array, d3Collection) {\n 'use strict';\n\n i18next = 'default' in i18next ? i18next['default'] : i18next;\n\n /**\n @function accessor\n @desc Wraps an object key in a simple accessor function.\n @param {String} key The key to be returned from each Object passed to the function.\n @param {*} [def] A default value to be returned if the key is not present.\n @example
this
\n accessor(\"id\");\n @example
returns this
\n function(d) {\n return d[\"id\"];\n }\n */\n var accessor = function accessor(key, def) {\n if (def === void 0) {\n return function (d) {\n return d[key];\n };\n }\n return function (d) {\n return d[key] === void 0 ? def : d[key];\n };\n };\n\n /**\n @function isObject\n @desc Detects if a variable is a javascript Object.\n @param {*} item\n */\n var isObject = function isObject(item) {\n return item && (typeof item === 'undefined' ? 'undefined' : _typeof(item)) === \"object\" && !Array.isArray(item) && item !== void 0 ? true : false;\n };\n\n /**\n @function assign\n @desc A deeply recursive version of `Object.assign`.\n @param {...Object} objects\n @example
\n {id: \"bar\", deep: {group: \"A\", value: 20}}\n */\n function assign() {\n var objects = [],\n len = arguments.length;\n while (len--) {\n objects[len] = arguments[len];\n }var target = objects[0];\n var loop = function loop(i) {\n\n var source = objects[i];\n\n Object.keys(source).forEach(function (prop) {\n\n var value = source[prop];\n\n if (isObject(value)) {\n\n if (target.hasOwnProperty(prop) && isObject(target[prop])) {\n target[prop] = assign({}, target[prop], value);\n } else {\n target[prop] = value;\n }\n } else if (Array.isArray(value)) {\n\n if (target.hasOwnProperty(prop) && Array.isArray(target[prop])) {\n\n var targetArray = target[prop];\n\n value.forEach(function (sourceItem, itemIndex) {\n\n if (itemIndex < targetArray.length) {\n var targetItem = targetArray[itemIndex];\n\n if (Object.is(targetItem, sourceItem)) {\n return;\n }\n\n if (isObject(targetItem) && isObject(sourceItem) || Array.isArray(targetItem) && Array.isArray(sourceItem)) {\n targetArray[itemIndex] = assign({}, targetItem, sourceItem);\n } else {\n targetArray[itemIndex] = sourceItem;\n }\n } else {\n targetArray.push(sourceItem);\n }\n });\n } else {\n target[prop] = value;\n }\n } else {\n target[prop] = value;\n }\n });\n };\n\n for (var i = 1; i < objects.length; i++) {\n loop(i);\n }return target;\n }\n\n /**\n @function attrize\n @desc Applies each key/value in an object as an attr.\n @param {D3selection} elem The D3 element to apply the styles to.\n @param {Object} attrs An object of key/value attr pairs.\n */\n var attrize = function attrize(e, a) {\n if (a === void 0) a = {};\n\n for (var k in a) {\n if ({}.hasOwnProperty.call(a, k)) {\n e.attr(k, a[k]);\n }\n }\n };\n\n /**\n @function s\n @desc Returns 4 random characters, used for constructing unique identifiers.\n @private\n */\n function s() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n\n /**\n @function uuid\n @summary Returns a unique identifier.\n */\n var uuid = function uuid() {\n return \"\" + s() + s() + \"-\" + s() + \"-\" + s() + \"-\" + s() + \"-\" + s() + s() + s();\n };\n\n /**\n @class BaseClass\n @summary An abstract class that contains some global methods and functionality.\n */\n var BaseClass = function BaseClass() {\n this._on = {};\n this._uuid = uuid();\n };\n\n /**\n @memberof BaseClass\n @desc If *value* is specified, sets the methods that correspond to the key/value pairs and returns this class. If *value* is not specified, returns the current configuration.\n @param {Object} [*value*]\n @chainable\n */\n BaseClass.prototype.config = function config(_) {\n var this$1 = this;\n\n if (arguments.length) {\n for (var k in _) {\n if ({}.hasOwnProperty.call(_, k) && k in this$1) {\n this$1[k](_[k]);\n }\n }\n return this;\n } else {\n var config = {};\n for (var k$1 in this$1.__proto__) {\n if (k$1.indexOf(\"_\") !== 0 && ![\"config\", \"constructor\", \"render\"].includes(k$1)) {\n config[k$1] = this$1[k$1]();\n }\n }\n return config;\n }\n };\n\n /**\n @memberof BaseClass\n @desc Adds or removes a *listener* to each object for the specified event *typenames*. If a *listener* is not specified, returns the currently assigned listener for the specified event *typename*. Mirrors the core [d3-selection](https://github.com/d3/d3-selection#selection_on) behavior.\n @param {String} [*typenames*]\n @param {Function} [*listener*]\n @chainable\n @example
By default, listeners apply globally to all objects, however, passing a namespace with the class name gives control over specific elements:
\n new Plot\n .on(\"click.Shape\", function(d) {\n console.log(\"data for shape clicked:\", d);\n })\n .on(\"click.Legend\", function(d) {\n console.log(\"data for legend clicked:\", d);\n })\n */\n BaseClass.prototype.on = function on(_, f) {\n return arguments.length === 2 ? (this._on[_] = f, this) : arguments.length ? typeof _ === \"string\" ? this._on[_] : (this._on = Object.assign({}, this._on, _), this) : this._on;\n };\n\n /**\n @function closest\n @desc Finds the closest numeric value in an array.\n @param {Number} n The number value to use when searching the array.\n @param {Array} arr The array of values to test against.\n */\n var closest = function closest(n, arr) {\n if (arr === void 0) arr = [];\n\n if (!arr || !(arr instanceof Array) || !arr.length) {\n return undefined;\n }\n return arr.reduce(function (prev, curr) {\n return Math.abs(curr - n) < Math.abs(prev - n) ? curr : prev;\n });\n };\n\n /**\n @function configPrep\n @desc Preps a config object for d3plus data, and optionally bubbles up a specific nested type. When using this function, you must bind a d3plus class' `this` context.\n @param {Object} [config = this._shapeConfig] The configuration object to parse.\n @param {String} [type = \"shape\"] The event classifier to user for \"on\" events. For example, the default event type of \"shape\" will apply all events in the \"on\" config object with that key, like \"click.shape\" and \"mouseleave.shape\", in addition to any gloval events like \"click\" and \"mouseleave\".\n @param {String} [nest] An optional nested key to bubble up to the parent config level.\n */\n function configPrep(config, type, nest) {\n if (config === void 0) config = this._shapeConfig;\n if (type === void 0) type = \"shape\";\n if (nest === void 0) nest = false;\n\n var newConfig = { duration: this._duration, on: {} };\n\n var wrapFunction = function wrapFunction(func) {\n return function (d, i, s) {\n while (d.__d3plus__) {\n i = d.i;\n d = d.data || d.feature;\n }\n return func(d, i, s);\n };\n };\n\n var parseEvents = function parseEvents(newObj, on) {\n\n for (var event in on) {\n\n if ({}.hasOwnProperty.call(on, event) && !event.includes(\".\") || event.includes(\".\" + type)) {\n\n newObj.on[event] = wrapFunction(on[event]);\n }\n }\n };\n\n var keyEval = function keyEval(newObj, obj) {\n\n for (var key in obj) {\n\n if ({}.hasOwnProperty.call(obj, key)) {\n\n if (key === \"on\") {\n parseEvents(newObj, obj[key]);\n } else if (typeof obj[key] === \"function\") {\n newObj[key] = wrapFunction(obj[key]);\n } else if (_typeof(obj[key]) === \"object\" && !(obj instanceof Array)) {\n newObj[key] = { on: {} };\n keyEval(newObj[key], obj[key]);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n };\n\n keyEval(newConfig, config);\n if (this._on) {\n parseEvents(newConfig, this._on);\n }\n if (nest && config[nest]) {\n keyEval(newConfig, config[nest]);\n if (config[nest].on) {\n parseEvents(newConfig, config[nest].on);\n }\n }\n\n return newConfig;\n }\n\n /**\n @function constant\n @desc Wraps non-function variables in a simple return function.\n @param {Array|Number|Object|String} value The value to be returned from the function.\n @example
this
\n constant(42);\n @example
returns this
\n function() {\n return 42;\n }\n */\n var constant = function constant(value) {\n return function constant() {\n return value;\n };\n };\n\n /**\n @function elem\n @desc Manages the enter/update/exit pattern for a single DOM element.\n @param {String} selector A D3 selector, which must include the tagname and a class and/or ID.\n @param {Object} params Additional parameters.\n @param {Boolean} [params.condition = true] Whether or not the element should be rendered (or removed).\n @param {Object} [params.enter = {}] A collection of key/value pairs that map to attributes to be given on enter.\n @param {Object} [params.exit = {}] A collection of key/value pairs that map to attributes to be given on exit.\n @param {D3Selection} [params.parent = d3.select(\"body\")] The parent element for this new element to be appended to.\n @param {D3Transition} [params.transition = d3.transition().duration(0)] The transition to use when animated the different life cycle stages.\n @param {Object} [params.update = {}] A collection of key/value pairs that map to attributes to be given on update.\n */\n var elem = function elem(selector, p) {\n\n // overrides default params\n p = Object.assign({}, {\n condition: true,\n enter: {},\n exit: {},\n parent: d3Selection.select(\"body\"),\n transition: d3Transition.transition().duration(0),\n update: {}\n }, p);\n\n var className = /\\.([^#]+)/g.exec(selector),\n id = /#([^\\.]+)/g.exec(selector),\n tag = /^([^.^#]+)/g.exec(selector)[1];\n\n var elem = p.parent.selectAll(selector.includes(\":\") ? selector.split(\":\")[1] : selector).data(p.condition ? [null] : []);\n\n var enter = elem.enter().append(tag).call(attrize, p.enter);\n\n if (id) {\n enter.attr(\"id\", id[1]);\n }\n if (className) {\n enter.attr(\"class\", className[1]);\n }\n\n elem.exit().transition(p.transition).call(attrize, p.exit).remove();\n\n var update = enter.merge(elem);\n update.transition(p.transition).call(attrize, p.update);\n\n return update;\n };\n\n var Back = \"Back\";\n var Total = \"Total\";\n var array = { \"lowercase\": [\"a\", \"an\", \"and\", \"as\", \"at\", \"but\", \"by\", \"for\", \"from\", \"if\", \"in\", \"into\", \"near\", \"nor\", \"of\", \"on\", \"onto\", \"or\", \"per\", \"that\", \"the\", \"to\", \"with\", \"via\", \"vs\", \"vs.\"], \"uppercase\": [\"CEO\", \"CFO\", \"CNC\", \"COO\", \"CPU\", \"GDP\", \"HVAC\", \"ID\", \"IT\", \"R&D\", \"TV\", \"UI\"] };\n var enUS = {\n Back: Back,\n Total: Total,\n array: array\n };\n\n var Back$1 = \"Atrás\";\n var Total$1 = \"Total\";\n var array$1 = { \"lowercase\": [\"una\", \"y\", \"en\", \"pero\", \"en\", \"de\", \"o\", \"el\", \"la\", \"los\", \"las\", \"para\", \"a\", \"con\"], \"uppercase\": [\"CEO\", \"CFO\", \"CNC\", \"COO\", \"CPU\", \"PIB\", \"HVAC\", \"ID\", \"TI\", \"I&D\", \"TV\", \"UI\"] };\n var esES = {\n Back: Back$1,\n Total: Total$1,\n array: array$1\n };\n\n var namespace = \"d3plus\";\n var locale = i18next.init({\n fallbackLng: \"en-US\",\n defaultNS: namespace,\n fallbackNS: namespace,\n initImmediate: false,\n ns: namespace,\n resources: {\n \"en-US\": (obj = {}, obj[namespace] = enUS, obj),\n \"es-ES\": (obj$1 = {}, obj$1[namespace] = esES, obj$1)\n }\n });\n var obj;\n var obj$1;\n\n /**\n @function merge\n @desc Combines an Array of Objects together and returns a new Object.\n @param {Array} objects The Array of objects to be merged together.\n @param {Object} aggs An object containing specific aggregation methods (functions) for each key type. By default, numbers are summed and strings are returned as an array of unique values.\n @example
\n {id: [\"bar\", \"foo\"], group: \"A\", value: 30, links: [1, 2, 3]}\n */\n function objectMerge(objects, aggs) {\n if (aggs === void 0) aggs = {};\n\n var availableKeys = new Set(d3Array.merge(objects.map(function (o) {\n return d3Collection.keys(o);\n }))),\n newObject = {};\n\n availableKeys.forEach(function (k) {\n var values = objects.map(function (o) {\n return o[k];\n });\n var value;\n if (aggs[k]) {\n value = aggs[k](values);\n } else {\n var types = values.map(function (v) {\n return v || v === false ? v.constructor : v;\n }).filter(function (v) {\n return v !== void 0;\n });\n if (!types.length) {\n value = undefined;\n } else if (types.indexOf(Array) >= 0) {\n value = d3Array.merge(values.map(function (v) {\n return v instanceof Array ? v : [v];\n }));\n value = Array.from(new Set(value));\n if (value.length === 1) {\n value = value[0];\n }\n } else if (types.indexOf(String) >= 0) {\n value = Array.from(new Set(values));\n if (value.length === 1) {\n value = value[0];\n }\n } else if (types.indexOf(Number) >= 0) {\n value = d3Array.sum(values);\n } else if (types.indexOf(Object) >= 0) {\n value = objectMerge(values.filter(function (v) {\n return v;\n }));\n } else {\n value = Array.from(new Set(values.filter(function (v) {\n return v !== void 0;\n })));\n if (value.length === 1) {\n value = value[0];\n }\n }\n }\n newObject[k] = value;\n });\n\n return newObject;\n }\n\n /**\n @function prefix\n @desc Returns the appropriate CSS vendor prefix, given the current browser.\n */\n var prefix = function prefix() {\n if (\"-webkit-transform\" in document.body.style) {\n return \"-webkit-\";\n } else if (\"-moz-transform\" in document.body.style) {\n return \"-moz-\";\n } else if (\"-ms-transform\" in document.body.style) {\n return \"-ms-\";\n } else if (\"-o-transform\" in document.body.style) {\n return \"-o-\";\n } else {\n return \"\";\n }\n };\n\n /**\n @function stylize\n @desc Applies each key/value in an object as a style.\n @param {D3selection} elem The D3 element to apply the styles to.\n @param {Object} styles An object of key/value style pairs.\n */\n var stylize = function stylize(e, s) {\n if (s === void 0) s = {};\n\n for (var k in s) {\n if ({}.hasOwnProperty.call(s, k)) {\n e.style(k, s[k]);\n }\n }\n };\n\n exports.accessor = accessor;\n exports.assign = assign;\n exports.attrize = attrize;\n exports.BaseClass = BaseClass;\n exports.closest = closest;\n exports.configPrep = configPrep;\n exports.constant = constant;\n exports.elem = elem;\n exports.isObject = isObject;\n exports.locale = locale;\n exports.merge = objectMerge;\n exports.prefix = prefix;\n exports.stylize = stylize;\n exports.uuid = uuid;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n});\n//# sourceMappingURL=d3plus-common.js.map\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3plus-common/build/d3plus-common.js\n// module id = 10\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3plus-common/build/d3plus-common.js?");/***/},/* 11 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_color__ = __webpack_require__(103);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"color\", function() { return __WEBPACK_IMPORTED_MODULE_0__src_color__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"rgb\", function() { return __WEBPACK_IMPORTED_MODULE_0__src_color__[\"b\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"hsl\", function() { return __WEBPACK_IMPORTED_MODULE_0__src_color__[\"c\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_lab__ = __webpack_require__(363);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"lab\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_lab__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"hcl\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_lab__[\"b\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_cubehelix__ = __webpack_require__(362);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"cubehelix\", function() { return __WEBPACK_IMPORTED_MODULE_2__src_cubehelix__[\"a\"]; });\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3-color/index.js\n// module id = 11\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3-color/index.js?");/***/},/* 12 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony export (immutable) */ __webpack_exports__[\"a\"] = newInterval;\nvar t0 = new Date(),\n t1 = new Date();\n\nfunction newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function (date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function (date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function (date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function (start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do {\n range.push(new Date(+start));\n } while ((offseti(start, step), floori(start), start < stop));\n return range;\n };\n\n interval.filter = function (test) {\n return newInterval(function (date) {\n if (date >= date) while (floori(date), !test(date)) {\n date.setTime(date - 1);\n }\n }, function (date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function (start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function (step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null : !(step > 1) ? interval : interval.filter(field ? function (d) {\n return field(d) % step === 0;\n } : function (d) {\n return interval.count(0, d) % step === 0;\n });\n };\n }\n\n return interval;\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3-time/src/interval.js\n// module id = 12\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3-time/src/interval.js?");/***/},/* 13 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_value__ = __webpack_require__(108);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolate\", function() { return __WEBPACK_IMPORTED_MODULE_0__src_value__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_array__ = __webpack_require__(191);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateArray\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_array__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_basis__ = __webpack_require__(107);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateBasis\", function() { return __WEBPACK_IMPORTED_MODULE_2__src_basis__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_basisClosed__ = __webpack_require__(192);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateBasisClosed\", function() { return __WEBPACK_IMPORTED_MODULE_3__src_basisClosed__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_date__ = __webpack_require__(194);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateDate\", function() { return __WEBPACK_IMPORTED_MODULE_4__src_date__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_number__ = __webpack_require__(75);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateNumber\", function() { return __WEBPACK_IMPORTED_MODULE_5__src_number__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__src_object__ = __webpack_require__(195);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateObject\", function() { return __WEBPACK_IMPORTED_MODULE_6__src_object__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__src_round__ = __webpack_require__(396);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateRound\", function() { return __WEBPACK_IMPORTED_MODULE_7__src_round__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__src_string__ = __webpack_require__(197);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateString\", function() { return __WEBPACK_IMPORTED_MODULE_8__src_string__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__src_transform_index__ = __webpack_require__(398);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformCss\", function() { return __WEBPACK_IMPORTED_MODULE_9__src_transform_index__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateTransformSvg\", function() { return __WEBPACK_IMPORTED_MODULE_9__src_transform_index__[\"b\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__src_zoom__ = __webpack_require__(400);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateZoom\", function() { return __WEBPACK_IMPORTED_MODULE_10__src_zoom__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__src_rgb__ = __webpack_require__(196);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgb\", function() { return __WEBPACK_IMPORTED_MODULE_11__src_rgb__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgbBasis\", function() { return __WEBPACK_IMPORTED_MODULE_11__src_rgb__[\"b\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateRgbBasisClosed\", function() { return __WEBPACK_IMPORTED_MODULE_11__src_rgb__[\"c\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__src_hsl__ = __webpack_require__(393);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateHsl\", function() { return __WEBPACK_IMPORTED_MODULE_12__src_hsl__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateHslLong\", function() { return __WEBPACK_IMPORTED_MODULE_12__src_hsl__[\"b\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__src_lab__ = __webpack_require__(394);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateLab\", function() { return __WEBPACK_IMPORTED_MODULE_13__src_lab__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__src_hcl__ = __webpack_require__(392);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateHcl\", function() { return __WEBPACK_IMPORTED_MODULE_14__src_hcl__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateHclLong\", function() { return __WEBPACK_IMPORTED_MODULE_14__src_hcl__[\"b\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__src_cubehelix__ = __webpack_require__(391);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateCubehelix\", function() { return __WEBPACK_IMPORTED_MODULE_15__src_cubehelix__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateCubehelixLong\", function() { return __WEBPACK_IMPORTED_MODULE_15__src_cubehelix__[\"b\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__src_quantize__ = __webpack_require__(395);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"quantize\", function() { return __WEBPACK_IMPORTED_MODULE_16__src_quantize__[\"a\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3-interpolate/index.js\n// module id = 13\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3-interpolate/index.js?");/***/},/* 14 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_selection_index__ = __webpack_require__(502);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_transition_index__ = __webpack_require__(28);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"transition\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_transition_index__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_active__ = __webpack_require__(501);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"active\", function() { return __WEBPACK_IMPORTED_MODULE_2__src_active__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_interrupt__ = __webpack_require__(229);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interrupt\", function() { return __WEBPACK_IMPORTED_MODULE_3__src_interrupt__[\"a\"]; });\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3-transition/index.js\n// module id = 14\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3-transition/index.js?");/***/},/* 15 *//***/function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _prodInvariant = __webpack_require__(52);\n\nvar ReactCurrentOwner = __webpack_require__(22);\n\nvar invariant = __webpack_require__(1);\nvar warning = __webpack_require__(2);\n\nfunction isNative(fn) {\n // Based on isNative() from Lodash\n var funcToString = Function.prototype.toString;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var reIsNative = RegExp('^' + funcToString\n // Take an example native function source for comparison\n .call(hasOwnProperty\n // Strip regex characters so we can use it for regex\n ).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&'\n // Remove hasOwnProperty from the template to make it generic\n ).replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n try {\n var source = funcToString.call(fn);\n return reIsNative.test(source);\n } catch (err) {\n return false;\n }\n}\n\nvar canUseCollections =\n// Array.from\ntypeof Array.from === 'function' &&\n// Map\ntypeof Map === 'function' && isNative(Map) &&\n// Map.prototype.keys\nMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\n// Set\ntypeof Set === 'function' && isNative(Set) &&\n// Set.prototype.keys\nSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\n\nvar setItem;\nvar getItem;\nvar removeItem;\nvar getItemIDs;\nvar addRoot;\nvar removeRoot;\nvar getRootIDs;\n\nif (canUseCollections) {\n var itemMap = new Map();\n var rootIDSet = new Set();\n\n setItem = function setItem(id, item) {\n itemMap.set(id, item);\n };\n getItem = function getItem(id) {\n return itemMap.get(id);\n };\n removeItem = function removeItem(id) {\n itemMap['delete'](id);\n };\n getItemIDs = function getItemIDs() {\n return Array.from(itemMap.keys());\n };\n\n addRoot = function addRoot(id) {\n rootIDSet.add(id);\n };\n removeRoot = function removeRoot(id) {\n rootIDSet['delete'](id);\n };\n getRootIDs = function getRootIDs() {\n return Array.from(rootIDSet.keys());\n };\n} else {\n var itemByKey = {};\n var rootByKey = {};\n\n // Use non-numeric keys to prevent V8 performance issues:\n // https://github.com/facebook/react/pull/7232\n var getKeyFromID = function getKeyFromID(id) {\n return '.' + id;\n };\n var getIDFromKey = function getIDFromKey(key) {\n return parseInt(key.substr(1), 10);\n };\n\n setItem = function setItem(id, item) {\n var key = getKeyFromID(id);\n itemByKey[key] = item;\n };\n getItem = function getItem(id) {\n var key = getKeyFromID(id);\n return itemByKey[key];\n };\n removeItem = function removeItem(id) {\n var key = getKeyFromID(id);\n delete itemByKey[key];\n };\n getItemIDs = function getItemIDs() {\n return Object.keys(itemByKey).map(getIDFromKey);\n };\n\n addRoot = function addRoot(id) {\n var key = getKeyFromID(id);\n rootByKey[key] = true;\n };\n removeRoot = function removeRoot(id) {\n var key = getKeyFromID(id);\n delete rootByKey[key];\n };\n getRootIDs = function getRootIDs() {\n return Object.keys(rootByKey).map(getIDFromKey);\n };\n}\n\nvar unmountedIDs = [];\n\nfunction purgeDeep(id) {\n var item = getItem(id);\n if (item) {\n var childIDs = item.childIDs;\n\n removeItem(id);\n childIDs.forEach(purgeDeep);\n }\n}\n\nfunction describeComponentFrame(name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n}\n\nfunction _getDisplayName(element) {\n if (element == null) {\n return '#empty';\n } else if (typeof element === 'string' || typeof element === 'number') {\n return '#text';\n } else if (typeof element.type === 'string') {\n return element.type;\n } else {\n return element.type.displayName || element.type.name || 'Unknown';\n }\n}\n\nfunction describeID(id) {\n var name = ReactComponentTreeHook.getDisplayName(id);\n var element = ReactComponentTreeHook.getElement(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName;\n if (ownerID) {\n ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n }\n process.env.NODE_ENV !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;\n return describeComponentFrame(name, element && element._source, ownerName);\n}\n\nvar ReactComponentTreeHook = {\n onSetChildren: function onSetChildren(id, nextChildIDs) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.childIDs = nextChildIDs;\n\n for (var i = 0; i < nextChildIDs.length; i++) {\n var nextChildID = nextChildIDs[i];\n var nextChild = getItem(nextChildID);\n !nextChild ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;\n !(nextChild.childIDs != null || _typeof(nextChild.element) !== 'object' || nextChild.element == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;\n !nextChild.isMounted ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;\n if (nextChild.parentID == null) {\n nextChild.parentID = id;\n // TODO: This shouldn't be necessary but mounting a new root during in\n // componentWillMount currently causes not-yet-mounted components to\n // be purged from our tree data so their parent id is missing.\n }\n !(nextChild.parentID === id) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;\n }\n },\n onBeforeMountComponent: function onBeforeMountComponent(id, element, parentID) {\n var item = {\n element: element,\n parentID: parentID,\n text: null,\n childIDs: [],\n isMounted: false,\n updateCount: 0\n };\n setItem(id, item);\n },\n onBeforeUpdateComponent: function onBeforeUpdateComponent(id, element) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.element = element;\n },\n onMountComponent: function onMountComponent(id) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.isMounted = true;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n addRoot(id);\n }\n },\n onUpdateComponent: function onUpdateComponent(id) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.updateCount++;\n },\n onUnmountComponent: function onUnmountComponent(id) {\n var item = getItem(id);\n if (item) {\n // We need to check if it exists.\n // `item` might not exist if it is inside an error boundary, and a sibling\n // error boundary child threw while mounting. Then this instance never\n // got a chance to mount, but it still gets an unmounting event during\n // the error boundary cleanup.\n item.isMounted = false;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n removeRoot(id);\n }\n }\n unmountedIDs.push(id);\n },\n purgeUnmountedComponents: function purgeUnmountedComponents() {\n if (ReactComponentTreeHook._preventPurging) {\n // Should only be used for testing.\n return;\n }\n\n for (var i = 0; i < unmountedIDs.length; i++) {\n var id = unmountedIDs[i];\n purgeDeep(id);\n }\n unmountedIDs.length = 0;\n },\n isMounted: function isMounted(id) {\n var item = getItem(id);\n return item ? item.isMounted : false;\n },\n getCurrentStackAddendum: function getCurrentStackAddendum(topElement) {\n var info = '';\n if (topElement) {\n var name = _getDisplayName(topElement);\n var owner = topElement._owner;\n info += describeComponentFrame(name, topElement._source, owner && owner.getName());\n }\n\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n info += ReactComponentTreeHook.getStackAddendumByID(id);\n return info;\n },\n getStackAddendumByID: function getStackAddendumByID(id) {\n var info = '';\n while (id) {\n info += describeID(id);\n id = ReactComponentTreeHook.getParentID(id);\n }\n return info;\n },\n getChildIDs: function getChildIDs(id) {\n var item = getItem(id);\n return item ? item.childIDs : [];\n },\n getDisplayName: function getDisplayName(id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element) {\n return null;\n }\n return _getDisplayName(element);\n },\n getElement: function getElement(id) {\n var item = getItem(id);\n return item ? item.element : null;\n },\n getOwnerID: function getOwnerID(id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element || !element._owner) {\n return null;\n }\n return element._owner._debugID;\n },\n getParentID: function getParentID(id) {\n var item = getItem(id);\n return item ? item.parentID : null;\n },\n getSource: function getSource(id) {\n var item = getItem(id);\n var element = item ? item.element : null;\n var source = element != null ? element._source : null;\n return source;\n },\n getText: function getText(id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (typeof element === 'string') {\n return element;\n } else if (typeof element === 'number') {\n return '' + element;\n } else {\n return null;\n }\n },\n getUpdateCount: function getUpdateCount(id) {\n var item = getItem(id);\n return item ? item.updateCount : 0;\n },\n\n getRootIDs: getRootIDs,\n getRegisteredIDs: getItemIDs,\n\n pushNonStandardWarningStack: function pushNonStandardWarningStack(isCreatingElement, currentSource) {\n if (typeof console.reactStack !== 'function') {\n return;\n }\n\n var stack = [];\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n try {\n if (isCreatingElement) {\n stack.push({\n name: id ? ReactComponentTreeHook.getDisplayName(id) : null,\n fileName: currentSource ? currentSource.fileName : null,\n lineNumber: currentSource ? currentSource.lineNumber : null\n });\n }\n\n while (id) {\n var element = ReactComponentTreeHook.getElement(id);\n var parentID = ReactComponentTreeHook.getParentID(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName = ownerID ? ReactComponentTreeHook.getDisplayName(ownerID) : null;\n var source = element && element._source;\n stack.push({\n name: ownerName,\n fileName: source ? source.fileName : null,\n lineNumber: source ? source.lineNumber : null\n });\n id = parentID;\n }\n } catch (err) {\n // Internal state is messed up.\n // Stop building the stack (it's just a nice to have).\n }\n\n console.reactStack(stack);\n },\n popNonStandardWarningStack: function popNonStandardWarningStack() {\n if (typeof console.reactStackEnd !== 'function') {\n return;\n }\n console.reactStackEnd();\n }\n};\n\nmodule.exports = ReactComponentTreeHook;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/react/lib/ReactComponentTreeHook.js\n// module id = 15\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/react/lib/ReactComponentTreeHook.js?");/***/},/* 16 *//***/function(module,exports,__webpack_require__){"use strict";eval("\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar bind = __webpack_require__(165);\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return typeof FormData !== 'undefined' && val instanceof FormData;\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && val.buffer instanceof ArrayBuffer;\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * typeof document.createElement -> undefined\n */\nfunction isStandardBrowserEnv() {\n return typeof window !== 'undefined' && typeof document !== 'undefined' && typeof document.createElement === 'function';\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object' && !isArray(obj)) {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge() /* obj1, obj2, obj3, ... */{\n var result = {};\n function assignValue(val, key) {\n if (_typeof(result[key]) === 'object' && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim\n};\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/axios/lib/utils.js\n// module id = 16\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/axios/lib/utils.js?");/***/},/* 17 *//***/function(module,exports,__webpack_require__){"use strict";eval("\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/fbjs/lib/emptyFunction.js\n// module id = 17\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/fbjs/lib/emptyFunction.js?");/***/},/* 18 *//***/function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n// Trust the developer to only use ReactInstrumentation with a __DEV__ check\n\nvar debugTool = null;\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactDebugTool = __webpack_require__(689);\n debugTool = ReactDebugTool;\n}\n\nmodule.exports = { debugTool: debugTool };\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/react-dom/lib/ReactInstrumentation.js\n// module id = 18\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/react-dom/lib/ReactInstrumentation.js?");/***/},/* 19 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return root; });\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = Selection;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__select__ = __webpack_require__(453);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__selectAll__ = __webpack_require__(454);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__filter__ = __webpack_require__(442);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__data__ = __webpack_require__(436);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__enter__ = __webpack_require__(206);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__exit__ = __webpack_require__(441);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__merge__ = __webpack_require__(446);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__order__ = __webpack_require__(449);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__sort__ = __webpack_require__(456);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__call__ = __webpack_require__(434);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__nodes__ = __webpack_require__(448);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__node__ = __webpack_require__(447);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__size__ = __webpack_require__(455);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__empty__ = __webpack_require__(440);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__each__ = __webpack_require__(439);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__attr__ = __webpack_require__(433);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__style__ = __webpack_require__(208);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__property__ = __webpack_require__(450);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__classed__ = __webpack_require__(435);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__text__ = __webpack_require__(457);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__html__ = __webpack_require__(443);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__raise__ = __webpack_require__(451);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__lower__ = __webpack_require__(445);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__append__ = __webpack_require__(432);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__insert__ = __webpack_require__(444);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__remove__ = __webpack_require__(452);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__datum__ = __webpack_require__(437);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__on__ = __webpack_require__(114);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__dispatch__ = __webpack_require__(438);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar root = [null];\n\nfunction Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: __WEBPACK_IMPORTED_MODULE_0__select__[\"a\" /* default */],\n selectAll: __WEBPACK_IMPORTED_MODULE_1__selectAll__[\"a\" /* default */],\n filter: __WEBPACK_IMPORTED_MODULE_2__filter__[\"a\" /* default */],\n data: __WEBPACK_IMPORTED_MODULE_3__data__[\"a\" /* default */],\n enter: __WEBPACK_IMPORTED_MODULE_4__enter__[\"a\" /* default */],\n exit: __WEBPACK_IMPORTED_MODULE_5__exit__[\"a\" /* default */],\n merge: __WEBPACK_IMPORTED_MODULE_6__merge__[\"a\" /* default */],\n order: __WEBPACK_IMPORTED_MODULE_7__order__[\"a\" /* default */],\n sort: __WEBPACK_IMPORTED_MODULE_8__sort__[\"a\" /* default */],\n call: __WEBPACK_IMPORTED_MODULE_9__call__[\"a\" /* default */],\n nodes: __WEBPACK_IMPORTED_MODULE_10__nodes__[\"a\" /* default */],\n node: __WEBPACK_IMPORTED_MODULE_11__node__[\"a\" /* default */],\n size: __WEBPACK_IMPORTED_MODULE_12__size__[\"a\" /* default */],\n empty: __WEBPACK_IMPORTED_MODULE_13__empty__[\"a\" /* default */],\n each: __WEBPACK_IMPORTED_MODULE_14__each__[\"a\" /* default */],\n attr: __WEBPACK_IMPORTED_MODULE_15__attr__[\"a\" /* default */],\n style: __WEBPACK_IMPORTED_MODULE_16__style__[\"b\" /* default */],\n property: __WEBPACK_IMPORTED_MODULE_17__property__[\"a\" /* default */],\n classed: __WEBPACK_IMPORTED_MODULE_18__classed__[\"a\" /* default */],\n text: __WEBPACK_IMPORTED_MODULE_19__text__[\"a\" /* default */],\n html: __WEBPACK_IMPORTED_MODULE_20__html__[\"a\" /* default */],\n raise: __WEBPACK_IMPORTED_MODULE_21__raise__[\"a\" /* default */],\n lower: __WEBPACK_IMPORTED_MODULE_22__lower__[\"a\" /* default */],\n append: __WEBPACK_IMPORTED_MODULE_23__append__[\"a\" /* default */],\n insert: __WEBPACK_IMPORTED_MODULE_24__insert__[\"a\" /* default */],\n remove: __WEBPACK_IMPORTED_MODULE_25__remove__[\"a\" /* default */],\n datum: __WEBPACK_IMPORTED_MODULE_26__datum__[\"a\" /* default */],\n on: __WEBPACK_IMPORTED_MODULE_27__on__[\"c\" /* default */],\n dispatch: __WEBPACK_IMPORTED_MODULE_28__dispatch__[\"a\" /* default */]\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (selection);\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3-selection/src/selection/index.js\n// module id = 19\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3-selection/src/selection/index.js?");/***/},/* 20 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* unused harmony export CREATED */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return SCHEDULED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return STARTING; });\n/* unused harmony export STARTED */\n/* unused harmony export RUNNING */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return ENDING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return ENDED; });\n/* harmony export (immutable) */ __webpack_exports__[\"g\"] = init;\n/* harmony export (immutable) */ __webpack_exports__[\"e\"] = set;\n/* harmony export (immutable) */ __webpack_exports__[\"f\"] = get;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_dispatch__ = __webpack_require__(55);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_d3_timer__ = __webpack_require__(228);\n\n\n\nvar emptyOn = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_dispatch__[\"dispatch\"])(\"start\", \"end\", \"interrupt\");\nvar emptyTween = [];\n\nvar CREATED = 0;\nvar SCHEDULED = 1;\nvar STARTING = 2;\nvar STARTED = 3;\nvar RUNNING = 4;\nvar ENDING = 5;\nvar ENDED = 6;\n\n/* harmony default export */ __webpack_exports__[\"h\"] = (function (node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n});\n\nfunction init(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id]) || schedule.state > CREATED) throw new Error(\"too late\");\n return schedule;\n}\n\nfunction set(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id]) || schedule.state > STARTING) throw new Error(\"too late\");\n return schedule;\n}\n\nfunction get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"too late\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_timer__[\"a\" /* timer */])(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_timer__[\"b\" /* timeout */])(start);\n\n // Interrupt the active transition, if any.\n // Dispatch the interrupt event.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions. No interrupt event is dispatched\n // because the cancelled transitions never started. Note that this also\n // removes this transition from the pending list!\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1_d3_timer__[\"b\" /* timeout */])(function () {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(null, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) {\n return;\n } // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3-transition/src/transition/schedule.js\n// module id = 20\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3-transition/src/transition/schedule.js?");/***/},/* 21 *//***/function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(4),\n _assign = __webpack_require__(5);\n\nvar CallbackQueue = __webpack_require__(273);\nvar PooledClass = __webpack_require__(37);\nvar ReactFeatureFlags = __webpack_require__(278);\nvar ReactReconciler = __webpack_require__(50);\nvar Transaction = __webpack_require__(95);\n\nvar invariant = __webpack_require__(1);\n\nvar dirtyComponents = [];\nvar updateBatchNumber = 0;\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;\n}\n\nvar NESTED_UPDATES = {\n initialize: function initialize() {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function close() {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function initialize() {\n this.callbackQueue.reset();\n },\n close: function close() {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */true);\n}\n\n_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {\n getTransactionWrappers: function getTransactionWrappers() {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function destructor() {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function perform(method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d, e) {\n ensureInjected();\n return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n !(len === dirtyComponents.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected flush transaction\\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n // Any updates enqueued while reconciling must be performed after this entire\n // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and\n // C, B could update twice in a single batch if C's render enqueues an update\n // to B (since B would have already updated, we should skip it, and the only\n // way we can know to do so is by checking the batch counter).\n updateBatchNumber++;\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var namedComponent = component;\n // Duck type TopLevelWrapper. This is probably always true.\n if (component._currentElement.type.isReactTopLevelWrapper) {\n namedComponent = component._renderedComponent;\n }\n markerName = 'React update: ' + namedComponent.getName();\n console.time(markerName);\n }\n\n ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function flushBatchedUpdates() {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n if (component._updateBatchNumber == null) {\n component._updateBatchNumber = updateBatchNumber + 1;\n }\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n !batchingStrategy.isBatchingUpdates ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0;\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function injectReconcileTransaction(ReconcileTransaction) {\n !ReconcileTransaction ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function injectBatchingStrategy(_batchingStrategy) {\n !_batchingStrategy ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;\n !(typeof _batchingStrategy.batchedUpdates === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;\n !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/react-dom/lib/ReactUpdates.js\n// module id = 21\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/react-dom/lib/ReactUpdates.js?");/***/},/* 22 *//***/function(module,exports,__webpack_require__){"use strict";eval("/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\n\nvar ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\nmodule.exports = ReactCurrentOwner;\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/react/lib/ReactCurrentOwner.js\n// module id = 22\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/react/lib/ReactCurrentOwner.js?");/***/},/* 23 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_nest__ = __webpack_require__(359);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"nest\", function() { return __WEBPACK_IMPORTED_MODULE_0__src_nest__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_set__ = __webpack_require__(360);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_set__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_map__ = __webpack_require__(102);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return __WEBPACK_IMPORTED_MODULE_2__src_map__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_keys__ = __webpack_require__(358);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return __WEBPACK_IMPORTED_MODULE_3__src_keys__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_values__ = __webpack_require__(361);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"values\", function() { return __WEBPACK_IMPORTED_MODULE_4__src_values__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_entries__ = __webpack_require__(357);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"entries\", function() { return __WEBPACK_IMPORTED_MODULE_5__src_entries__[\"a\"]; });\n\n\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3-collection/index.js\n// module id = 23\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3-collection/index.js?");/***/},/* 24 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return durationSecond; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return durationMinute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return durationHour; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return durationDay; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return durationWeek; });\nvar durationSecond = 1e3;\nvar durationMinute = 6e4;\nvar durationHour = 36e5;\nvar durationDay = 864e5;\nvar durationWeek = 6048e5;\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3-time/src/duration.js\n// module id = 24\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3-time/src/duration.js?");/***/},/* 25 *//***/function(module,exports,__webpack_require__){eval("var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar freeGlobal = __webpack_require__(261);\n\n/** Detect free variable `self`. */\nvar freeSelf = (typeof self === 'undefined' ? 'undefined' : _typeof(self)) == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/lodash/_root.js\n// module id = 25\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/lodash/_root.js?");/***/},/* 26 *//***/function(module,exports){eval("/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/lodash/isArray.js\n// module id = 26\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/lodash/isArray.js?");/***/},/* 27 *//***/function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _assign = __webpack_require__(5);\n\nvar PooledClass = __webpack_require__(37);\n\nvar emptyFunction = __webpack_require__(17);\nvar warning = __webpack_require__(2);\n\nvar didWarnForAddedNewProperty = false;\nvar isProxySupported = typeof Proxy === 'function';\n\nvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n type: null,\n target: null,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function timeStamp(event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n if (process.env.NODE_ENV !== 'production') {\n // these have a getter/setter for warnings\n delete this.nativeEvent;\n delete this.preventDefault;\n delete this.stopPropagation;\n }\n\n this.dispatchConfig = dispatchConfig;\n this._targetInst = targetInst;\n this.nativeEvent = nativeEvent;\n\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n if (process.env.NODE_ENV !== 'production') {\n delete this[propName]; // this has a getter/setter for warnings\n }\n var normalize = Interface[propName];\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n if (propName === 'target') {\n this.target = nativeEventTarget;\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n preventDefault: function preventDefault() {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n // eslint-disable-next-line valid-typeof\n } else if (typeof event.returnValue !== 'unknown') {\n event.returnValue = false;\n }\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n\n stopPropagation: function stopPropagation() {\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.stopPropagation) {\n event.stopPropagation();\n // eslint-disable-next-line valid-typeof\n } else if (typeof event.cancelBubble !== 'unknown') {\n // The ChangeEventPlugin registers a \"propertychange\" event for\n // IE. This event does not support bubbling or cancelling, and\n // any references to cancelBubble throw \"Member not found\". A\n // typeof check of \"unknown\" circumvents this issue (and is also\n // IE specific).\n event.cancelBubble = true;\n }\n\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function persist() {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function destructor() {\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n } else {\n this[propName] = null;\n }\n }\n for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n this[shouldBeReleasedProperties[i]] = null;\n }\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));\n Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));\n }\n }\n});\n\nSyntheticEvent.Interface = EventInterface;\n\nif (process.env.NODE_ENV !== 'production') {\n if (isProxySupported) {\n /*eslint-disable no-func-assign */\n SyntheticEvent = new Proxy(SyntheticEvent, {\n construct: function construct(target, args) {\n return this.apply(target, Object.create(target.prototype), args);\n },\n apply: function apply(constructor, that, args) {\n return new Proxy(constructor.apply(that, args), {\n set: function set(target, prop, value) {\n if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), \"This synthetic event is reused for performance reasons. If you're \" + \"seeing this, you're adding a new property in the synthetic event object. \" + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;\n didWarnForAddedNewProperty = true;\n }\n target[prop] = value;\n return true;\n }\n });\n }\n });\n /*eslint-enable no-func-assign */\n }\n}\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function (Class, Interface) {\n var Super = this;\n\n var E = function E() {};\n E.prototype = Super.prototype;\n var prototype = new E();\n\n _assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n\n Class.Interface = _assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n\n PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);\n};\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n\n/**\n * Helper to nullify syntheticEvent instance properties when destructing\n *\n * @param {object} SyntheticEvent\n * @param {String} propName\n * @return {object} defineProperty object\n */\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n var isFunction = typeof getVal === 'function';\n return {\n configurable: true,\n set: set,\n get: get\n };\n\n function set(val) {\n var action = isFunction ? 'setting the method' : 'setting the property';\n warn(action, 'This is effectively a no-op');\n return val;\n }\n\n function get() {\n var action = isFunction ? 'accessing the method' : 'accessing the property';\n var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n warn(action, result);\n return getVal;\n }\n\n function warn(action, result) {\n var warningCondition = false;\n process.env.NODE_ENV !== 'production' ? warning(warningCondition, \"This synthetic event is reused for performance reasons. If you're seeing this, \" + \"you're %s `%s` on a released/nullified synthetic event. %s. \" + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;\n }\n}\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/react-dom/lib/SyntheticEvent.js\n// module id = 27\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/react-dom/lib/SyntheticEvent.js?");/***/},/* 28 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony export (immutable) */ __webpack_exports__[\"b\"] = Transition;\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = transition;\n/* harmony export (immutable) */ __webpack_exports__[\"c\"] = newId;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_d3_selection__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__attr__ = __webpack_require__(505);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__attrTween__ = __webpack_require__(506);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__delay__ = __webpack_require__(507);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__duration__ = __webpack_require__(508);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__ease__ = __webpack_require__(509);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__filter__ = __webpack_require__(510);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__merge__ = __webpack_require__(511);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__on__ = __webpack_require__(512);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__remove__ = __webpack_require__(513);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__select__ = __webpack_require__(514);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__selectAll__ = __webpack_require__(515);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__selection__ = __webpack_require__(516);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__style__ = __webpack_require__(517);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__styleTween__ = __webpack_require__(518);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__text__ = __webpack_require__(519);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__transition__ = __webpack_require__(520);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__tween__ = __webpack_require__(81);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar id = 0;\n\nfunction Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nfunction transition(name) {\n return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0_d3_selection__[\"selection\"])().transition(name);\n}\n\nfunction newId() {\n return ++id;\n}\n\nvar selection_prototype = __WEBPACK_IMPORTED_MODULE_0_d3_selection__[\"selection\"].prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: __WEBPACK_IMPORTED_MODULE_10__select__[\"a\" /* default */],\n selectAll: __WEBPACK_IMPORTED_MODULE_11__selectAll__[\"a\" /* default */],\n filter: __WEBPACK_IMPORTED_MODULE_6__filter__[\"a\" /* default */],\n merge: __WEBPACK_IMPORTED_MODULE_7__merge__[\"a\" /* default */],\n selection: __WEBPACK_IMPORTED_MODULE_12__selection__[\"a\" /* default */],\n transition: __WEBPACK_IMPORTED_MODULE_16__transition__[\"a\" /* default */],\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: __WEBPACK_IMPORTED_MODULE_8__on__[\"a\" /* default */],\n attr: __WEBPACK_IMPORTED_MODULE_1__attr__[\"a\" /* default */],\n attrTween: __WEBPACK_IMPORTED_MODULE_2__attrTween__[\"a\" /* default */],\n style: __WEBPACK_IMPORTED_MODULE_13__style__[\"a\" /* default */],\n styleTween: __WEBPACK_IMPORTED_MODULE_14__styleTween__[\"a\" /* default */],\n text: __WEBPACK_IMPORTED_MODULE_15__text__[\"a\" /* default */],\n remove: __WEBPACK_IMPORTED_MODULE_9__remove__[\"a\" /* default */],\n tween: __WEBPACK_IMPORTED_MODULE_17__tween__[\"a\" /* default */],\n delay: __WEBPACK_IMPORTED_MODULE_3__delay__[\"a\" /* default */],\n duration: __WEBPACK_IMPORTED_MODULE_4__duration__[\"a\" /* default */],\n ease: __WEBPACK_IMPORTED_MODULE_5__ease__[\"a\" /* default */]\n};\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3-transition/src/transition/index.js\n// module id = 28\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3-transition/src/transition/index.js?");/***/},/* 29 *//***/function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*\n d3plus-text v0.9.18\n A smart SVG text box with line wrapping and automatic font size scaling.\n Copyright (c) 2017 D3plus - https://d3plus.org\n @license MIT\n*/\n(function (global, factory) {\n ( false ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, __webpack_require__(3), __webpack_require__(14), __webpack_require__(6), __webpack_require__(10)) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(3), __webpack_require__(14), __webpack_require__(6), __webpack_require__(10)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : factory(global.d3plus = global.d3plus || {}, global.d3Selection, global.d3Transition, global.d3Array, global.d3plusCommon);\n})(this, function (exports, d3Selection, d3Transition, d3Array, d3plusCommon) {\n 'use strict';\n\n /**\n @function textWidth\n @desc Given a text string, returns the predicted pixel width of the string when placed into DOM.\n @param {String|Array} text Can be either a single string or an array of strings to analyze.\n @param {Object} [style] An object of CSS font styles to apply. Accepts any of the valid [CSS font property](http://www.w3schools.com/cssref/pr_font_font.asp) values.\n */\n\n var measure = function measure(text, style) {\n\n style = Object.assign({\n \"font-size\": 10,\n \"font-family\": \"sans-serif\",\n \"font-style\": \"normal\",\n \"font-weight\": 400,\n \"font-variant\": \"normal\"\n }, style);\n\n var context = document.createElement(\"canvas\").getContext(\"2d\");\n\n var font = [];\n font.push(style[\"font-style\"]);\n font.push(style[\"font-variant\"]);\n font.push(style[\"font-weight\"]);\n font.push(typeof style[\"font-size\"] === \"string\" ? style[\"font-size\"] : style[\"font-size\"] + \"px\");\n // let s = `${style[\"font-size\"]}px`;\n // if (\"line-height\" in style) s += `/${style[\"line-height\"]}px`;\n // font.push(s);\n font.push(style[\"font-family\"]);\n\n context.font = font.join(\" \");\n\n if (text instanceof Array) {\n return text.map(function (t) {\n return context.measureText(t).width;\n });\n }\n return context.measureText(text).width;\n };\n\n var alpha = \"abcdefghiABCDEFGHI_!@#$%^&*()_+1234567890\";\n var checked = {};\n var height = 32;\n\n var dejavu;\n var macos;\n var monospace;\n var proportional;\n\n /**\n @function fontExists\n @desc Given either a single font-family or a list of fonts, returns the name of the first font that can be rendered, or `false` if none are installed on the user's machine.\n @param {String|Array} font Can be either a valid CSS font-family string (single or comma-separated names) or an Array of string names.\n @return {String|Boolean} Either the name of the first font that can be rendered, or `false` if none are installed on the user's machine.\n */\n var fontExists = function fontExists(font) {\n\n if (!dejavu) {\n dejavu = measure(alpha, { \"font-family\": \"DejaVuSans\", \"font-size\": height });\n macos = measure(alpha, { \"font-family\": \"-apple-system\", \"font-size\": height });\n monospace = measure(alpha, { \"font-family\": \"monospace\", \"font-size\": height });\n proportional = measure(alpha, { \"font-family\": \"sans-serif\", \"font-size\": height });\n }\n\n if (!(font instanceof Array)) {\n font = font.split(\",\");\n }\n font = font.map(function (f) {\n return f.trim();\n });\n\n for (var i = 0; i < font.length; i++) {\n var fam = font[i];\n if (checked[fam] || [\"-apple-system\", \"monospace\", \"sans-serif\", \"DejaVuSans\"].includes(fam)) {\n return fam;\n } else if (checked[fam] === false) {\n continue;\n }\n var width = measure(alpha, { \"font-family\": fam, \"font-size\": height });\n checked[fam] = width !== monospace;\n if (checked[fam]) {\n checked[fam] = width !== proportional;\n }\n if (macos && checked[fam]) {\n checked[fam] = width !== macos;\n }\n if (dejavu && checked[fam]) {\n checked[fam] = width !== dejavu;\n }\n if (checked[fam]) {\n return fam;\n }\n }\n\n return false;\n };\n\n /**\n @function stringify\n @desc Coerces value into a String.\n @param {String} value\n */\n var stringify = function stringify(value) {\n if (value === void 0) {\n value = \"undefined\";\n } else if (!(typeof value === \"string\" || value instanceof String)) {\n value = JSON.stringify(value);\n }\n return value;\n };\n\n // great unicode list: http://asecuritysite.com/coding/asc2\n\n var diacritics = [[/[\\300-\\305]/g, \"A\"], [/[\\340-\\345]/g, \"a\"], [/[\\306]/g, \"AE\"], [/[\\346]/g, \"ae\"], [/[\\337]/g, \"B\"], [/[\\307]/g, \"C\"], [/[\\347]/g, \"c\"], [/[\\320\\336\\376]/g, \"D\"], [/[\\360]/g, \"d\"], [/[\\310-\\313]/g, \"E\"], [/[\\350-\\353]/g, \"e\"], [/[\\314-\\317]/g, \"I\"], [/[\\354-\\357]/g, \"i\"], [/[\\321]/g, \"N\"], [/[\\361]/g, \"n\"], [/[\\322-\\326\\330]/g, \"O\"], [/[\\362-\\366\\370]/g, \"o\"], [/[\\331-\\334]/g, \"U\"], [/[\\371-\\374]/g, \"u\"], [/[\\327]/g, \"x\"], [/[\\335]/g, \"Y\"], [/[\\375\\377]/g, \"y\"]];\n\n /**\n @function strip\n @desc Removes all non ASCII characters from a string.\n @param {String} value\n */\n var strip = function strip(value) {\n\n return (\"\" + value).replace(/[^A-Za-z0-9\\-_]/g, function (char) {\n\n if (char === \" \") {\n return \"-\";\n }\n\n var ret = false;\n for (var d = 0; d < diacritics.length; d++) {\n if (new RegExp(diacritics[d][0]).test(char)) {\n ret = diacritics[d][1];\n break;\n }\n }\n\n return ret || \"\";\n });\n };\n\n // scraped from http://www.fileformat.info/info/unicode/category/Mc/list.htm\n // and http://www.fileformat.info/info/unicode/category/Mn/list.htm\n // JSON.stringify([].slice.call(document.getElementsByClassName(\"table-list\")[0].getElementsByTagName(\"tr\")).filter(function(d){ return d.getElementsByTagName(\"a\").length && d.getElementsByTagName(\"a\")[0].innerHTML.length === 6; }).map(function(d){ return d.getElementsByTagName(\"a\")[0].innerHTML.replace(\"U\", \"u\").replace(\"+\", \"\"); }).sort());\n var a = [\"u0903\", \"u093B\", \"u093E\", \"u093F\", \"u0940\", \"u0949\", \"u094A\", \"u094B\", \"u094C\", \"u094E\", \"u094F\", \"u0982\", \"u0983\", \"u09BE\", \"u09BF\", \"u09C0\", \"u09C7\", \"u09C8\", \"u09CB\", \"u09CC\", \"u09D7\", \"u0A03\", \"u0A3E\", \"u0A3F\", \"u0A40\", \"u0A83\", \"u0ABE\", \"u0ABF\", \"u0AC0\", \"u0AC9\", \"u0ACB\", \"u0ACC\", \"u0B02\", \"u0B03\", \"u0B3E\", \"u0B40\", \"u0B47\", \"u0B48\", \"u0B4B\", \"u0B4C\", \"u0B57\", \"u0BBE\", \"u0BBF\", \"u0BC1\", \"u0BC2\", \"u0BC6\", \"u0BC7\", \"u0BC8\", \"u0BCA\", \"u0BCB\", \"u0BCC\", \"u0BD7\", \"u0C01\", \"u0C02\", \"u0C03\", \"u0C41\", \"u0C42\", \"u0C43\", \"u0C44\", \"u0C82\", \"u0C83\", \"u0CBE\", \"u0CC0\", \"u0CC1\", \"u0CC2\", \"u0CC3\", \"u0CC4\", \"u0CC7\", \"u0CC8\", \"u0CCA\", \"u0CCB\", \"u0CD5\", \"u0CD6\", \"u0D02\", \"u0D03\", \"u0D3E\", \"u0D3F\", \"u0D40\", \"u0D46\", \"u0D47\", \"u0D48\", \"u0D4A\", \"u0D4B\", \"u0D4C\", \"u0D57\", \"u0D82\", \"u0D83\", \"u0DCF\", \"u0DD0\", \"u0DD1\", \"u0DD8\", \"u0DD9\", \"u0DDA\", \"u0DDB\", \"u0DDC\", \"u0DDD\", \"u0DDE\", \"u0DDF\", \"u0DF2\", \"u0DF3\", \"u0F3E\", \"u0F3F\", \"u0F7F\", \"u102B\", \"u102C\", \"u1031\", \"u1038\", \"u103B\", \"u103C\", \"u1056\", \"u1057\", \"u1062\", \"u1063\", \"u1064\", \"u1067\", \"u1068\", \"u1069\", \"u106A\", \"u106B\", \"u106C\", \"u106D\", \"u1083\", \"u1084\", \"u1087\", \"u1088\", \"u1089\", \"u108A\", \"u108B\", \"u108C\", \"u108F\", \"u109A\", \"u109B\", \"u109C\", \"u17B6\", \"u17BE\", \"u17BF\", \"u17C0\", \"u17C1\", \"u17C2\", \"u17C3\", \"u17C4\", \"u17C5\", \"u17C7\", \"u17C8\", \"u1923\", \"u1924\", \"u1925\", \"u1926\", \"u1929\", \"u192A\", \"u192B\", \"u1930\", \"u1931\", \"u1933\", \"u1934\", \"u1935\", \"u1936\", \"u1937\", \"u1938\", \"u1A19\", \"u1A1A\", \"u1A55\", \"u1A57\", \"u1A61\", \"u1A63\", \"u1A64\", \"u1A6D\", \"u1A6E\", \"u1A6F\", \"u1A70\", \"u1A71\", \"u1A72\", \"u1B04\", \"u1B35\", \"u1B3B\", \"u1B3D\", \"u1B3E\", \"u1B3F\", \"u1B40\", \"u1B41\", \"u1B43\", \"u1B44\", \"u1B82\", \"u1BA1\", \"u1BA6\", \"u1BA7\", \"u1BAA\", \"u1BE7\", \"u1BEA\", \"u1BEB\", \"u1BEC\", \"u1BEE\", \"u1BF2\", \"u1BF3\", \"u1C24\", \"u1C25\", \"u1C26\", \"u1C27\", \"u1C28\", \"u1C29\", \"u1C2A\", \"u1C2B\", \"u1C34\", \"u1C35\", \"u1CE1\", \"u1CF2\", \"u1CF3\", \"u302E\", \"u302F\", \"uA823\", \"uA824\", \"uA827\", \"uA880\", \"uA881\", \"uA8B4\", \"uA8B5\", \"uA8B6\", \"uA8B7\", \"uA8B8\", \"uA8B9\", \"uA8BA\", \"uA8BB\", \"uA8BC\", \"uA8BD\", \"uA8BE\", \"uA8BF\", \"uA8C0\", \"uA8C1\", \"uA8C2\", \"uA8C3\", \"uA952\", \"uA953\", \"uA983\", \"uA9B4\", \"uA9B5\", \"uA9BA\", \"uA9BB\", \"uA9BD\", \"uA9BE\", \"uA9BF\", \"uA9C0\", \"uAA2F\", \"uAA30\", \"uAA33\", \"uAA34\", \"uAA4D\", \"uAA7B\", \"uAA7D\", \"uAAEB\", \"uAAEE\", \"uAAEF\", \"uAAF5\", \"uABE3\", \"uABE4\", \"uABE6\", \"uABE7\", \"uABE9\", \"uABEA\", \"uABEC\"];\n var b = [\"u0300\", \"u0301\", \"u0302\", \"u0303\", \"u0304\", \"u0305\", \"u0306\", \"u0307\", \"u0308\", \"u0309\", \"u030A\", \"u030B\", \"u030C\", \"u030D\", \"u030E\", \"u030F\", \"u0310\", \"u0311\", \"u0312\", \"u0313\", \"u0314\", \"u0315\", \"u0316\", \"u0317\", \"u0318\", \"u0319\", \"u031A\", \"u031B\", \"u031C\", \"u031D\", \"u031E\", \"u031F\", \"u0320\", \"u0321\", \"u0322\", \"u0323\", \"u0324\", \"u0325\", \"u0326\", \"u0327\", \"u0328\", \"u0329\", \"u032A\", \"u032B\", \"u032C\", \"u032D\", \"u032E\", \"u032F\", \"u0330\", \"u0331\", \"u0332\", \"u0333\", \"u0334\", \"u0335\", \"u0336\", \"u0337\", \"u0338\", \"u0339\", \"u033A\", \"u033B\", \"u033C\", \"u033D\", \"u033E\", \"u033F\", \"u0340\", \"u0341\", \"u0342\", \"u0343\", \"u0344\", \"u0345\", \"u0346\", \"u0347\", \"u0348\", \"u0349\", \"u034A\", \"u034B\", \"u034C\", \"u034D\", \"u034E\", \"u034F\", \"u0350\", \"u0351\", \"u0352\", \"u0353\", \"u0354\", \"u0355\", \"u0356\", \"u0357\", \"u0358\", \"u0359\", \"u035A\", \"u035B\", \"u035C\", \"u035D\", \"u035E\", \"u035F\", \"u0360\", \"u0361\", \"u0362\", \"u0363\", \"u0364\", \"u0365\", \"u0366\", \"u0367\", \"u0368\", \"u0369\", \"u036A\", \"u036B\", \"u036C\", \"u036D\", \"u036E\", \"u036F\", \"u0483\", \"u0484\", \"u0485\", \"u0486\", \"u0487\", \"u0591\", \"u0592\", \"u0593\", \"u0594\", \"u0595\", \"u0596\", \"u0597\", \"u0598\", \"u0599\", \"u059A\", \"u059B\", \"u059C\", \"u059D\", \"u059E\", \"u059F\", \"u05A0\", \"u05A1\", \"u05A2\", \"u05A3\", \"u05A4\", \"u05A5\", \"u05A6\", \"u05A7\", \"u05A8\", \"u05A9\", \"u05AA\", \"u05AB\", \"u05AC\", \"u05AD\", \"u05AE\", \"u05AF\", \"u05B0\", \"u05B1\", \"u05B2\", \"u05B3\", \"u05B4\", \"u05B5\", \"u05B6\", \"u05B7\", \"u05B8\", \"u05B9\", \"u05BA\", \"u05BB\", \"u05BC\", \"u05BD\", \"u05BF\", \"u05C1\", \"u05C2\", \"u05C4\", \"u05C5\", \"u05C7\", \"u0610\", \"u0611\", \"u0612\", \"u0613\", \"u0614\", \"u0615\", \"u0616\", \"u0617\", \"u0618\", \"u0619\", \"u061A\", \"u064B\", \"u064C\", \"u064D\", \"u064E\", \"u064F\", \"u0650\", \"u0651\", \"u0652\", \"u0653\", \"u0654\", \"u0655\", \"u0656\", \"u0657\", \"u0658\", \"u0659\", \"u065A\", \"u065B\", \"u065C\", \"u065D\", \"u065E\", \"u065F\", \"u0670\", \"u06D6\", \"u06D7\", \"u06D8\", \"u06D9\", \"u06DA\", \"u06DB\", \"u06DC\", \"u06DF\", \"u06E0\", \"u06E1\", \"u06E2\", \"u06E3\", \"u06E4\", \"u06E7\", \"u06E8\", \"u06EA\", \"u06EB\", \"u06EC\", \"u06ED\", \"u0711\", \"u0730\", \"u0731\", \"u0732\", \"u0733\", \"u0734\", \"u0735\", \"u0736\", \"u0737\", \"u0738\", \"u0739\", \"u073A\", \"u073B\", \"u073C\", \"u073D\", \"u073E\", \"u073F\", \"u0740\", \"u0741\", \"u0742\", \"u0743\", \"u0744\", \"u0745\", \"u0746\", \"u0747\", \"u0748\", \"u0749\", \"u074A\", \"u07A6\", \"u07A7\", \"u07A8\", \"u07A9\", \"u07AA\", \"u07AB\", \"u07AC\", \"u07AD\", \"u07AE\", \"u07AF\", \"u07B0\", \"u07EB\", \"u07EC\", \"u07ED\", \"u07EE\", \"u07EF\", \"u07F0\", \"u07F1\", \"u07F2\", \"u07F3\", \"u0816\", \"u0817\", \"u0818\", \"u0819\", \"u081B\", \"u081C\", \"u081D\", \"u081E\", \"u081F\", \"u0820\", \"u0821\", \"u0822\", \"u0823\", \"u0825\", \"u0826\", \"u0827\", \"u0829\", \"u082A\", \"u082B\", \"u082C\", \"u082D\", \"u0859\", \"u085A\", \"u085B\", \"u08E3\", \"u08E4\", \"u08E5\", \"u08E6\", \"u08E7\", \"u08E8\", \"u08E9\", \"u08EA\", \"u08EB\", \"u08EC\", \"u08ED\", \"u08EE\", \"u08EF\", \"u08F0\", \"u08F1\", \"u08F2\", \"u08F3\", \"u08F4\", \"u08F5\", \"u08F6\", \"u08F7\", \"u08F8\", \"u08F9\", \"u08FA\", \"u08FB\", \"u08FC\", \"u08FD\", \"u08FE\", \"u08FF\", \"u0900\", \"u0901\", \"u0902\", \"u093A\", \"u093C\", \"u0941\", \"u0942\", \"u0943\", \"u0944\", \"u0945\", \"u0946\", \"u0947\", \"u0948\", \"u094D\", \"u0951\", \"u0952\", \"u0953\", \"u0954\", \"u0955\", \"u0956\", \"u0957\", \"u0962\", \"u0963\", \"u0981\", \"u09BC\", \"u09C1\", \"u09C2\", \"u09C3\", \"u09C4\", \"u09CD\", \"u09E2\", \"u09E3\", \"u0A01\", \"u0A02\", \"u0A3C\", \"u0A41\", \"u0A42\", \"u0A47\", \"u0A48\", \"u0A4B\", \"u0A4C\", \"u0A4D\", \"u0A51\", \"u0A70\", \"u0A71\", \"u0A75\", \"u0A81\", \"u0A82\", \"u0ABC\", \"u0AC1\", \"u0AC2\", \"u0AC3\", \"u0AC4\", \"u0AC5\", \"u0AC7\", \"u0AC8\", \"u0ACD\", \"u0AE2\", \"u0AE3\", \"u0B01\", \"u0B3C\", \"u0B3F\", \"u0B41\", \"u0B42\", \"u0B43\", \"u0B44\", \"u0B4D\", \"u0B56\", \"u0B62\", \"u0B63\", \"u0B82\", \"u0BC0\", \"u0BCD\", \"u0C00\", \"u0C3E\", \"u0C3F\", \"u0C40\", \"u0C46\", \"u0C47\", \"u0C48\", \"u0C4A\", \"u0C4B\", \"u0C4C\", \"u0C4D\", \"u0C55\", \"u0C56\", \"u0C62\", \"u0C63\", \"u0C81\", \"u0CBC\", \"u0CBF\", \"u0CC6\", \"u0CCC\", \"u0CCD\", \"u0CE2\", \"u0CE3\", \"u0D01\", \"u0D41\", \"u0D42\", \"u0D43\", \"u0D44\", \"u0D4D\", \"u0D62\", \"u0D63\", \"u0DCA\", \"u0DD2\", \"u0DD3\", \"u0DD4\", \"u0DD6\", \"u0E31\", \"u0E34\", \"u0E35\", \"u0E36\", \"u0E37\", \"u0E38\", \"u0E39\", \"u0E3A\", \"u0E47\", \"u0E48\", \"u0E49\", \"u0E4A\", \"u0E4B\", \"u0E4C\", \"u0E4D\", \"u0E4E\", \"u0EB1\", \"u0EB4\", \"u0EB5\", \"u0EB6\", \"u0EB7\", \"u0EB8\", \"u0EB9\", \"u0EBB\", \"u0EBC\", \"u0EC8\", \"u0EC9\", \"u0ECA\", \"u0ECB\", \"u0ECC\", \"u0ECD\", \"u0F18\", \"u0F19\", \"u0F35\", \"u0F37\", \"u0F39\", \"u0F71\", \"u0F72\", \"u0F73\", \"u0F74\", \"u0F75\", \"u0F76\", \"u0F77\", \"u0F78\", \"u0F79\", \"u0F7A\", \"u0F7B\", \"u0F7C\", \"u0F7D\", \"u0F7E\", \"u0F80\", \"u0F81\", \"u0F82\", \"u0F83\", \"u0F84\", \"u0F86\", \"u0F87\", \"u0F8D\", \"u0F8E\", \"u0F8F\", \"u0F90\", \"u0F91\", \"u0F92\", \"u0F93\", \"u0F94\", \"u0F95\", \"u0F96\", \"u0F97\", \"u0F99\", \"u0F9A\", \"u0F9B\", \"u0F9C\", \"u0F9D\", \"u0F9E\", \"u0F9F\", \"u0FA0\", \"u0FA1\", \"u0FA2\", \"u0FA3\", \"u0FA4\", \"u0FA5\", \"u0FA6\", \"u0FA7\", \"u0FA8\", \"u0FA9\", \"u0FAA\", \"u0FAB\", \"u0FAC\", \"u0FAD\", \"u0FAE\", \"u0FAF\", \"u0FB0\", \"u0FB1\", \"u0FB2\", \"u0FB3\", \"u0FB4\", \"u0FB5\", \"u0FB6\", \"u0FB7\", \"u0FB8\", \"u0FB9\", \"u0FBA\", \"u0FBB\", \"u0FBC\", \"u0FC6\", \"u102D\", \"u102E\", \"u102F\", \"u1030\", \"u1032\", \"u1033\", \"u1034\", \"u1035\", \"u1036\", \"u1037\", \"u1039\", \"u103A\", \"u103D\", \"u103E\", \"u1058\", \"u1059\", \"u105E\", \"u105F\", \"u1060\", \"u1071\", \"u1072\", \"u1073\", \"u1074\", \"u1082\", \"u1085\", \"u1086\", \"u108D\", \"u109D\", \"u135D\", \"u135E\", \"u135F\", \"u1712\", \"u1713\", \"u1714\", \"u1732\", \"u1733\", \"u1734\", \"u1752\", \"u1753\", \"u1772\", \"u1773\", \"u17B4\", \"u17B5\", \"u17B7\", \"u17B8\", \"u17B9\", \"u17BA\", \"u17BB\", \"u17BC\", \"u17BD\", \"u17C6\", \"u17C9\", \"u17CA\", \"u17CB\", \"u17CC\", \"u17CD\", \"u17CE\", \"u17CF\", \"u17D0\", \"u17D1\", \"u17D2\", \"u17D3\", \"u17DD\", \"u180B\", \"u180C\", \"u180D\", \"u18A9\", \"u1920\", \"u1921\", \"u1922\", \"u1927\", \"u1928\", \"u1932\", \"u1939\", \"u193A\", \"u193B\", \"u1A17\", \"u1A18\", \"u1A1B\", \"u1A56\", \"u1A58\", \"u1A59\", \"u1A5A\", \"u1A5B\", \"u1A5C\", \"u1A5D\", \"u1A5E\", \"u1A60\", \"u1A62\", \"u1A65\", \"u1A66\", \"u1A67\", \"u1A68\", \"u1A69\", \"u1A6A\", \"u1A6B\", \"u1A6C\", \"u1A73\", \"u1A74\", \"u1A75\", \"u1A76\", \"u1A77\", \"u1A78\", \"u1A79\", \"u1A7A\", \"u1A7B\", \"u1A7C\", \"u1A7F\", \"u1AB0\", \"u1AB1\", \"u1AB2\", \"u1AB3\", \"u1AB4\", \"u1AB5\", \"u1AB6\", \"u1AB7\", \"u1AB8\", \"u1AB9\", \"u1ABA\", \"u1ABB\", \"u1ABC\", \"u1ABD\", \"u1B00\", \"u1B01\", \"u1B02\", \"u1B03\", \"u1B34\", \"u1B36\", \"u1B37\", \"u1B38\", \"u1B39\", \"u1B3A\", \"u1B3C\", \"u1B42\", \"u1B6B\", \"u1B6C\", \"u1B6D\", \"u1B6E\", \"u1B6F\", \"u1B70\", \"u1B71\", \"u1B72\", \"u1B73\", \"u1B80\", \"u1B81\", \"u1BA2\", \"u1BA3\", \"u1BA4\", \"u1BA5\", \"u1BA8\", \"u1BA9\", \"u1BAB\", \"u1BAC\", \"u1BAD\", \"u1BE6\", \"u1BE8\", \"u1BE9\", \"u1BED\", \"u1BEF\", \"u1BF0\", \"u1BF1\", \"u1C2C\", \"u1C2D\", \"u1C2E\", \"u1C2F\", \"u1C30\", \"u1C31\", \"u1C32\", \"u1C33\", \"u1C36\", \"u1C37\", \"u1CD0\", \"u1CD1\", \"u1CD2\", \"u1CD4\", \"u1CD5\", \"u1CD6\", \"u1CD7\", \"u1CD8\", \"u1CD9\", \"u1CDA\", \"u1CDB\", \"u1CDC\", \"u1CDD\", \"u1CDE\", \"u1CDF\", \"u1CE0\", \"u1CE2\", \"u1CE3\", \"u1CE4\", \"u1CE5\", \"u1CE6\", \"u1CE7\", \"u1CE8\", \"u1CED\", \"u1CF4\", \"u1CF8\", \"u1CF9\", \"u1DC0\", \"u1DC1\", \"u1DC2\", \"u1DC3\", \"u1DC4\", \"u1DC5\", \"u1DC6\", \"u1DC7\", \"u1DC8\", \"u1DC9\", \"u1DCA\", \"u1DCB\", \"u1DCC\", \"u1DCD\", \"u1DCE\", \"u1DCF\", \"u1DD0\", \"u1DD1\", \"u1DD2\", \"u1DD3\", \"u1DD4\", \"u1DD5\", \"u1DD6\", \"u1DD7\", \"u1DD8\", \"u1DD9\", \"u1DDA\", \"u1DDB\", \"u1DDC\", \"u1DDD\", \"u1DDE\", \"u1DDF\", \"u1DE0\", \"u1DE1\", \"u1DE2\", \"u1DE3\", \"u1DE4\", \"u1DE5\", \"u1DE6\", \"u1DE7\", \"u1DE8\", \"u1DE9\", \"u1DEA\", \"u1DEB\", \"u1DEC\", \"u1DED\", \"u1DEE\", \"u1DEF\", \"u1DF0\", \"u1DF1\", \"u1DF2\", \"u1DF3\", \"u1DF4\", \"u1DF5\", \"u1DFC\", \"u1DFD\", \"u1DFE\", \"u1DFF\", \"u20D0\", \"u20D1\", \"u20D2\", \"u20D3\", \"u20D4\", \"u20D5\", \"u20D6\", \"u20D7\", \"u20D8\", \"u20D9\", \"u20DA\", \"u20DB\", \"u20DC\", \"u20E1\", \"u20E5\", \"u20E6\", \"u20E7\", \"u20E8\", \"u20E9\", \"u20EA\", \"u20EB\", \"u20EC\", \"u20ED\", \"u20EE\", \"u20EF\", \"u20F0\", \"u2CEF\", \"u2CF0\", \"u2CF1\", \"u2D7F\", \"u2DE0\", \"u2DE1\", \"u2DE2\", \"u2DE3\", \"u2DE4\", \"u2DE5\", \"u2DE6\", \"u2DE7\", \"u2DE8\", \"u2DE9\", \"u2DEA\", \"u2DEB\", \"u2DEC\", \"u2DED\", \"u2DEE\", \"u2DEF\", \"u2DF0\", \"u2DF1\", \"u2DF2\", \"u2DF3\", \"u2DF4\", \"u2DF5\", \"u2DF6\", \"u2DF7\", \"u2DF8\", \"u2DF9\", \"u2DFA\", \"u2DFB\", \"u2DFC\", \"u2DFD\", \"u2DFE\", \"u2DFF\", \"u302A\", \"u302B\", \"u302C\", \"u302D\", \"u3099\", \"u309A\", \"uA66F\", \"uA674\", \"uA675\", \"uA676\", \"uA677\", \"uA678\", \"uA679\", \"uA67A\", \"uA67B\", \"uA67C\", \"uA67D\", \"uA69E\", \"uA69F\", \"uA6F0\", \"uA6F1\", \"uA802\", \"uA806\", \"uA80B\", \"uA825\", \"uA826\", \"uA8C4\", \"uA8E0\", \"uA8E1\", \"uA8E2\", \"uA8E3\", \"uA8E4\", \"uA8E5\", \"uA8E6\", \"uA8E7\", \"uA8E8\", \"uA8E9\", \"uA8EA\", \"uA8EB\", \"uA8EC\", \"uA8ED\", \"uA8EE\", \"uA8EF\", \"uA8F0\", \"uA8F1\", \"uA926\", \"uA927\", \"uA928\", \"uA929\", \"uA92A\", \"uA92B\", \"uA92C\", \"uA92D\", \"uA947\", \"uA948\", \"uA949\", \"uA94A\", \"uA94B\", \"uA94C\", \"uA94D\", \"uA94E\", \"uA94F\", \"uA950\", \"uA951\", \"uA980\", \"uA981\", \"uA982\", \"uA9B3\", \"uA9B6\", \"uA9B7\", \"uA9B8\", \"uA9B9\", \"uA9BC\", \"uA9E5\", \"uAA29\", \"uAA2A\", \"uAA2B\", \"uAA2C\", \"uAA2D\", \"uAA2E\", \"uAA31\", \"uAA32\", \"uAA35\", \"uAA36\", \"uAA43\", \"uAA4C\", \"uAA7C\", \"uAAB0\", \"uAAB2\", \"uAAB3\", \"uAAB4\", \"uAAB7\", \"uAAB8\", \"uAABE\", \"uAABF\", \"uAAC1\", \"uAAEC\", \"uAAED\", \"uAAF6\", \"uABE5\", \"uABE8\", \"uABED\", \"uFB1E\", \"uFE00\", \"uFE01\", \"uFE02\", \"uFE03\", \"uFE04\", \"uFE05\", \"uFE06\", \"uFE07\", \"uFE08\", \"uFE09\", \"uFE0A\", \"uFE0B\", \"uFE0C\", \"uFE0D\", \"uFE0E\", \"uFE0F\", \"uFE20\", \"uFE21\", \"uFE22\", \"uFE23\", \"uFE24\", \"uFE25\", \"uFE26\", \"uFE27\", \"uFE28\", \"uFE29\", \"uFE2A\", \"uFE2B\", \"uFE2C\", \"uFE2D\", \"uFE2E\", \"uFE2F\"];\n var combiningMarks = a.concat(b);\n\n var splitChars = [\"-\", \"/\", \";\", \":\", \"&\", \"u0E2F\", // thai character pairannoi\n \"u0EAF\", // lao ellipsis\n \"u0EC6\", // lao ko la (word repetition)\n \"u0ECC\", // lao cancellation mark\n \"u104A\", // myanmar sign little section\n \"u104B\", // myanmar sign section\n \"u104C\", // myanmar symbol locative\n \"u104D\", // myanmar symbol completed\n \"u104E\", // myanmar symbol aforementioned\n \"u104F\", // myanmar symbol genitive\n \"u2013\", // en dash\n \"u2014\", // em dash\n \"u2027\", // simplified chinese hyphenation point\n \"u3000\", // simplified chinese ideographic space\n \"u3001\", // simplified chinese ideographic comma\n \"u3002\", // simplified chinese ideographic full stop\n \"uFF0C\", // full-width comma\n \"uFF5E\" // wave dash\n ];\n\n var prefixChars = [\"'\", \"<\", \"(\", \"{\", \"[\", \"u00AB\", // left-pointing double angle quotation mark\n \"u300A\", // left double angle bracket\n \"u3008\" // left angle bracket\n ];\n\n var suffixChars = [\"'\", \">\", \")\", \"}\", \"]\", \".\", \"!\", \"?\", \"u00BB\", // right-pointing double angle quotation mark\n \"u300B\", // right double angle bracket\n \"u3009\" // right angle bracket\n ].concat(splitChars);\n\n var burmeseRange = '\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055';\n var japaneseRange = '\\u3040-\\u309F\\u30A0-\\u30FF\\uFF00-\\uFF0B\\uFF0D-\\uFF5D\\uFF5F-\\uFF9F\\u3400-\\u4DBF';\n var chineseRange = '\\u3400-\\u9FBF';\n var laoRange = '\\u0E81-\\u0EAE\\u0EB0-\\u0EC4\\u0EC8-\\u0ECB\\u0ECD-\\u0EDD';\n\n var noSpaceRange = burmeseRange + chineseRange + laoRange;\n\n var splitWords = new RegExp(\"(\\\\\" + splitChars.join(\"|\\\\\") + \")*[^\\\\s|\\\\\" + splitChars.join(\"|\\\\\") + \"]*(\\\\\" + splitChars.join(\"|\\\\\") + \")*\", \"g\");\n var japaneseChars = new RegExp(\"[\" + japaneseRange + \"]\");\n var noSpaceLanguage = new RegExp(\"[\" + noSpaceRange + \"]\");\n var splitAllChars = new RegExp(\"(\\\\\" + prefixChars.join(\"|\\\\\") + \")*[\" + noSpaceRange + \"](\\\\\" + suffixChars.join(\"|\\\\\") + \"|\\\\\" + combiningMarks.join(\"|\\\\\") + \")*|[a-z0-9]+\", \"gi\");\n\n /**\n @function textSplit\n @desc Splits a given sentence into an array of words.\n @param {String} sentence\n */\n var textSplit = function textSplit(sentence) {\n if (!noSpaceLanguage.test(sentence)) {\n return stringify(sentence).match(splitWords).filter(function (w) {\n return w.length;\n });\n }\n return d3Array.merge(stringify(sentence).match(splitWords).map(function (d) {\n if (!japaneseChars.test(d) && noSpaceLanguage.test(d)) {\n return d.match(splitAllChars);\n }\n return [d];\n }));\n };\n\n /**\n @function textWrap\n @desc Based on the defined styles and dimensions, breaks a string into an array of strings for each line of text.\n */\n var wrap = function wrap() {\n\n var fontFamily = \"Verdana\",\n fontSize = 10,\n fontWeight = 400,\n height = 200,\n lineHeight,\n overflow = false,\n split = textSplit,\n width = 200;\n\n /**\n The inner return object and wraps the text and returns the line data array.\n @private\n */\n function textWrap(sentence) {\n\n sentence = stringify(sentence);\n\n if (lineHeight === void 0) {\n lineHeight = Math.ceil(fontSize * 1.1);\n }\n\n var words = split(sentence);\n\n var style = {\n \"font-family\": fontFamily,\n \"font-size\": fontSize,\n \"font-weight\": fontWeight,\n \"line-height\": lineHeight\n };\n\n var line = 1,\n textProg = \"\",\n truncated = false,\n widthProg = 0;\n\n var lineData = [],\n sizes = measure(words, style),\n space = measure(\" \", style);\n\n for (var i = 0; i < words.length; i++) {\n var word = words[i];\n var wordWidth = sizes[words.indexOf(word)];\n word += sentence.slice(textProg.length + word.length).match(\"^( |\\n)*\", \"g\")[0];\n if (textProg.slice(-1) === \"\\n\" || widthProg + wordWidth > width) {\n if (!i && !overflow) {\n truncated = true;\n break;\n }\n lineData[line - 1] = lineData[line - 1].trimRight();\n line++;\n if (lineHeight * line > height || wordWidth > width && !overflow) {\n truncated = true;\n break;\n }\n widthProg = 0;\n lineData.push(word);\n } else if (!i) {\n lineData[0] = word;\n } else {\n lineData[line - 1] += word;\n }\n textProg += word;\n widthProg += wordWidth;\n widthProg += word.match(/[\\s]*$/g)[0].length * space;\n }\n\n return {\n lines: lineData,\n sentence: sentence, truncated: truncated, words: words\n };\n }\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the font family accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current font family.\n @param {Function|String} [*value* = \"Verdana\"]\n */\n textWrap.fontFamily = function (_) {\n return arguments.length ? (fontFamily = _, textWrap) : fontFamily;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the font size accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current font size.\n @param {Function|Number} [*value* = 10]\n */\n textWrap.fontSize = function (_) {\n return arguments.length ? (fontSize = _, textWrap) : fontSize;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the font weight accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current font weight.\n @param {Function|Number|String} [*value* = 400]\n */\n textWrap.fontWeight = function (_) {\n return arguments.length ? (fontWeight = _, textWrap) : fontWeight;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets height limit to the specified value and returns this generator. If *value* is not specified, returns the current value.\n @param {Number} [*value* = 200]\n */\n textWrap.height = function (_) {\n return arguments.length ? (height = _, textWrap) : height;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the line height accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current line height accessor, which is 1.1 times the [font size](#textWrap.fontSize) by default.\n @param {Function|Number} [*value*]\n */\n textWrap.lineHeight = function (_) {\n return arguments.length ? (lineHeight = _, textWrap) : lineHeight;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the overflow to the specified boolean and returns this generator. If *value* is not specified, returns the current overflow value.\n @param {Boolean} [*value* = false]\n */\n textWrap.overflow = function (_) {\n return arguments.length ? (overflow = _, textWrap) : overflow;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the word split function to the specified function and returns this generator. If *value* is not specified, returns the current word split function.\n @param {Function} [*value*] A function that, when passed a string, is expected to return that string split into an array of words to textWrap. The default split function splits strings on the following characters: `-`, `/`, `;`, `:`, `&`\n */\n textWrap.split = function (_) {\n return arguments.length ? (split = _, textWrap) : split;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets width limit to the specified value and returns this generator. If *value* is not specified, returns the current value.\n @param {Number} [*value* = 200]\n */\n textWrap.width = function (_) {\n return arguments.length ? (width = _, textWrap) : width;\n };\n\n return textWrap;\n };\n\n /**\n @function TextBox\n @extends BaseClass\n @desc Creates a wrapped text box for each point in an array of data. See [this example](https://d3plus.org/examples/d3plus-text/getting-started/) for help getting started using the textBox function.\n */\n var TextBox = function (BaseClass$$1) {\n function TextBox() {\n\n BaseClass$$1.call(this);\n\n this._delay = 0;\n this._duration = 0;\n this._ellipsis = function (_) {\n return _.replace(/\\.|,$/g, \"\") + \"...\";\n };\n this._fontColor = d3plusCommon.constant(\"black\");\n this._fontFamily = d3plusCommon.constant(\"Verdana\");\n this._fontMax = d3plusCommon.constant(50);\n this._fontMin = d3plusCommon.constant(8);\n this._fontResize = d3plusCommon.constant(false);\n this._fontSize = d3plusCommon.constant(10);\n this._fontWeight = d3plusCommon.constant(400);\n this._height = d3plusCommon.accessor(\"height\", 200);\n this._id = function (d, i) {\n return d.id || \"\" + i;\n };\n this._on = {};\n this._overflow = d3plusCommon.constant(false);\n this._pointerEvents = d3plusCommon.constant(\"auto\");\n this._rotate = d3plusCommon.constant(0);\n this._split = textSplit;\n this._text = d3plusCommon.accessor(\"text\");\n this._textAnchor = d3plusCommon.constant(\"start\");\n this._verticalAlign = d3plusCommon.constant(\"top\");\n this._width = d3plusCommon.accessor(\"width\", 200);\n this._x = d3plusCommon.accessor(\"x\", 0);\n this._y = d3plusCommon.accessor(\"y\", 0);\n }\n\n if (BaseClass$$1) TextBox.__proto__ = BaseClass$$1;\n TextBox.prototype = Object.create(BaseClass$$1 && BaseClass$$1.prototype);\n TextBox.prototype.constructor = TextBox;\n\n /**\n @memberof TextBox\n @desc Renders the text boxes. If a *callback* is specified, it will be called once the shapes are done drawing.\n @param {Function} [*callback* = undefined]\n */\n TextBox.prototype.render = function render(callback) {\n var this$1 = this;\n\n if (this._select === void 0) {\n this.select(d3Selection.select(\"body\").append(\"svg\").style(\"width\", window.innerWidth + \"px\").style(\"height\", window.innerHeight + \"px\").node());\n }\n if (this._lineHeight === void 0) {\n this._lineHeight = function (d, i) {\n return this$1._fontSize(d, i) * 1.1;\n };\n }\n var that = this;\n\n var boxes = this._select.selectAll(\".d3plus-textBox\").data(this._data.reduce(function (arr, d, i) {\n\n var t = this$1._text(d, i);\n if (t === void 0) {\n return arr;\n }\n\n var resize = this$1._fontResize(d, i);\n\n var fS = resize ? this$1._fontMax(d, i) : this$1._fontSize(d, i),\n lH = resize ? fS * 1.1 : this$1._lineHeight(d, i),\n line = 1,\n lineData = [],\n sizes;\n\n var style = {\n \"font-family\": this$1._fontFamily(d, i),\n \"font-size\": fS,\n \"font-weight\": this$1._fontWeight(d, i),\n \"line-height\": lH\n };\n\n var h = this$1._height(d, i),\n w = this$1._width(d, i);\n\n var wrapper = wrap().fontFamily(style[\"font-family\"]).fontSize(fS).fontWeight(style[\"font-weight\"]).lineHeight(lH).height(h).overflow(this$1._overflow(d, i)).width(w);\n\n var fMax = this$1._fontMax(d, i),\n fMin = this$1._fontMin(d, i),\n vA = this$1._verticalAlign(d, i),\n words = this$1._split(t, i);\n\n /**\n Figures out the lineData to be used for wrapping.\n @private\n */\n function checkSize() {\n\n if (fS < fMin) {\n lineData = [];\n return;\n } else if (fS > fMax) {\n fS = fMax;\n }\n\n if (resize) {\n lH = fS * 1.1;\n wrapper.fontSize(fS).lineHeight(lH);\n style[\"font-size\"] = fS;\n style[\"line-height\"] = lH;\n }\n\n var wrapResults = wrapper(t);\n lineData = wrapResults.lines.filter(function (l) {\n return l !== \"\";\n });\n line = lineData.length;\n\n if (wrapResults.truncated) {\n\n if (resize) {\n fS--;\n if (fS < fMin) {\n lineData = [];\n } else {\n checkSize();\n }\n } else if (line < 1) {\n lineData = [that._ellipsis(\"\")];\n } else {\n lineData[line - 1] = that._ellipsis(lineData[line - 1]);\n }\n }\n }\n\n if (w > fMin && (h > lH || resize && h > fMin * 1.1)) {\n\n if (resize) {\n\n sizes = measure(words, style);\n\n var areaMod = 1.165 + w / h * 0.1,\n boxArea = w * h,\n maxWidth = d3Array.max(sizes),\n textArea = d3Array.sum(sizes, function (d) {\n return d * lH;\n }) * areaMod;\n\n if (maxWidth > w || textArea > boxArea) {\n var areaRatio = Math.sqrt(boxArea / textArea),\n widthRatio = w / maxWidth;\n var sizeRatio = d3Array.min([areaRatio, widthRatio]);\n fS = Math.floor(fS * sizeRatio);\n }\n\n var heightMax = Math.floor(h * 0.8);\n if (fS > heightMax) {\n fS = heightMax;\n }\n }\n\n checkSize();\n }\n\n if (lineData.length) {\n\n var tH = line * lH;\n var yP = vA === \"top\" ? 0 : vA === \"middle\" ? h / 2 - tH / 2 : h - tH;\n yP -= lH * 0.1;\n\n arr.push({\n data: d,\n i: i,\n lines: lineData,\n fC: this$1._fontColor(d, i),\n fF: style[\"font-family\"],\n fW: style[\"font-weight\"],\n id: this$1._id(d, i),\n tA: this$1._textAnchor(d, i),\n fS: fS, lH: lH, w: w, x: this$1._x(d, i), y: this$1._y(d, i) + yP\n });\n }\n\n return arr;\n }, []), this._id);\n\n var t = d3Transition.transition().duration(this._duration);\n\n if (this._duration === 0) {\n\n boxes.exit().remove();\n } else {\n\n boxes.exit().transition().delay(this._duration).remove();\n\n boxes.exit().selectAll(\"tspan\").transition(t).attr(\"opacity\", 0);\n }\n\n function rotate(text) {\n text.attr(\"transform\", function (d, i) {\n return \"rotate(\" + that._rotate(d, i) + \" \" + (d.x + d.w / 2) + \" \" + (d.y + d.lH / 4 + d.lH * d.lines.length / 2) + \")\";\n });\n }\n\n var update = boxes.enter().append(\"text\").attr(\"class\", \"d3plus-textBox\").attr(\"id\", function (d) {\n return \"d3plus-textBox-\" + d.id;\n }).attr(\"y\", function (d) {\n return d.y + \"px\";\n }).call(rotate).merge(boxes);\n\n update.attr(\"fill\", function (d) {\n return d.fC;\n }).attr(\"text-anchor\", function (d) {\n return d.tA;\n }).attr(\"font-family\", function (d) {\n return d.fF;\n }).style(\"font-family\", function (d) {\n return d.fF;\n }).attr(\"font-size\", function (d) {\n return d.fS + \"px\";\n }).style(\"font-size\", function (d) {\n return d.fS + \"px\";\n }).attr(\"font-weight\", function (d) {\n return d.fW;\n }).style(\"font-weight\", function (d) {\n return d.fW;\n }).style(\"pointer-events\", function (d) {\n return this$1._pointerEvents(d.data, d.i);\n }).each(function (d) {\n\n var dx = d.tA === \"start\" ? 0 : d.tA === \"end\" ? d.w : d.w / 2,\n tB = d3Selection.select(this);\n\n if (that._duration === 0) {\n tB.attr(\"y\", function (d) {\n return d.y + \"px\";\n });\n } else {\n tB.transition(t).attr(\"y\", function (d) {\n return d.y + \"px\";\n });\n }\n\n /**\n Styles to apply to each element.\n @private\n */\n function tspanStyle(tspan) {\n tspan.text(function (t) {\n return t.trimRight();\n }).attr(\"x\", d.x + \"px\").attr(\"dx\", dx + \"px\").attr(\"dy\", d.lH + \"px\");\n }\n\n var tspans = tB.selectAll(\"tspan\").data(d.lines);\n\n if (that._duration === 0) {\n\n tspans.call(tspanStyle);\n\n tspans.exit().remove();\n\n tspans.enter().append(\"tspan\").attr(\"dominant-baseline\", \"alphabetic\").style(\"baseline-shift\", \"0%\").call(tspanStyle);\n } else {\n\n tspans.transition(t).call(tspanStyle);\n\n tspans.exit().transition(t).attr(\"opacity\", 0).remove();\n\n tspans.enter().append(\"tspan\").attr(\"dominant-baseline\", \"alphabetic\").style(\"baseline-shift\", \"0%\").attr(\"opacity\", 0).call(tspanStyle).merge(tspans).transition(t).delay(that._delay).call(tspanStyle).attr(\"opacity\", 1);\n }\n }).transition(t).call(rotate);\n\n var events = Object.keys(this._on),\n on = events.reduce(function (obj, e) {\n obj[e] = function (d, i) {\n return this$1._on[e](d.data, i);\n };\n return obj;\n }, {});\n for (var e = 0; e < events.length; e++) {\n update.on(events[e], on[events[e]]);\n }\n\n if (callback) {\n setTimeout(callback, this._duration + 100);\n }\n\n return this;\n };\n\n /**\n @memberof TextBox\n @desc If *data* is specified, sets the data array to the specified array and returns this generator. If *data* is not specified, returns the current data array. A text box will be drawn for each object in the array.\n @param {Array} [*data* = []]\n */\n TextBox.prototype.data = function data(_) {\n return arguments.length ? (this._data = _, this) : this._data;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the animation delay to the specified number and returns this generator. If *value* is not specified, returns the current animation delay.\n @param {Number} [*value* = 0]\n */\n TextBox.prototype.delay = function delay(_) {\n return arguments.length ? (this._delay = _, this) : this._delay;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the animation duration to the specified number and returns this generator. If *value* is not specified, returns the current animation duration.\n @param {Number} [*value* = 0]\n */\n TextBox.prototype.duration = function duration(_) {\n return arguments.length ? (this._duration = _, this) : this._duration;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the ellipsis method to the specified function or string and returns this generator. If *value* is not specified, returns the current ellipsis method, which simply adds an ellipsis to the string by default.\n @param {Function|String} [*value*]\n @example
default accessor
\n function(d) {\n return d + \"...\";\n }\n */\n TextBox.prototype.ellipsis = function ellipsis(_) {\n return arguments.length ? (this._ellipsis = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._ellipsis;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the font color accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current font color accessor, which is inferred from the [container element](#textBox.select) by default.\n @param {Function|String} [*value* = \"black\"]\n */\n TextBox.prototype.fontColor = function fontColor(_) {\n return arguments.length ? (this._fontColor = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._fontColor;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the font family accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current font family accessor, which is inferred from the [container element](#textBox.select) by default.\n @param {Function|String} [*value* = \"Verdana\"]\n */\n TextBox.prototype.fontFamily = function fontFamily(_) {\n return arguments.length ? (this._fontFamily = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._fontFamily;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the maximum font size accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current maximum font size accessor. The maximum font size is used when [resizing fonts](#textBox.fontResize) dynamically.\n @param {Function|Number} [*value* = 50]\n */\n TextBox.prototype.fontMax = function fontMax(_) {\n return arguments.length ? (this._fontMax = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._fontMax;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the minimum font size accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current minimum font size accessor. The minimum font size is used when [resizing fonts](#textBox.fontResize) dynamically.\n @param {Function|Number} [*value* = 8]\n */\n TextBox.prototype.fontMin = function fontMin(_) {\n return arguments.length ? (this._fontMin = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._fontMin;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the font resizing accessor to the specified function or boolean and returns this generator. If *value* is not specified, returns the current font resizing accessor.\n @param {Function|Boolean} [*value* = false]\n */\n TextBox.prototype.fontResize = function fontResize(_) {\n return arguments.length ? (this._fontResize = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._fontResize;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the font size accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current font size accessor, which is inferred from the [container element](#textBox.select) by default.\n @param {Function|Number} [*value* = 10]\n */\n TextBox.prototype.fontSize = function fontSize(_) {\n return arguments.length ? (this._fontSize = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._fontSize;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the font weight accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current font weight accessor, which is inferred from the [container element](#textBox.select) by default.\n @param {Function|Number|String} [*value* = 400]\n */\n TextBox.prototype.fontWeight = function fontWeight(_) {\n return arguments.length ? (this._fontWeight = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._fontWeight;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the height accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current height accessor.\n @param {Function|Number} [*value*]\n @example
default accessor
\n function(d) {\n return d.height || 200;\n }\n */\n TextBox.prototype.height = function height(_) {\n return arguments.length ? (this._height = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._height;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the id accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current id accessor.\n @param {Function|Number} [*value*]\n @example
default accessor
\n function(d, i) {\n return d.id || i + \"\";\n }\n */\n TextBox.prototype.id = function id(_) {\n return arguments.length ? (this._id = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._id;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the line height accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current line height accessor, which is 1.1 times the [font size](#textBox.fontSize) by default.\n @param {Function|Number} [*value*]\n */\n TextBox.prototype.lineHeight = function lineHeight(_) {\n return arguments.length ? (this._lineHeight = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._lineHeight;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the overflow accessor to the specified function or boolean and returns this generator. If *value* is not specified, returns the current overflow accessor.\n @param {Function|Boolean} [*value* = false]\n */\n TextBox.prototype.overflow = function overflow(_) {\n return arguments.length ? (this._overflow = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._overflow;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the pointer-events accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current pointer-events accessor.\n @param {Function|String} [*value* = \"auto\"]\n */\n TextBox.prototype.pointerEvents = function pointerEvents(_) {\n return arguments.length ? (this._pointerEvents = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._pointerEvents;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the rotate accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current rotate accessor.\n @param {Function|Number} [*value* = 0]\n */\n TextBox.prototype.rotate = function rotate(_) {\n return arguments.length ? (this._rotate = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._rotate;\n };\n\n /**\n @memberof TextBox\n @desc If *selector* is specified, sets the SVG container element to the specified d3 selector or DOM element and returns this generator. If *selector* is not specified, returns the current SVG container element, which adds an SVG element to the page by default.\n @param {String|HTMLElement} [*selector*]\n */\n TextBox.prototype.select = function select$1(_) {\n return arguments.length ? (this._select = d3Selection.select(_), this) : this._select;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the word split function to the specified function and returns this generator. If *value* is not specified, returns the current word split function.\n @param {Function} [*value*] A function that, when passed a string, is expected to return that string split into an array of words to wrap. The default split function splits strings on the following characters: `-`, `/`, `;`, `:`, `&`\n */\n TextBox.prototype.split = function split(_) {\n return arguments.length ? (this._split = _, this) : this._split;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the text accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current text accessor.\n @param {Function|String} [*value*]\n @example
default accessor
\n function(d) {\n return d.text;\n }\n */\n TextBox.prototype.text = function text(_) {\n return arguments.length ? (this._text = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._text;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the horizontal text anchor accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current horizontal text anchor accessor.\n @param {Function|String} [*value* = \"start\"] Analagous to the SVG [text-anchor](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/text-anchor) property.\n */\n TextBox.prototype.textAnchor = function textAnchor(_) {\n return arguments.length ? (this._textAnchor = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._textAnchor;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the vertical alignment accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current vertical alignment accessor.\n @param {Function|String} [*value* = \"top\"] Accepts `\"top\"`, `\"middle\"`, and `\"bottom\"`.\n */\n TextBox.prototype.verticalAlign = function verticalAlign(_) {\n return arguments.length ? (this._verticalAlign = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._verticalAlign;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the width accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current width accessor.\n @param {Function|Number} [*value*]\n @example
default accessor
\n function(d) {\n return d.width || 200;\n }\n */\n TextBox.prototype.width = function width(_) {\n return arguments.length ? (this._width = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._width;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the x accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current x accessor. The number returned should correspond to the left position of the textBox.\n @param {Function|Number} [*value*]\n @example
default accessor
\n function(d) {\n return d.x || 0;\n }\n */\n TextBox.prototype.x = function x(_) {\n return arguments.length ? (this._x = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._x;\n };\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the y accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current y accessor. The number returned should correspond to the top position of the textBox.\n @param {Function|Number} [*value*]\n @example
default accessor
\n function(d) {\n return d.y || 0;\n }\n */\n TextBox.prototype.y = function y(_) {\n return arguments.length ? (this._y = typeof _ === \"function\" ? _ : d3plusCommon.constant(_), this) : this._y;\n };\n\n return TextBox;\n }(d3plusCommon.BaseClass);\n\n /**\n @function titleCase\n @desc Capitalizes the first letter of each word in a phrase/sentence.\n @param {String} str The string to apply the title case logic.\n @param {Object} [opts] Optional parameters to apply.\n @param {String} [opts.lng] The locale to use when looking up all lowercase or uppecase words.\n */\n var titleCase = function titleCase(str, opts) {\n\n if (str === void 0) {\n return \"\";\n }\n\n opts = Object.assign({\n lng: \"en-US\"\n }, opts);\n\n var lng = opts.lng;\n\n var smalls = d3plusCommon.locale.t(\"array.lowercase\", { lng: lng, returnObjects: true }).map(function (s) {\n return s.toLowerCase();\n });\n\n var bigs = d3plusCommon.locale.t(\"array.uppercase\", { lng: lng, returnObjects: true });\n bigs = bigs.concat(bigs.map(function (b) {\n return b + \"s\";\n }));\n var biglow = bigs.map(function (b) {\n return b.toLowerCase();\n });\n\n var split = textSplit(str);\n return split.map(function (s, i) {\n if (s) {\n var lower = s.toLowerCase();\n var stripped = suffixChars.includes(lower.charAt(lower.length - 1)) ? lower.slice(0, -1) : lower;\n var bigindex = biglow.indexOf(stripped);\n if (bigindex >= 0) {\n return bigs[bigindex];\n } else if (smalls.includes(stripped) && i !== 0 && i !== split.length - 1) {\n return lower;\n } else {\n return s.charAt(0).toUpperCase() + s.substr(1).toLowerCase();\n }\n } else {\n return \"\";\n }\n }).reduce(function (ret, s, i) {\n if (i && str.charAt(ret.length) === \" \") {\n ret += \" \";\n }\n ret += s;\n return ret;\n }, \"\");\n };\n\n exports.fontExists = fontExists;\n exports.stringify = stringify;\n exports.strip = strip;\n exports.TextBox = TextBox;\n exports.textSplit = textSplit;\n exports.textWidth = measure;\n exports.textWrap = wrap;\n exports.titleCase = titleCase;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n});\n//# sourceMappingURL=d3plus-text.js.map\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3plus-text/build/d3plus-text.js\n// module id = 29\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3plus-text/build/d3plus-text.js?");/***/},/* 30 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";eval("var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }return target;\n};\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar consoleLogger = {\n type: 'logger',\n\n log: function log(args) {\n this._output('log', args);\n },\n warn: function warn(args) {\n this._output('warn', args);\n },\n error: function error(args) {\n this._output('error', args);\n },\n _output: function _output(type, args) {\n if (console && console[type]) console[type].apply(console, Array.prototype.slice.call(args));\n }\n};\n\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Logger);\n\n this.init(concreteLogger, options);\n }\n\n Logger.prototype.init = function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug === false ? false : true;\n };\n\n Logger.prototype.setDebug = function setDebug(bool) {\n this.debug = bool;\n };\n\n Logger.prototype.log = function log() {\n this.forward(arguments, 'log', '', true);\n };\n\n Logger.prototype.warn = function warn() {\n this.forward(arguments, 'warn', '', true);\n };\n\n Logger.prototype.error = function error() {\n this.forward(arguments, 'error', '');\n };\n\n Logger.prototype.deprecate = function deprecate() {\n this.forward(arguments, 'warn', 'WARNING DEPRECATED: ', true);\n };\n\n Logger.prototype.forward = function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return;\n if (typeof args[0] === 'string') args[0] = prefix + this.prefix + ' ' + args[0];\n this.logger[lvl](args);\n };\n\n Logger.prototype.create = function create(moduleName) {\n var sub = new Logger(this.logger, _extends({ prefix: this.prefix + ':' + moduleName + ':' }, this.options));\n\n return sub;\n };\n\n // createInstance(options = {}) {\n // return new Logger(options, callback);\n // }\n\n return Logger;\n}();\n\n;\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (new Logger());\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/i18next/dist/es/logger.js\n// module id = 30\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/i18next/dist/es/logger.js?");/***/},/* 31 *//***/function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _prodInvariant = __webpack_require__(4);\n\nvar invariant = __webpack_require__(1);\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_PROPERTY: 0x1,\n HAS_BOOLEAN_VALUE: 0x4,\n HAS_NUMERIC_VALUE: 0x8,\n HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n * attribute namespace URL. (Attribute names not specified use no namespace.)\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function injectDOMPropertyConfig(domPropertyConfig) {\n var Injection = DOMPropertyInjection;\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);\n }\n\n for (var propName in Properties) {\n !!DOMProperty.properties.hasOwnProperty(propName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property \\'%s\\' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.', propName) : _prodInvariant('48', propName) : void 0;\n\n var lowerCased = propName.toLowerCase();\n var propConfig = Properties[propName];\n\n var propertyInfo = {\n attributeName: lowerCased,\n attributeNamespace: null,\n propertyName: propName,\n mutationMethod: null,\n\n mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)\n };\n !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n }\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n propertyInfo.attributeName = attributeName;\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n }\n }\n\n if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n }\n\n if (DOMPropertyNames.hasOwnProperty(propName)) {\n propertyInfo.propertyName = DOMPropertyNames[propName];\n }\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n propertyInfo.mutationMethod = DOMMutationMethods[propName];\n }\n\n DOMProperty.properties[propName] = propertyInfo;\n }\n }\n};\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = ':A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\n/* eslint-enable max-len */\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n ID_ATTRIBUTE_NAME: 'data-reactid',\n ROOT_ATTRIBUTE_NAME: 'data-reactroot',\n\n ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,\n ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040',\n\n /**\n * Map from property \"standard name\" to an object with info about how to set\n * the property in the DOM. Each object contains:\n *\n * attributeName:\n * Used when rendering markup or with `*Attribute()`.\n * attributeNamespace\n * propertyName:\n * Used on DOM node instances. (This includes properties that mutate due to\n * external factors.)\n * mutationMethod:\n * If non-null, used instead of the property or `setAttribute()` after\n * initial render.\n * mustUseProperty:\n * Whether the property must be accessed and mutated as an object property.\n * hasBooleanValue:\n * Whether the property should be removed when set to a falsey value.\n * hasNumericValue:\n * Whether the property must be numeric or parse as a numeric and should be\n * removed when set to a falsey value.\n * hasPositiveNumericValue:\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * hasOverloadedBooleanValue:\n * Whether the property can be used as a flag as well as with a value.\n * Removed when strictly equal to false; present without a value when\n * strictly equal to true; present with a value otherwise.\n */\n properties: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties. Available only in __DEV__.\n *\n * autofocus is predefined, because adding it to the property whitelist\n * causes unintended side effects.\n *\n * @type {Object}\n */\n getPossibleStandardName: process.env.NODE_ENV !== 'production' ? { autofocus: 'autoFocus' } : null,\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function isCustomAttribute(attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/react-dom/lib/DOMProperty.js\n// module id = 31\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/react-dom/lib/DOMProperty.js?");/***/},/* 32 *//***/function(module,exports){eval("var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar 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 || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif ((typeof window === \"undefined\" ? \"undefined\" : _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// WEBPACK FOOTER\n// ../~/webpack/buildin/global.js\n// module id = 32\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/webpack/buildin/global.js?");/***/},/* 33 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return map; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return slice; });\nvar array = Array.prototype;\n\nvar map = array.map;\nvar slice = array.slice;\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3-scale/src/array.js\n// module id = 33\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3-scale/src/array.js?");/***/},/* 34 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony default export */ __webpack_exports__[\"a\"] = (function (x) {\n return function constant() {\n return x;\n };\n});\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3-shape/src/constant.js\n// module id = 34\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3-shape/src/constant.js?");/***/},/* 35 *//***/function(module,exports,__webpack_require__){eval("var baseIsNative = __webpack_require__(580),\n getValue = __webpack_require__(601);\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/lodash/_getNative.js\n// module id = 35\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/lodash/_getNative.js?");/***/},/* 36 *//***/function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(process) {var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol.for && Symbol.for('react.element') || 0xeac7;\n\n var isValidElement = function isValidElement(object) {\n return (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = __webpack_require__(271)(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = __webpack_require__(658)();\n}\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/prop-types/index.js\n// module id = 36\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/prop-types/index.js?");/***/},/* 37 *//***/function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n\n\nvar _prodInvariant = __webpack_require__(4);\n\nvar invariant = __webpack_require__(1);\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function oneArgumentPooler(copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function twoArgumentPooler(a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function threeArgumentPooler(a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function fourArgumentPooler(a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function standardReleaser(instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function addPoolingTo(CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/react-dom/lib/PooledClass.js\n// module id = 37\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/react-dom/lib/PooledClass.js?");/***/},/* 38 *//***/function(module,exports,__webpack_require__){"use strict";eval("\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }return target;\n};\n\nvar _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];var _n = true;var _d = false;var _e = undefined;try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;_e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }return _arr;\n }return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = catchErrors;\nfunction catchErrors(_ref) {\n var filename = _ref.filename;\n var components = _ref.components;\n var imports = _ref.imports;\n\n var _imports = _slicedToArray(imports, 3);\n\n var React = _imports[0];\n var ErrorReporter = _imports[1];\n var reporterOptions = _imports[2];\n\n if (!React || !React.Component) {\n throw new Error('imports[0] for react-transform-catch-errors does not look like React.');\n }\n if (typeof ErrorReporter !== 'function') {\n throw new Error('imports[1] for react-transform-catch-errors does not look like a React component.');\n }\n\n return function wrapToCatchErrors(ReactClass, componentId) {\n var originalRender = ReactClass.prototype.render;\n\n ReactClass.prototype.render = function tryRender() {\n try {\n return originalRender.apply(this, arguments);\n } catch (err) {\n setTimeout(function () {\n if (typeof console.reportErrorsAsExceptions !== 'undefined') {\n var prevReportErrorAsExceptions = console.reportErrorsAsExceptions;\n // We're in React Native. Don't throw.\n // Stop react-native from triggering its own error handler\n console.reportErrorsAsExceptions = false;\n // Log an error\n console.error(err);\n // Reactivate it so other errors are still handled\n console.reportErrorsAsExceptions = prevReportErrorAsExceptions;\n } else {\n throw err;\n }\n });\n\n return React.createElement(ErrorReporter, _extends({\n error: err,\n filename: filename\n }, reporterOptions));\n }\n };\n\n return ReactClass;\n };\n}\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/react-transform-catch-errors/lib/index.js\n// module id = 38\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/react-transform-catch-errors/lib/index.js?");/***/},/* 39 *//***/function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];var _n = true;var _d = false;var _e = undefined;try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;_e = err;\n } finally {\n try {\n if (!_n && _i['return']) _i['return']();\n } finally {\n if (_d) throw _e;\n }\n }return _arr;\n }return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError('Invalid attempt to destructure non-iterable instance');\n }\n };\n}();\n\nexports['default'] = proxyReactComponents;\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { 'default': obj };\n}\n\nvar _reactProxy = __webpack_require__(735);\n\nvar _globalWindow = __webpack_require__(537);\n\nvar _globalWindow2 = _interopRequireDefault(_globalWindow);\n\nvar componentProxies = undefined;\nif (_globalWindow2['default'].__reactComponentProxies) {\n componentProxies = _globalWindow2['default'].__reactComponentProxies;\n} else {\n componentProxies = {};\n Object.defineProperty(_globalWindow2['default'], '__reactComponentProxies', {\n configurable: true,\n enumerable: false,\n writable: false,\n value: componentProxies\n });\n}\n\nfunction proxyReactComponents(_ref) {\n var filename = _ref.filename;\n var components = _ref.components;\n var imports = _ref.imports;\n var locals = _ref.locals;\n\n var _imports = _slicedToArray(imports, 1);\n\n var React = _imports[0];\n\n var _locals = _slicedToArray(locals, 1);\n\n var hot = _locals[0].hot;\n\n if (!React.Component) {\n throw new Error('imports[0] for react-transform-hmr does not look like React.');\n }\n\n if (!hot || typeof hot.accept !== 'function') {\n throw new Error('locals[0] does not appear to be a `module` object with Hot Module ' + 'replacement API enabled. You should disable react-transform-hmr in ' + 'production by using `env` section in Babel configuration. See the ' + 'example in README: https://github.com/gaearon/react-transform-hmr');\n }\n\n if (Object.keys(components).some(function (key) {\n return !components[key].isInFunction;\n })) {\n hot.accept(function (err) {\n if (err) {\n console.warn('[React Transform HMR] There was an error updating ' + filename + ':');\n console.error(err);\n }\n });\n }\n\n var forceUpdate = (0, _reactProxy.getForceUpdate)(React);\n\n return function wrapWithProxy(ReactClass, uniqueId) {\n var _components$uniqueId = components[uniqueId];\n var _components$uniqueId$isInFunction = _components$uniqueId.isInFunction;\n var isInFunction = _components$uniqueId$isInFunction === undefined ? false : _components$uniqueId$isInFunction;\n var _components$uniqueId$displayName = _components$uniqueId.displayName;\n var displayName = _components$uniqueId$displayName === undefined ? uniqueId : _components$uniqueId$displayName;\n\n if (isInFunction) {\n return ReactClass;\n }\n\n var globalUniqueId = filename + '$' + uniqueId;\n if (componentProxies[globalUniqueId]) {\n (function () {\n console.info('[React Transform HMR] Patching ' + displayName);\n var instances = componentProxies[globalUniqueId].update(ReactClass);\n setTimeout(function () {\n return instances.forEach(forceUpdate);\n });\n })();\n } else {\n componentProxies[globalUniqueId] = (0, _reactProxy.createProxy)(ReactClass);\n }\n\n return componentProxies[globalUniqueId].get();\n };\n}\n\nmodule.exports = exports['default'];\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/react-transform-hmr/lib/index.js\n// module id = 39\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/react-transform-hmr/lib/index.js?");/***/},/* 40 *//***/function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _assign = __webpack_require__(5);\n\nvar ReactCurrentOwner = __webpack_require__(22);\n\nvar warning = __webpack_require__(2);\nvar canDefineProperty = __webpack_require__(98);\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar REACT_ELEMENT_TYPE = __webpack_require__(300);\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\n\nvar specialPropKeyWarningShown, specialPropRefWarningShown;\n\nfunction hasValidRef(config) {\n if (process.env.NODE_ENV !== 'production') {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n if (process.env.NODE_ENV !== 'production') {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function warnAboutAccessingKey() {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function warnAboutAccessingRef() {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function ReactElement(type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allow us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n if (process.env.NODE_ENV !== 'production') {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n if (canDefineProperty) {\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n });\n // self and source are DEV only properties.\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n });\n // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n } else {\n element._store.validated = false;\n element._self = self;\n element._source = source;\n }\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement\n */\nReactElement.createElement = function (type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n if (process.env.NODE_ENV !== 'production') {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (key || ref) {\n if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n};\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory\n */\nReactElement.createFactory = function (type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. `.type === Foo`.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n return newElement;\n};\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement\n */\nReactElement.cloneElement = function (element, config, children) {\n var propName;\n\n // Original props are copied\n var props = _assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n // Self is preserved since the owner is preserved.\n var self = element._self;\n // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n // Remaining properties override existing props\n var defaultProps;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n};\n\n/**\n * Verifies the object is a ReactElement.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function (object) {\n return (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n};\n\nmodule.exports = ReactElement;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(0)))\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/react/lib/ReactElement.js\n// module id = 40\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/react/lib/ReactElement.js?");/***/},/* 41 *//***/function(module,exports,__webpack_require__){"use strict";eval("/* WEBPACK VAR INJECTION */(function(global) {\n\nvar _typeof2 = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.__RewireAPI__ = exports.__ResetDependency__ = exports.__set__ = exports.__Rewire__ = exports.__GetDependency__ = exports.__get__ = exports.RedBoxError = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof2(obj);\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof2(obj);\n};\n\nvar _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];var _n = true;var _d = false;var _e = undefined;try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;_e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }return _arr;\n }return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if (\"value\" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);\n }\n }return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;\n };\n}();\n\nvar _propTypes = __webpack_require__(36);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(8);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(660);\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _style = __webpack_require__(759);\n\nvar _style2 = _interopRequireDefault(_style);\n\nvar _errorStackParser = __webpack_require__(522);\n\nvar _errorStackParser2 = _interopRequireDefault(_errorStackParser);\n\nvar _objectAssign = __webpack_require__(5);\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar _lib = __webpack_require__(758);\n\nvar _sourcemappedStacktrace = __webpack_require__(765);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }return call && ((typeof call === \"undefined\" ? \"undefined\" : _typeof2(call)) === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(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\" : _typeof2(superClass)));\n }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar RedBoxError = exports.RedBoxError = function (_get__2) {\n _inherits(RedBoxError, _get__2);\n\n function RedBoxError(props) {\n _classCallCheck(this, RedBoxError);\n\n var _this = _possibleConstructorReturn(this, (RedBoxError.__proto__ || Object.getPrototypeOf(RedBoxError)).call(this, props));\n\n _this.state = {\n error: null,\n mapped: false\n };\n\n _this.mapOnConstruction(props.error);\n return _this;\n }\n\n // State is used to store the error mapped to the source map.\n\n\n _createClass(RedBoxError, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (!this.state.mapped) this.mapError(this.props.error);\n }\n\n // Try to map the error when the component gets constructed, this is possible\n // in some cases like evals.\n\n }, {\n key: 'mapOnConstruction',\n value: function mapOnConstruction(error) {\n var stackLines = error.stack.split('\\n');\n\n // There's no stack, only the error message.\n if (stackLines.length < 2) {\n this.state = { error: error, mapped: true };\n return;\n }\n\n // Using the “eval” setting on webpack already gives the correct location.\n var isWebpackEval = stackLines[1].search(/\\(webpack:\\/{3}/) !== -1;\n if (isWebpackEval) {\n // No changes are needed here.\n this.state = { error: error, mapped: true };\n return;\n }\n\n // Other eval follow a specific pattern and can be easily parsed.\n var isEval = stackLines[1].search(/\\(eval at/) !== -1;\n if (!isEval) {\n // mapping will be deferred until `componentDidMount`\n this.state = { error: error, mapped: false };\n return;\n }\n\n // The first line is the error message.\n var fixedLines = [stackLines.shift()];\n // The rest needs to be fixed.\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = stackLines[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var stackLine = _step.value;\n\n var evalStackLine = stackLine.match(/(.+)\\(eval at (.+) \\(.+?\\), .+(\\:[0-9]+\\:[0-9]+)\\)/);\n if (evalStackLine) {\n var _evalStackLine = _slicedToArray(evalStackLine, 4),\n atSomething = _evalStackLine[1],\n file = _evalStackLine[2],\n rowColumn = _evalStackLine[3];\n\n fixedLines.push(atSomething + ' (' + file + rowColumn + ')');\n } else {\n // TODO: When stack frames of different types are detected, try to load the additional source maps\n fixedLines.push(stackLine);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n error.stack = fixedLines.join('\\n');\n this.state = { error: error, mapped: true };\n }\n }, {\n key: 'mapError',\n value: function mapError(error) {\n var _this2 = this;\n\n _get__('mapStackTrace')(error.stack, function (mappedStack) {\n error.stack = mappedStack.join('\\n');\n _this2.setState({ error: error, mapped: true });\n });\n }\n }, {\n key: 'renderFrames',\n value: function renderFrames(frames) {\n var _props = this.props,\n filename = _props.filename,\n editorScheme = _props.editorScheme,\n useLines = _props.useLines,\n useColumns = _props.useColumns;\n\n var _get__3 = _get__('assign')({}, _get__('style'), this.props.style),\n frame = _get__3.frame,\n file = _get__3.file,\n linkToFile = _get__3.linkToFile;\n\n return frames.map(function (f, index) {\n var text = void 0;\n var url = void 0;\n\n if (index === 0 && filename && !_get__('isFilenameAbsolute')(f.fileName)) {\n url = _get__('makeUrl')(filename, editorScheme);\n text = _get__('makeLinkText')(filename);\n } else {\n var lines = useLines ? f.lineNumber : null;\n var columns = useColumns ? f.columnNumber : null;\n url = _get__('makeUrl')(f.fileName, editorScheme, lines, columns);\n text = _get__('makeLinkText')(f.fileName, lines, columns);\n }\n\n return _get__('React').createElement('div', { style: frame, key: index }, _get__('React').createElement('div', null, f.functionName), _get__('React').createElement('div', { style: file }, _get__('React').createElement('a', { href: url, style: linkToFile }, text)));\n });\n }\n }, {\n key: 'render',\n value: function render() {\n // The error is received as a property to initialize state.error, which may\n // be updated when it is mapped to the source map.\n var error = this.state.error;\n var className = this.props.className;\n\n var _get__4 = _get__('assign')({}, _get__('style'), this.props.style),\n redbox = _get__4.redbox,\n message = _get__4.message,\n stack = _get__4.stack,\n frame = _get__4.frame;\n\n var frames = void 0;\n var parseError = void 0;\n try {\n frames = _get__('ErrorStackParser').parse(error);\n } catch (e) {\n parseError = new Error('Failed to parse stack trace. Stack trace information unavailable.');\n }\n\n if (parseError) {\n frames = _get__('React').createElement('div', { style: frame, key: 0 }, _get__('React').createElement('div', null, parseError.message));\n } else {\n frames = this.renderFrames(frames);\n }\n\n return _get__('React').createElement('div', { style: redbox, className: className }, _get__('React').createElement('div', { style: message }, error.name, ': ', error.message), _get__('React').createElement('div', { style: stack }, frames));\n }\n }]);\n\n return RedBoxError;\n}(_get__('Component'));\n\n// \"Portal\" component for actual RedBoxError component to\n// render to (directly under body). Prevents bugs as in #27.\n\n\nRedBoxError.propTypes = {\n error: _get__('PropTypes').instanceOf(Error).isRequired,\n filename: _get__('PropTypes').string,\n editorScheme: _get__('PropTypes').string,\n useLines: _get__('PropTypes').bool,\n useColumns: _get__('PropTypes').bool,\n style: _get__('PropTypes').object,\n className: _get__('PropTypes').string\n};\nRedBoxError.displayName = 'RedBoxError';\nRedBoxError.defaultProps = {\n useLines: true,\n useColumns: true\n};\n\nvar RedBox = function (_get__5) {\n _inherits(RedBox, _get__5);\n\n function RedBox() {\n _classCallCheck(this, RedBox);\n\n return _possibleConstructorReturn(this, (RedBox.__proto__ || Object.getPrototypeOf(RedBox)).apply(this, arguments));\n }\n\n _createClass(RedBox, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.el = document.createElement('div');\n document.body.appendChild(this.el);\n this.renderRedBoxError();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.renderRedBoxError();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _get__('ReactDOM').unmountComponentAtNode(this.el);\n document.body.removeChild(this.el);\n this.el = null;\n }\n }, {\n key: 'renderRedBoxError',\n value: function renderRedBoxError() {\n _get__('ReactDOM').render(_get__('React').createElement(_get__('RedBoxError'), this.props), this.el);\n }\n }, {\n key: 'render',\n value: function render() {\n return null;\n }\n }]);\n\n return RedBox;\n}(_get__('Component'));\n\nRedBox.propTypes = {\n error: _get__('PropTypes').instanceOf(Error).isRequired\n};\nRedBox.displayName = 'RedBox';\nexports.default = RedBox;\n\nfunction _getGlobalObject() {\n try {\n if (!!global) {\n return global;\n }\n } catch (e) {\n try {\n if (!!window) {\n return window;\n }\n } catch (e) {\n return this;\n }\n }\n}\n\n;\nvar _RewireModuleId__ = null;\n\nfunction _getRewireModuleId__() {\n if (_RewireModuleId__ === null) {\n var globalVariable = _getGlobalObject();\n\n if (!globalVariable.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__) {\n globalVariable.__$$GLOBAL_REWIRE_NEXT_MODULE_ID__ = 0;\n }\n\n _RewireModuleId__ = __$$GLOBAL_REWIRE_NEXT_MODULE_ID__++;\n }\n\n return _RewireModuleId__;\n}\n\nfunction _getRewireRegistry__() {\n var theGlobalVariable = _getGlobalObject();\n\n if (!theGlobalVariable.__$$GLOBAL_REWIRE_REGISTRY__) {\n theGlobalVariable.__$$GLOBAL_REWIRE_REGISTRY__ = Object.create(null);\n }\n\n return __$$GLOBAL_REWIRE_REGISTRY__;\n}\n\nfunction _getRewiredData__() {\n var moduleId = _getRewireModuleId__();\n\n var registry = _getRewireRegistry__();\n\n var rewireData = registry[moduleId];\n\n if (!rewireData) {\n registry[moduleId] = Object.create(null);\n rewireData = registry[moduleId];\n }\n\n return rewireData;\n}\n\n(function registerResetAll() {\n var theGlobalVariable = _getGlobalObject();\n\n if (!theGlobalVariable['__rewire_reset_all__']) {\n theGlobalVariable['__rewire_reset_all__'] = function () {\n theGlobalVariable.__$$GLOBAL_REWIRE_REGISTRY__ = Object.create(null);\n };\n }\n})();\n\nvar INTENTIONAL_UNDEFINED = '__INTENTIONAL_UNDEFINED__';\nvar _RewireAPI__ = {};\n\n(function () {\n function addPropertyToAPIObject(name, value) {\n Object.defineProperty(_RewireAPI__, name, {\n value: value,\n enumerable: false,\n configurable: true\n });\n }\n\n addPropertyToAPIObject('__get__', _get__);\n addPropertyToAPIObject('__GetDependency__', _get__);\n addPropertyToAPIObject('__Rewire__', _set__);\n addPropertyToAPIObject('__set__', _set__);\n addPropertyToAPIObject('__reset__', _reset__);\n addPropertyToAPIObject('__ResetDependency__', _reset__);\n addPropertyToAPIObject('__with__', _with__);\n})();\n\nfunction _get__(variableName) {\n var rewireData = _getRewiredData__();\n\n if (rewireData[variableName] === undefined) {\n return _get_original__(variableName);\n } else {\n var value = rewireData[variableName];\n\n if (value === INTENTIONAL_UNDEFINED) {\n return undefined;\n } else {\n return value;\n }\n }\n}\n\nfunction _get_original__(variableName) {\n switch (variableName) {\n case 'PropTypes':\n return _propTypes2.default;\n\n case 'mapStackTrace':\n return _sourcemappedStacktrace.mapStackTrace;\n\n case 'assign':\n return _objectAssign2.default;\n\n case 'style':\n return _style2.default;\n\n case 'isFilenameAbsolute':\n return _lib.isFilenameAbsolute;\n\n case 'makeUrl':\n return _lib.makeUrl;\n\n case 'makeLinkText':\n return _lib.makeLinkText;\n\n case 'ErrorStackParser':\n return _errorStackParser2.default;\n\n case 'Component':\n return _react.Component;\n\n case 'ReactDOM':\n return _reactDom2.default;\n\n case 'React':\n return _react2.default;\n\n case 'RedBoxError':\n return RedBoxError;\n }\n\n return undefined;\n}\n\nfunction _assign__(variableName, value) {\n var rewireData = _getRewiredData__();\n\n if (rewireData[variableName] === undefined) {\n return _set_original__(variableName, value);\n } else {\n return rewireData[variableName] = value;\n }\n}\n\nfunction _set_original__(variableName, _value) {\n switch (variableName) {}\n\n return undefined;\n}\n\nfunction _update_operation__(operation, variableName, prefix) {\n var oldValue = _get__(variableName);\n\n var newValue = operation === '++' ? oldValue + 1 : oldValue - 1;\n\n _assign__(variableName, newValue);\n\n return prefix ? newValue : oldValue;\n}\n\nfunction _set__(variableName, value) {\n var rewireData = _getRewiredData__();\n\n if ((typeof variableName === 'undefined' ? 'undefined' : _typeof(variableName)) === 'object') {\n Object.keys(variableName).forEach(function (name) {\n rewireData[name] = variableName[name];\n });\n } else {\n if (value === undefined) {\n rewireData[variableName] = INTENTIONAL_UNDEFINED;\n } else {\n rewireData[variableName] = value;\n }\n\n return function () {\n _reset__(variableName);\n };\n }\n}\n\nfunction _reset__(variableName) {\n var rewireData = _getRewiredData__();\n\n delete rewireData[variableName];\n\n if (Object.keys(rewireData).length == 0) {\n delete _getRewireRegistry__()[_getRewireModuleId__];\n }\n\n ;\n}\n\nfunction _with__(object) {\n var rewireData = _getRewiredData__();\n\n var rewiredVariableNames = Object.keys(object);\n var previousValues = {};\n\n function reset() {\n rewiredVariableNames.forEach(function (variableName) {\n rewireData[variableName] = previousValues[variableName];\n });\n }\n\n return function (callback) {\n rewiredVariableNames.forEach(function (variableName) {\n previousValues[variableName] = rewireData[variableName];\n rewireData[variableName] = object[variableName];\n });\n var result = callback();\n\n if (!!result && typeof result.then == 'function') {\n result.then(reset).catch(reset);\n } else {\n reset();\n }\n\n return result;\n };\n}\n\nvar _typeOfOriginalExport = typeof RedBox === 'undefined' ? 'undefined' : _typeof(RedBox);\n\nfunction addNonEnumerableProperty(name, value) {\n Object.defineProperty(RedBox, name, {\n value: value,\n enumerable: false,\n configurable: true\n });\n}\n\nif ((_typeOfOriginalExport === 'object' || _typeOfOriginalExport === 'function') && Object.isExtensible(RedBox)) {\n addNonEnumerableProperty('__get__', _get__);\n addNonEnumerableProperty('__GetDependency__', _get__);\n addNonEnumerableProperty('__Rewire__', _set__);\n addNonEnumerableProperty('__set__', _set__);\n addNonEnumerableProperty('__reset__', _reset__);\n addNonEnumerableProperty('__ResetDependency__', _reset__);\n addNonEnumerableProperty('__with__', _with__);\n addNonEnumerableProperty('__RewireAPI__', _RewireAPI__);\n}\n\nexports.__get__ = _get__;\nexports.__GetDependency__ = _get__;\nexports.__Rewire__ = _set__;\nexports.__set__ = _set__;\nexports.__ResetDependency__ = _reset__;\nexports.__RewireAPI__ = _RewireAPI__;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(32)))\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/redbox-react/lib/index.js\n// module id = 41\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/redbox-react/lib/index.js?");/***/},/* 42 *//***/function(module,exports){eval("module.exports = function (originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\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 get() {\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 get() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/webpack/buildin/harmony-module.js\n// module id = 42\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/webpack/buildin/harmony-module.js?");/***/},/* 43 *//***/function(module,exports,__webpack_require__){eval("/* WEBPACK VAR INJECTION */(function(Buffer) {/*\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\") modules = [[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\") alreadyImportedModules[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) {\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\tvar base64 = new Buffer(JSON.stringify(sourceMap)).toString('base64');\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(335).Buffer))\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/css-loader/lib/css-base.js\n// module id = 43\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/css-loader/lib/css-base.js?");/***/},/* 44 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony default export */ __webpack_exports__[\"a\"] = (function (a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n});\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3-array/src/ascending.js\n// module id = 44\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3-array/src/ascending.js?");/***/},/* 45 *//***/function(module,__webpack_exports__,__webpack_require__){"use strict";eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_band__ = __webpack_require__(410);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleBand\", function() { return __WEBPACK_IMPORTED_MODULE_0__src_band__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"scalePoint\", function() { return __WEBPACK_IMPORTED_MODULE_0__src_band__[\"b\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_identity__ = __webpack_require__(416);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleIdentity\", function() { return __WEBPACK_IMPORTED_MODULE_1__src_identity__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_linear__ = __webpack_require__(59);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleLinear\", function() { return __WEBPACK_IMPORTED_MODULE_2__src_linear__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_log__ = __webpack_require__(417);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleLog\", function() { return __WEBPACK_IMPORTED_MODULE_3__src_log__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_ordinal__ = __webpack_require__(203);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleOrdinal\", function() { return __WEBPACK_IMPORTED_MODULE_4__src_ordinal__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleImplicit\", function() { return __WEBPACK_IMPORTED_MODULE_4__src_ordinal__[\"b\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_pow__ = __webpack_require__(418);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"scalePow\", function() { return __WEBPACK_IMPORTED_MODULE_5__src_pow__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleSqrt\", function() { return __WEBPACK_IMPORTED_MODULE_5__src_pow__[\"b\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__src_quantile__ = __webpack_require__(419);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleQuantile\", function() { return __WEBPACK_IMPORTED_MODULE_6__src_quantile__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__src_quantize__ = __webpack_require__(420);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleQuantize\", function() { return __WEBPACK_IMPORTED_MODULE_7__src_quantize__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__src_threshold__ = __webpack_require__(423);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleThreshold\", function() { return __WEBPACK_IMPORTED_MODULE_8__src_threshold__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__src_time__ = __webpack_require__(204);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleTime\", function() { return __WEBPACK_IMPORTED_MODULE_9__src_time__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__src_utcTime__ = __webpack_require__(425);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleUtc\", function() { return __WEBPACK_IMPORTED_MODULE_10__src_utcTime__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__src_category10__ = __webpack_require__(411);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"schemeCategory10\", function() { return __WEBPACK_IMPORTED_MODULE_11__src_category10__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__src_category20b__ = __webpack_require__(413);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"schemeCategory20b\", function() { return __WEBPACK_IMPORTED_MODULE_12__src_category20b__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__src_category20c__ = __webpack_require__(414);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"schemeCategory20c\", function() { return __WEBPACK_IMPORTED_MODULE_13__src_category20c__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__src_category20__ = __webpack_require__(412);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"schemeCategory20\", function() { return __WEBPACK_IMPORTED_MODULE_14__src_category20__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__src_cubehelix__ = __webpack_require__(415);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateCubehelixDefault\", function() { return __WEBPACK_IMPORTED_MODULE_15__src_cubehelix__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__src_rainbow__ = __webpack_require__(421);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateRainbow\", function() { return __WEBPACK_IMPORTED_MODULE_16__src_rainbow__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateWarm\", function() { return __WEBPACK_IMPORTED_MODULE_16__src_rainbow__[\"b\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateCool\", function() { return __WEBPACK_IMPORTED_MODULE_16__src_rainbow__[\"c\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__src_viridis__ = __webpack_require__(426);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateViridis\", function() { return __WEBPACK_IMPORTED_MODULE_17__src_viridis__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateMagma\", function() { return __WEBPACK_IMPORTED_MODULE_17__src_viridis__[\"b\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolateInferno\", function() { return __WEBPACK_IMPORTED_MODULE_17__src_viridis__[\"c\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"interpolatePlasma\", function() { return __WEBPACK_IMPORTED_MODULE_17__src_viridis__[\"d\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__src_sequential__ = __webpack_require__(422);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"scaleSequential\", function() { return __WEBPACK_IMPORTED_MODULE_18__src_sequential__[\"a\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3-scale/index.js\n// module id = 45\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3-scale/index.js?");/***/},/* 46 *//***/function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*\n d3plus-axis v0.3.30\n Beautiful javascript scales and axes.\n Copyright (c) 2017 D3plus - https://d3plus.org\n @license MIT\n*/\n(function (global, factory) {\n ( false ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, __webpack_require__(6), __webpack_require__(45), __webpack_require__(3), __webpack_require__(14), __webpack_require__(10), __webpack_require__(82), __webpack_require__(29)) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(6), __webpack_require__(45), __webpack_require__(3), __webpack_require__(14), __webpack_require__(10), __webpack_require__(82), __webpack_require__(29)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : factory(global.d3plus = global.d3plus || {}, global.d3Array, global.scales, global.d3Selection, global.d3Transition, global.d3plusCommon, global.shapes, global.d3plusText);\n})(this, function (exports, d3Array, scales, d3Selection, d3Transition, d3plusCommon, shapes, d3plusText) {\n 'use strict';\n\n /**\n @function date\n @summary Parses numbers and strings to valid Javascript Date objects.\n @description Returns a javascript Date object for a given a Number (representing either a 4-digit year or milliseconds since epoch) or a String that is in [valid dateString format](http://dygraphs.com/date-formats.html). Besides the 4-digit year parsing, this function is useful when needing to parse negative (BC) years, which the vanilla Date object cannot parse.\n @param {Number|String} *date*\n */\n\n var date = function date(d) {\n\n // returns if already Date object\n if (d.constructor === Date) {\n return d;\n }\n // detects if milliseconds\n else if (d.constructor === Number && (\"\" + d).length > 5 && d % 1 === 0) {\n return new Date(d);\n }\n\n var s = \"\" + d;\n var dayFormat = new RegExp(/^\\d{1,2}[./-]\\d{1,2}[./-](-*\\d{1,4})$/g).exec(s),\n strFormat = new RegExp(/^[A-z]{1,3} [A-z]{1,3} \\d{1,2} (-*\\d{1,4}) \\d{1,2}:\\d{1,2}:\\d{1,2} [A-z]{1,3}-*\\d{1,4} \\([A-z]{1,3}\\)/g).exec(s);\n\n // tests for XX/XX/XXXX format\n if (dayFormat) {\n var year = dayFormat[1];\n if (year.indexOf(\"-\") === 0) {\n s = s.replace(year, year.substr(1));\n }\n var date = new Date(s);\n date.setFullYear(year);\n return date;\n }\n // tests for full Date object string format\n else if (strFormat) {\n var year$1 = strFormat[1];\n if (year$1.indexOf(\"-\") === 0) {\n s = s.replace(year$1, year$1.substr(1));\n }\n var date$1 = new Date(s);\n date$1.setFullYear(year$1);\n return date$1;\n }\n // detects if only passing a year value\n else if (!s.includes(\"/\") && !s.includes(\" \") && (!s.includes(\"-\") || !s.indexOf(\"-\"))) {\n var date$2 = new Date(s + \"/01/01\");\n date$2.setFullYear(d);\n return date$2;\n }\n // parses string to Date object\n else {\n return new Date(s);\n }\n };\n\n /**\n @external BaseClass\n @see https://github.com/d3plus/d3plus-common#BaseClass\n */\n\n /**\n @class Axis\n @extends external:BaseClass\n @desc Creates an SVG scale based on an array of data.\n */\n var Axis = function (BaseClass$$1) {\n function Axis() {\n var this$1 = this;\n\n BaseClass$$1.call(this);\n\n this._align = \"middle\";\n this._barConfig = {\n \"stroke\": \"#000\",\n \"stroke-width\": 1\n };\n this._domain = [0, 10];\n this._duration = 600;\n this._gridConfig = {\n \"stroke\": \"#ccc\",\n \"stroke-width\": 1\n };\n this._height = 400;\n this.orient(\"bottom\");\n this._outerBounds = { width: 0, height: 0, x: 0, y: 0 };\n this._padding = 5;\n this._paddingInner = 0.1;\n this._paddingOuter = 0.1;\n this._scale = \"linear\";\n this._shape = \"Line\";\n this._shapeConfig = {\n fill: \"#000\",\n height: function height(d) {\n return d.tick ? 8 : 0;\n },\n label: function label(d) {\n return d.text;\n },\n labelBounds: function labelBounds(d) {\n return d.labelBounds;\n },\n labelConfig: {\n fontColor: \"#000\",\n fontFamily: new d3plusText.TextBox().fontFamily(),\n fontResize: false,\n fontSize: d3plusCommon.constant(10),\n textAnchor: function textAnchor() {\n return this$1._orient === \"left\" ? \"end\" : this$1._orient === \"right\" ? \"start\" : \"middle\";\n },\n verticalAlign: function verticalAlign() {\n return this$1._orient === \"bottom\" ? \"top\" : this$1._orient === \"top\" ? \"bottom\" : \"middle\";\n }\n },\n labelPadding: 0,\n r: function r(d) {\n return d.tick ? 4 : 0;\n },\n stroke: \"#000\",\n strokeWidth: 1,\n width: function width(d) {\n return d.tick ? 8 : 0;\n }\n };\n this._tickSize = 5;\n this._titleConfig = {\n fontFamily: \"Verdana\",\n fontSize: 12,\n lineHeight: 13,\n textAnchor: \"middle\"\n };\n this._width = 400;\n }\n\n if (BaseClass$$1) Axis.__proto__ = BaseClass$$1;\n Axis.prototype = Object.create(BaseClass$$1 && BaseClass$$1.prototype);\n Axis.prototype.constructor = Axis;\n\n /**\n @memberof Axis\n @desc Sets positioning for the axis bar.\n @param {D3Selection} *bar*\n @private\n */\n Axis.prototype._barPosition = function _barPosition(bar) {\n\n var ref = this._position;\n var height = ref.height;\n var x = ref.x;\n var y = ref.y;\n var opposite = ref.opposite;\n var domain = this._d3Scale.domain(),\n offset = this._margin[opposite],\n position = [\"top\", \"left\"].includes(this._orient) ? this._outerBounds[y] + this._outerBounds[height] - offset : this._outerBounds[y] + offset;\n\n bar.call(d3plusCommon.attrize, this._barConfig).attr(x + \"1\", this._d3Scale(domain[0]) - (this._scale === \"band\" ? this._d3Scale.step() - this._d3Scale.bandwidth() : 0)).attr(x + \"2\", this._d3Scale(domain[domain.length - 1]) + (this._scale === \"band\" ? this._d3Scale.step() : 0)).attr(y + \"1\", position).attr(y + \"2\", position);\n };\n\n /**\n @memberof Axis\n @desc Sets positioning for the grid lines.\n @param {D3Selection} *lines*\n @private\n */\n Axis.prototype._gridPosition = function _gridPosition(lines, last) {\n if (last === void 0) last = false;\n\n var ref = this._position;\n var height = ref.height;\n var x = ref.x;\n var y = ref.y;\n var opposite = ref.opposite;\n var offset = this._margin[opposite],\n position = [\"top\", \"left\"].includes(this._orient) ? this._outerBounds[y] + this._outerBounds[height] - offset : this._outerBounds[y] + offset,\n scale = last ? this._lastScale || this._d3Scale : this._d3Scale,\n size = [\"top\", \"left\"].includes(this._orient) ? offset : -offset,\n xDiff = this._scale === \"band\" ? this._d3Scale.bandwidth() / 2 : 0,\n xPos = function xPos(d) {\n return scale(d.id) + xDiff;\n };\n lines.call(d3plusCommon.attrize, this._gridConfig).attr(x + \"1\", xPos).attr(x + \"2\", xPos).attr(y + \"1\", position).attr(y + \"2\", last ? position : position + size);\n };\n\n /**\n @memberof Axis\n @desc Renders the current Axis to the page. If a *callback* is specified, it will be called once the legend is done drawing.\n @param {Function} [*callback* = undefined]\n @chainable\n */\n Axis.prototype.render = function render(callback) {\n var this$1 = this;\n\n if (this._select === void 0) {\n this.select(d3Selection.select(\"body\").append(\"svg\").attr(\"width\", this._width + \"px\").attr(\"height\", this._height + \"px\").node());\n }\n\n if (this._lineHeight === void 0) {\n this._lineHeight = function (d, i) {\n return this$1._shapeConfig.labelConfig.fontSize(d, i) * 1.1;\n };\n }\n\n var ref = this._position;\n var width = ref.width;\n var height = ref.height;\n var x = ref.x;\n var y = ref.y;\n var horizontal = ref.horizontal;\n var opposite = ref.opposite;\n var clipId = \"d3plus-Axis-clip-\" + this._uuid,\n flip = [\"top\", \"left\"].includes(this._orient),\n p = this._padding,\n parent = this._select,\n t = d3Transition.transition().duration(this._duration);\n\n var range$$1 = this._range ? this._range.slice() : [undefined, undefined];\n if (range$$1[0] === void 0) {\n range$$1[0] = p;\n }\n if (range$$1[1] === void 0) {\n range$$1[1] = this[\"_\" + width] - p;\n }\n this._size = range$$1[1] - range$$1[0];\n if (this._scale === \"ordinal\" && this._domain.length > range$$1.length) {\n range$$1 = d3Array.range(this._domain.length).map(function (d) {\n return this$1._size * (d / (this$1._domain.length - 1)) + range$$1[0];\n });\n }\n\n this._margin = { top: 0, right: 0, bottom: 0, left: 0 };\n\n if (this._title) {\n var lH = this._titleConfig.lineHeight ? this._titleConfig.lineHeight : this._titleConfig.fontSize * 1.1,\n titleWrap = d3plusText.textWrap().fontFamily(this._titleConfig.fontFamily).fontSize(this._titleConfig.fontSize).lineHeight(lH).width(this._size).height(this[\"_\" + height] - this._tickSize - p)(this._title);\n this._margin[this._orient] = titleWrap.lines.length * lH + p;\n }\n\n this._d3Scale = scales[\"scale\" + this._scale.charAt(0).toUpperCase() + this._scale.slice(1)]().domain(this._scale === \"time\" ? this._domain.map(date) : this._domain);\n\n if (this._d3Scale.rangeRound) {\n this._d3Scale.rangeRound(range$$1);\n } else {\n this._d3Scale.range(range$$1);\n }\n\n if (this._d3Scale.round) {\n this._d3Scale.round(true);\n }\n if (this._d3Scale.paddingInner) {\n this._d3Scale.paddingInner(this._paddingInner);\n }\n if (this._d3Scale.paddingOuter) {\n this._d3Scale.paddingOuter(this._paddingOuter);\n }\n\n var tickScale = scales.scaleSqrt().domain([10, 400]).range([10, this._gridSize === 0 ? 50 : 75]);\n\n var ticks = this._ticks ? this._scale === \"time\" ? this._ticks.map(date) : this._ticks : this._d3Scale.ticks ? this._d3Scale.ticks(Math.floor(this._size / tickScale(this._size))) : this._domain;\n\n var labels = this._labels ? this._scale === \"time\" ? this._labels.map(date) : this._labels : this._d3Scale.ticks ? this._d3Scale.ticks(Math.floor(this._size / tickScale(this._size))) : ticks;\n\n ticks = ticks.slice();\n labels = labels.slice();\n\n var tickFormat = this._tickFormat ? this._tickFormat : this._d3Scale.tickFormat ? this._d3Scale.tickFormat(labels.length - 1) : function (d) {\n return d;\n };\n\n if (this._scale === \"time\") {\n ticks = ticks.map(Number);\n labels = labels.map(Number);\n }\n\n ticks = ticks.sort(function (a, b) {\n return this$1._d3Scale(a) - this$1._d3Scale(b);\n });\n labels = labels.sort(function (a, b) {\n return this$1._d3Scale(a) - this$1._d3Scale(b);\n });\n\n var tickSize = this._shape === \"Circle\" ? this._shapeConfig.r : this._shape === \"Rect\" ? this._shapeConfig[width] : this._shapeConfig.strokeWidth;\n\n var tickGet = typeof tickSize !== \"function\" ? function () {\n return tickSize;\n } : tickSize;\n\n var pixels = [];\n this._availableTicks = ticks;\n ticks.forEach(function (d, i) {\n var s = tickGet({ id: d, tick: true }, i);\n if (this$1._shape === \"Circle\") {\n s *= 2;\n }\n var t = this$1._d3Scale(d);\n if (!pixels.length || Math.abs(d3plusCommon.closest(t, pixels) - t) > s * 2) {\n pixels.push(t);\n } else {\n pixels.push(false);\n }\n });\n ticks = ticks.filter(function (d, i) {\n return pixels[i] !== false;\n });\n\n this._visibleTicks = ticks;\n\n var hBuff = this._shape === \"Circle\" ? typeof this._shapeConfig.r === \"function\" ? this._shapeConfig.r({ tick: true }) : this._shapeConfig.r : this._shape === \"Rect\" ? typeof this._shapeConfig[height] === \"function\" ? this._shapeConfig[height]({ tick: true }) : this._shapeConfig[height] : this._tickSize,\n wBuff = tickGet({ tick: true });\n\n if (typeof hBuff === \"function\") {\n hBuff = d3Array.max(ticks.map(hBuff));\n }\n if (this._shape === \"Rect\") {\n hBuff /= 2;\n }\n if (typeof wBuff === \"function\") {\n wBuff = d3Array.max(ticks.map(wBuff));\n }\n if (this._shape !== \"Circle\") {\n wBuff /= 2;\n }\n\n if (this._scale === \"band\") {\n this._space = this._d3Scale.bandwidth();\n } else if (labels.length > 1) {\n this._space = 0;\n for (var i = 0; i < labels.length - 1; i++) {\n var s = this$1._d3Scale(labels[i + 1]) - this$1._d3Scale(labels[i]);\n if (s > this$1._space) {\n this$1._space = s;\n }\n }\n } else {\n this._space = this._size;\n }\n\n // Measures size of ticks\n var textData = labels.map(function (d, i) {\n\n var f = this$1._shapeConfig.labelConfig.fontFamily(d, i),\n s = this$1._shapeConfig.labelConfig.fontSize(d, i);\n\n var lh = this$1._shapeConfig.lineHeight ? this$1._shapeConfig.lineHeight(d, i) : s * 1.1;\n\n var res = d3plusText.textWrap().fontFamily(f).fontSize(s).lineHeight(lh).width(horizontal ? this$1._space : this$1._width - hBuff - p).height(horizontal ? this$1._height - hBuff - p : this$1._space)(tickFormat(d));\n\n res.lines = res.lines.filter(function (d) {\n return d !== \"\";\n });\n res.d = d;\n res.fS = s;\n res.width = res.lines.length ? Math.ceil(d3Array.max(res.lines.map(function (line) {\n return d3plusText.textWidth(line, { \"font-family\": f, \"font-size\": s });\n }))) + s / 4 : 0;\n res.height = res.lines.length ? Math.ceil(res.lines.length * (lh + 1)) : 0;\n res.offset = 0;\n if (res.width % 2) {\n res.width++;\n }\n\n return res;\n });\n\n textData.forEach(function (d, i) {\n if (i) {\n var prev = textData[i - 1];\n if (!prev.offset && this$1._d3Scale(d.d) - d[width] / 2 < this$1._d3Scale(prev.d) + prev[width] / 2) {\n d.offset = prev[height] + this$1._padding;\n d[height] += d.offset;\n }\n }\n });\n\n var maxOffset = d3Array.max(textData, function (d) {\n return d.offset;\n });\n if (maxOffset) {\n textData.forEach(function (d) {\n if (d.offset) {\n d.offset = maxOffset;\n }\n });\n }\n\n // Calculates new range, based on any text that may be overflowing.\n var rangeOuter = range$$1.slice();\n var lastI = range$$1.length - 1;\n if (this._scale !== \"band\" && textData.length) {\n\n var first = textData[0],\n last = textData[textData.length - 1];\n\n var firstB = d3Array.min([this._d3Scale(first.d) - first[width] / 2, range$$1[0] - wBuff]);\n if (firstB < range$$1[0]) {\n var d = range$$1[0] - firstB;\n if (this._range === void 0 || this._range[0] === void 0) {\n this._size -= d;\n range$$1[0] += d;\n } else if (this._range) {\n rangeOuter[0] -= d;\n }\n }\n\n var lastB = d3Array.max([this._d3Scale(last.d) + last[width] / 2, range$$1[lastI] + wBuff]);\n if (lastB > range$$1[lastI]) {\n var d$1 = lastB - range$$1[lastI];\n if (this._range === void 0 || this._range[lastI] === void 0) {\n this._size -= d$1;\n range$$1[lastI] -= d$1;\n } else if (this._range) {\n rangeOuter[lastI] += d$1;\n }\n }\n\n if (this._d3Scale.rangeRound) {\n this._d3Scale.rangeRound(range$$1);\n } else {\n this._d3Scale.range(range$$1);\n }\n }\n\n var tBuff = this._shape === \"Line\" ? 0 : hBuff;\n this._outerBounds = (obj = {}, obj[height] = (d3Array.max(textData, function (t) {\n return t[height];\n }) || 0) + (textData.length ? p : 0), obj[width] = rangeOuter[lastI] - rangeOuter[0], obj[x] = rangeOuter[0], obj);\n var obj;\n this._margin[opposite] = this._gridSize !== void 0 ? d3Array.max([this._gridSize, tBuff]) : this[\"_\" + height] - this._margin[this._orient] - this._outerBounds[height] - p * 2 - hBuff;\n this._margin[this._orient] += hBuff;\n this._outerBounds[height] += this._margin[opposite] + this._margin[this._orient];\n this._outerBounds[y] = this._align === \"start\" ? this._padding : this._align === \"end\" ? this[\"_\" + height] - this._outerBounds[height] - this._padding : this[\"_\" + height] / 2 - this._outerBounds[height] / 2;\n\n var group = d3plusCommon.elem(\"g#d3plus-Axis-\" + this._uuid, { parent: parent });\n this._group = group;\n\n var grid = d3plusCommon.elem(\"g.grid\", { parent: group }).selectAll(\"line\").data((this._gridSize !== 0 ? this._grid || ticks : []).map(function (d) {\n return { id: d };\n }), function (d) {\n return d.id;\n });\n\n grid.exit().transition(t).attr(\"opacity\", 0).call(this._gridPosition.bind(this)).remove();\n\n grid.enter().append(\"line\").attr(\"opacity\", 0).attr(\"clip-path\", \"url(#\" + clipId + \")\").call(this._gridPosition.bind(this), true).merge(grid).transition(t).attr(\"opacity\", 1).call(this._gridPosition.bind(this));\n\n var labelHeight = d3Array.max(textData, function (t) {\n return t.height;\n }) || 0,\n labelWidth = horizontal ? this._space * 1.1 : (this._outerBounds.width - this._margin[this._position.opposite] - hBuff - this._margin[this._orient] + p) * 1.1;\n var tickData = ticks.concat(labels.filter(function (d, i) {\n return textData[i].lines.length && !ticks.includes(d);\n })).map(function (d) {\n var data = textData.filter(function (td) {\n return td.d === d;\n });\n var labelOffset = data.length ? data[0].offset : 0;\n var offset = this$1._margin[opposite],\n position = flip ? this$1._outerBounds[y] + this$1._outerBounds[height] - offset : this$1._outerBounds[y] + offset,\n size = (hBuff + labelOffset) * (flip ? -1 : 1);\n return obj = {\n id: d,\n labelBounds: {\n x: horizontal ? -labelWidth / 2 : this$1._orient === \"left\" ? -labelWidth - p + size : size + p,\n y: horizontal ? this$1._orient === \"bottom\" ? size + p : size - p - labelHeight : -labelHeight / 2,\n width: labelWidth,\n height: labelHeight\n },\n size: ticks.includes(d) ? size : 0,\n text: labels.includes(d) ? tickFormat(d) : false,\n tick: ticks.includes(d)\n }, obj[x] = this$1._d3Scale(d) + (this$1._scale === \"band\" ? this$1._d3Scale.bandwidth() / 2 : 0), obj[y] = position, obj;\n var obj;\n });\n\n if (this._shape === \"Line\") {\n tickData = tickData.concat(tickData.map(function (d) {\n var dupe = Object.assign({}, d);\n dupe[y] += d.size;\n return dupe;\n }));\n }\n\n new shapes[this._shape]().data(tickData).duration(this._duration).labelConfig({\n ellipsis: function ellipsis(d) {\n return d && d.length ? d + \"...\" : \"\";\n }\n }).select(d3plusCommon.elem(\"g.ticks\", { parent: group }).node()).config(this._shapeConfig).render();\n\n var bar = group.selectAll(\"line.bar\").data([null]);\n\n bar.enter().append(\"line\").attr(\"class\", \"bar\").attr(\"opacity\", 0).call(this._barPosition.bind(this)).merge(bar).transition(t).attr(\"opacity\", 1).call(this._barPosition.bind(this));\n\n new d3plusText.TextBox().data(this._title ? [{ text: this._title }] : []).duration(this._duration).height(this._outerBounds.height).rotate(this._orient === \"left\" ? -90 : this._orient === \"right\" ? 90 : 0).select(d3plusCommon.elem(\"g.d3plus-Axis-title\", { parent: group }).node()).text(function (d) {\n return d.text;\n }).textAnchor(\"middle\").verticalAlign(this._orient === \"bottom\" ? \"bottom\" : \"top\").width(this._outerBounds[width]).x(horizontal ? this._outerBounds.x : this._orient === \"left\" ? this._outerBounds.x + this._margin[this._orient] / 2 - this._outerBounds[width] / 2 : this._outerBounds.x + this._outerBounds.width - this._margin[this._orient] / 2 - this._outerBounds[width] / 2).y(horizontal ? this._outerBounds.y : this._outerBounds.y - this._margin[this._orient] / 2 + this._outerBounds[width] / 2).config(this._titleConfig).render();\n\n this._lastScale = this._d3Scale;\n\n if (callback) {\n setTimeout(callback, this._duration + 100);\n }\n\n return this;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the horizontal alignment to the specified value and returns the current class instance. If *value* is not specified, returns the current horizontal alignment.\n @param {String} [*value* = \"center\"] Supports `\"left\"` and `\"center\"` and `\"right\"`.\n @chainable\n */\n Axis.prototype.align = function align(_) {\n return arguments.length ? (this._align = _, this) : this._align;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the axis line style and returns the current class instance. If *value* is not specified, returns the current axis line style.\n @param {Object} [*value*]\n @chainable\n */\n Axis.prototype.barConfig = function barConfig(_) {\n return arguments.length ? (this._barConfig = Object.assign(this._barConfig, _), this) : this._barConfig;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the scale domain of the axis and returns the current class instance. If *value* is not specified, returns the current scale domain.\n @param {Array} [*value* = [0, 10]]\n @chainable\n */\n Axis.prototype.domain = function domain(_) {\n return arguments.length ? (this._domain = _, this) : this._domain;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the transition duration of the axis and returns the current class instance. If *value* is not specified, returns the current duration.\n @param {Number} [*value* = 600]\n @chainable\n */\n Axis.prototype.duration = function duration(_) {\n return arguments.length ? (this._duration = _, this) : this._duration;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the grid values of the axis and returns the current class instance. If *value* is not specified, returns the current grid values, which by default are interpreted based on the [domain](#Axis.domain) and the available [width](#Axis.width).\n @param {Array} [*value*]\n @chainable\n */\n Axis.prototype.grid = function grid(_) {\n return arguments.length ? (this._grid = _, this) : this._grid;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the grid style of the axis and returns the current class instance. If *value* is not specified, returns the current grid style.\n @param {Object} [*value*]\n @chainable\n */\n Axis.prototype.gridConfig = function gridConfig(_) {\n return arguments.length ? (this._gridConfig = Object.assign(this._gridConfig, _), this) : this._gridConfig;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the grid size of the axis and returns the current class instance. If *value* is not specified, returns the current grid size, which defaults to taking up as much space as available.\n @param {Number} [*value* = undefined]\n @chainable\n */\n Axis.prototype.gridSize = function gridSize(_) {\n return arguments.length ? (this._gridSize = _, this) : this._gridSize;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the overall height of the axis and returns the current class instance. If *value* is not specified, returns the current height value.\n @param {Number} [*value* = 100]\n @chainable\n */\n Axis.prototype.height = function height(_) {\n return arguments.length ? (this._height = _, this) : this._height;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the visible tick labels of the axis and returns the current class instance. If *value* is not specified, returns the current visible tick labels, which defaults to showing all labels.\n @param {Array} [*value*]\n @chainable\n */\n Axis.prototype.labels = function labels(_) {\n return arguments.length ? (this._labels = _, this) : this._labels;\n };\n\n /**\n @memberof Axis\n @desc If *orient* is specified, sets the orientation of the shape and returns the current class instance. If *orient* is not specified, returns the current orientation.\n @param {String} [*orient* = \"bottom\"] Supports `\"top\"`, `\"right\"`, `\"bottom\"`, and `\"left\"` orientations.\n @chainable\n */\n Axis.prototype.orient = function orient(_) {\n if (arguments.length) {\n\n var horizontal = [\"top\", \"bottom\"].includes(_),\n opps = { top: \"bottom\", right: \"left\", bottom: \"top\", left: \"right\" };\n\n this._position = {\n horizontal: horizontal,\n width: horizontal ? \"width\" : \"height\",\n height: horizontal ? \"height\" : \"width\",\n x: horizontal ? \"x\" : \"y\",\n y: horizontal ? \"y\" : \"x\",\n opposite: opps[_]\n };\n\n return this._orient = _, this;\n }\n return this._orient;\n };\n\n /**\n @memberof Axis\n @desc If called after the elements have been drawn to DOM, will returns the outer bounds of the axis content.\n @example\n {\"width\": 180, \"height\": 24, \"x\": 10, \"y\": 20}\n */\n Axis.prototype.outerBounds = function outerBounds() {\n return this._outerBounds;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the padding between each tick label to the specified number and returns the current class instance. If *value* is not specified, returns the current padding value.\n @param {Number} [*value* = 10]\n @chainable\n */\n Axis.prototype.padding = function padding(_) {\n return arguments.length ? (this._padding = _, this) : this._padding;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the inner padding of band scale to the specified number and returns the current class instance. If *value* is not specified, returns the current inner padding value.\n @param {Number} [*value* = 0.1]\n @chainable\n */\n Axis.prototype.paddingInner = function paddingInner(_) {\n return arguments.length ? (this._paddingInner = _, this) : this._paddingInner;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the outer padding of band scales to the specified number and returns the current class instance. If *value* is not specified, returns the current outer padding value.\n @param {Number} [*value* = 0.1]\n @chainable\n */\n Axis.prototype.paddingOuter = function paddingOuter(_) {\n return arguments.length ? (this._paddingOuter = _, this) : this._paddingOuter;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the scale range (in pixels) of the axis and returns the current class instance. The given array must have 2 values, but one may be `undefined` to allow the default behavior for that value. If *value* is not specified, returns the current scale range.\n @param {Array} [*value*]\n @chainable\n */\n Axis.prototype.range = function range$$1(_) {\n return arguments.length ? (this._range = _, this) : this._range;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the scale of the axis and returns the current class instance. If *value* is not specified, returns the current this._d3Scale\n @param {String} [*value* = \"linear\"]\n @chainable\n */\n Axis.prototype.scale = function scale(_) {\n return arguments.length ? (this._scale = _, this) : this._scale;\n };\n\n /**\n @memberof Axis\n @desc If *selector* is specified, sets the SVG container element to the specified d3 selector or DOM element and returns the current class instance. If *selector* is not specified, returns the current SVG container element.\n @param {String|HTMLElement} [*selector* = d3.select(\"body\").append(\"svg\")]\n @chainable\n */\n Axis.prototype.select = function select$1(_) {\n return arguments.length ? (this._select = d3Selection.select(_), this) : this._select;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the tick shape constructor and returns the current class instance. If *value* is not specified, returns the current shape.\n @param {String} [*value* = \"Line\"]\n @chainable\n */\n Axis.prototype.shape = function shape(_) {\n return arguments.length ? (this._shape = _, this) : this._shape;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the tick style of the axis and returns the current class instance. If *value* is not specified, returns the current tick style.\n @param {Object} [*value*]\n @chainable\n */\n Axis.prototype.shapeConfig = function shapeConfig(_) {\n return arguments.length ? (this._shapeConfig = d3plusCommon.assign(this._shapeConfig, _), this) : this._shapeConfig;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the tick formatter and returns the current class instance. If *value* is not specified, returns the current tick formatter, which by default is retrieved from the [d3-scale](https://github.com/d3/d3-scale#continuous_tickFormat).\n @param {Function} [*value*]\n @chainable\n */\n Axis.prototype.tickFormat = function tickFormat(_) {\n return arguments.length ? (this._tickFormat = _, this) : this._tickFormat;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the tick values of the axis and returns the current class instance. If *value* is not specified, returns the current tick values, which by default are interpreted based on the [domain](#Axis.domain) and the available [width](#Axis.width).\n @param {Array} [*value*]\n @chainable\n */\n Axis.prototype.ticks = function ticks(_) {\n return arguments.length ? (this._ticks = _, this) : this._ticks;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the tick size of the axis and returns the current class instance. If *value* is not specified, returns the current tick size.\n @param {Number} [*value* = 5]\n @chainable\n */\n Axis.prototype.tickSize = function tickSize(_) {\n return arguments.length ? (this._tickSize = _, this) : this._tickSize;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the title of the axis and returns the current class instance. If *value* is not specified, returns the current title.\n @param {String} [*value*]\n @chainable\n */\n Axis.prototype.title = function title(_) {\n return arguments.length ? (this._title = _, this) : this._title;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the title configuration of the axis and returns the current class instance. If *value* is not specified, returns the current title configuration.\n @param {Object} [*value*]\n @chainable\n */\n Axis.prototype.titleConfig = function titleConfig(_) {\n return arguments.length ? (this._titleConfig = Object.assign(this._titleConfig, _), this) : this._titleConfig;\n };\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the overall width of the axis and returns the current class instance. If *value* is not specified, returns the current width value.\n @param {Number} [*value* = 400]\n @chainable\n */\n Axis.prototype.width = function width(_) {\n return arguments.length ? (this._width = _, this) : this._width;\n };\n\n return Axis;\n }(d3plusCommon.BaseClass);\n\n /**\n @class AxisBottom\n @extends Axis\n @desc Shorthand method for creating an axis where the ticks are drawn below the horizontal domain path. Extends all functionality of the base [Axis](#Axis) class.\n */\n var AxisBottom = function (Axis$$1) {\n function AxisBottom() {\n Axis$$1.call(this);\n this.orient(\"bottom\");\n }\n\n if (Axis$$1) AxisBottom.__proto__ = Axis$$1;\n AxisBottom.prototype = Object.create(Axis$$1 && Axis$$1.prototype);\n AxisBottom.prototype.constructor = AxisBottom;\n\n return AxisBottom;\n }(Axis);\n\n /**\n @class AxisLeft\n @extends Axis\n @desc Shorthand method for creating an axis where the ticks are drawn to the left of the vertical domain path. Extends all functionality of the base [Axis](#Axis) class.\n */\n var AxisLeft = function (Axis$$1) {\n function AxisLeft() {\n Axis$$1.call(this);\n this.orient(\"left\");\n }\n\n if (Axis$$1) AxisLeft.__proto__ = Axis$$1;\n AxisLeft.prototype = Object.create(Axis$$1 && Axis$$1.prototype);\n AxisLeft.prototype.constructor = AxisLeft;\n\n return AxisLeft;\n }(Axis);\n\n /**\n @class AxisRight\n @extends Axis\n @desc Shorthand method for creating an axis where the ticks are drawn to the right of the vertical domain path. Extends all functionality of the base [Axis](#Axis) class.\n */\n var AxisRight = function (Axis$$1) {\n function AxisRight() {\n Axis$$1.call(this);\n this.orient(\"right\");\n }\n\n if (Axis$$1) AxisRight.__proto__ = Axis$$1;\n AxisRight.prototype = Object.create(Axis$$1 && Axis$$1.prototype);\n AxisRight.prototype.constructor = AxisRight;\n\n return AxisRight;\n }(Axis);\n\n /**\n @class AxisTop\n @extends Axis\n @desc Shorthand method for creating an axis where the ticks are drawn above the vertical domain path. Extends all functionality of the base [Axis](#Axis) class.\n */\n var AxisTop = function (Axis$$1) {\n function AxisTop() {\n Axis$$1.call(this);\n this.orient(\"top\");\n }\n\n if (Axis$$1) AxisTop.__proto__ = Axis$$1;\n AxisTop.prototype = Object.create(Axis$$1 && Axis$$1.prototype);\n AxisTop.prototype.constructor = AxisTop;\n\n return AxisTop;\n }(Axis);\n\n exports.Axis = Axis;\n exports.AxisBottom = AxisBottom;\n exports.AxisLeft = AxisLeft;\n exports.AxisRight = AxisRight;\n exports.AxisTop = AxisTop;\n exports.date = date;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n});\n//# sourceMappingURL=d3plus-axis.js.map\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3plus-axis/build/d3plus-axis.js\n// module id = 46\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3plus-axis/build/d3plus-axis.js?");/***/},/* 47 *//***/function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/*\n d3plus-color v0.6.1\n Color functions that extent the ability of d3-color.\n Copyright (c) 2017 D3plus - https://d3plus.org\n @license MIT\n*/\n(function (global, factory) {\n ( false ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, __webpack_require__(11), __webpack_require__(45)) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(11), __webpack_require__(45)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : factory(global.d3plus = global.d3plus || {}, global.d3Color, global.d3Scale);\n})(this, function (exports, d3Color, d3Scale) {\n 'use strict';\n\n /**\n @function colorAdd\n @desc Adds two colors together.\n @param {String} c1 The first color, a valid CSS color string.\n @param {String} c2 The second color, also a valid CSS color string.\n @param {String} [o1 = 1] Value from 0 to 1 of the first color's opacity.\n @param {String} [o2 = 1] Value from 0 to 1 of the first color's opacity.\n @returns {String}\n */\n\n var add = function add(c1, c2, o1, o2) {\n if (o1 === void 0) o1 = 1;\n if (o2 === void 0) o2 = 1;\n\n c1 = d3Color.hsl(c1);\n c2 = d3Color.hsl(c2);\n var d = Math.abs(c2.h * o2 - c1.h * o1);\n if (d > 180) {\n d -= 360;\n }\n var h = (Math.min(c1.h, c2.h) + d / 2) % 360;\n var l = c1.l + (c2.l * o2 - c1.l * o1) / 2,\n s = c1.s + (c2.s * o2 - c1.s * o1) / 2;\n // a = o1 + (o2 - o1) / 2;\n if (h < 0) {\n h += 360;\n }\n return d3Color.hsl(\"hsl(\" + h + \",\" + s * 100 + \"%,\" + l * 100 + \"%)\").toString();\n // return hsl(`hsl(${h},${s * 100}%,${l * 100}%,${a})`).toString();\n };\n\n /**\n @module {Object} colorDefaults\n @desc A set of default color values used when assigning colors based on data.\n *\n * | Name | Default | Description |\n * |---|---|---|\n * | dark | #444444 | Used in the [contrast](#contrast) function when the color given is very light. |\n * | light | #f7f7f7 | Used in the [contrast](#contrast) function when the color given is very dark. |\n * | missing | #cccccc | Used in the [assign](#assign) function when the value passed is `null` or `undefined`. |\n * | off | #b22200 | Used in the [assign](#assign) function when the value passed is `false`. |\n * | on | #224f20 | Used in the [assign](#assign) function when the value passed is `true`. |\n * | scale | `scale.ordinal().range([ \"#b22200\", \"#eace3f\", \"#282f6b\", \"#b35c1e\", \"#224f20\", \"#5f487c\", \"#759143\", \"#419391\", \"#993c88\", \"#e89c89\", \"#ffee8d\", \"#afd5e8\", \"#f7ba77\", \"#a5c697\", \"#c5b5e5\", \"#d1d392\", \"#bbefd0\", \"#e099cf\"])` | An ordinal scale used in the [assign](#assign) function for non-valid color strings and numbers. |\n */\n var defaults = {\n dark: \"#444444\",\n light: \"#f7f7f7\",\n missing: \"#cccccc\",\n off: \"#b22200\",\n on: \"#224f20\",\n scale: d3Scale.scaleOrdinal().range([\"#b22200\", \"#282f6b\", \"#eace3f\", \"#b35c1e\", \"#224f20\", \"#5f487c\", \"#759143\", \"#419391\", \"#993c88\", \"#e89c89\", \"#ffee8d\", \"#afd5e8\", \"#f7ba77\", \"#a5c697\", \"#c5b5e5\", \"#d1d392\", \"#bbefd0\", \"#e099cf\"])\n };\n\n /**\n Returns a color based on a key, whether it is present in a user supplied object or in the default object.\n @returns {String}\n @private\n */\n function getColor(k, u) {\n if (u === void 0) u = {};\n\n return k in u ? u[k] : k in defaults ? defaults[k] : defaults.missing;\n }\n\n /**\n @function colorAssign\n @desc Assigns a color to a value using a predefined set of defaults.\n @param {String} c A valid CSS color string.\n @param {Object} [u = defaults] An object containing overrides of the default colors.\n @returns {String}\n */\n var assign = function assign(c, u) {\n if (u === void 0) u = {};\n\n // If the value is null or undefined, set to grey.\n if ([null, void 0].indexOf(c) >= 0) {\n return getColor(\"missing\", u);\n }\n // Else if the value is true, set to green.\n else if (c === true) {\n return getColor(\"on\", u);\n }\n // Else if the value is false, set to red.\n else if (c === false) {\n return getColor(\"off\", u);\n }\n\n var p = d3Color.color(c);\n // If the value is not a valid color string, use the color scale.\n if (!p) {\n return getColor(\"scale\", u)(c);\n }\n\n return c.toString();\n };\n\n /**\n @function colorContrast\n @desc A set of default color values used when assigning colors based on data.\n @param {String} c A valid CSS color string.\n @param {Object} [u = defaults] An object containing overrides of the default colors.\n @returns {String}\n */\n var contrast = function contrast(c, u) {\n if (u === void 0) u = {};\n\n c = d3Color.rgb(c);\n var yiq = (c.r * 299 + c.g * 587 + c.b * 114) / 1000;\n return yiq >= 128 ? getColor(\"dark\", u) : getColor(\"light\", u);\n };\n\n /**\n @function colorLegible\n @desc Darkens a color so that it will appear legible on a white background.\n @param {String} c A valid CSS color string.\n @returns {String}\n */\n var legible = function legible(c) {\n c = d3Color.hsl(c);\n if (c.l > 0.45) {\n if (c.s > 0.8) {\n c.s = 0.8;\n }\n c.l = 0.45;\n }\n return c.toString();\n };\n\n /**\n @function colorLighter\n @desc Similar to d3.color.brighter, except that this also reduces saturation so that colors don't appear neon.\n @param {String} c A valid CSS color string.\n @param {String} [i = 0.5] A value from 0 to 1 dictating the strength of the function.\n @returns {String}\n */\n var lighter = function lighter(c, i) {\n if (i === void 0) i = 0.5;\n\n c = d3Color.hsl(c);\n i *= 1 - c.l;\n c.l += i;\n c.s -= i;\n return c.toString();\n };\n\n /**\n @function colorSubtract\n @desc Subtracts one color from another.\n @param {String} c1 The base color, a valid CSS color string.\n @param {String} c2 The color to remove from the base color, also a valid CSS color string.\n @param {String} [o1 = 1] Value from 0 to 1 of the first color's opacity.\n @param {String} [o2 = 1] Value from 0 to 1 of the first color's opacity.\n @returns {String}\n */\n var subtract = function subtract(c1, c2, o1, o2) {\n if (o1 === void 0) o1 = 1;\n if (o2 === void 0) o2 = 1;\n\n c1 = d3Color.hsl(c1);\n c2 = d3Color.hsl(c2);\n var d = c2.h * o2 - c1.h * o1;\n if (Math.abs(d) > 180) {\n d -= 360;\n }\n var h = (c1.h - d) % 360;\n var l = c1.l - (c2.l * o2 - c1.l * o1) / 2,\n s = c1.s - (c2.s * o2 - c1.s * o1) / 2;\n // a = o1 - (o2 - o1) / 2;\n if (h < 0) {\n h += 360;\n }\n return d3Color.hsl(\"hsl(\" + h + \",\" + s * 100 + \"%,\" + l * 100 + \"%)\").toString();\n // return hsl(`hsl(${h},${s * 100}%,${l * 100}%,${a})`).toString();\n };\n\n exports.colorAdd = add;\n exports.colorAssign = assign;\n exports.colorContrast = contrast;\n exports.colorDefaults = defaults;\n exports.colorLegible = legible;\n exports.colorLighter = lighter;\n exports.colorSubtract = subtract;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n});\n//# sourceMappingURL=d3plus-color.js.map\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/d3plus-color/build/d3plus-color.js\n// module id = 47\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/d3plus-color/build/d3plus-color.js?");/***/},/* 48 *//***/function(module,exports){eval("var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n//////////////////\n// WEBPACK FOOTER\n// ../~/lodash/isObjectLike.js\n// module id = 48\n// module chunks = 0\n\n//# sourceURL=webpack:///../~/lodash/isObjectLike.js?");/***/},/* 49 *//***/function(module,exports,__webpack_require__){"use strict";eval("/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar DOMNamespaces = __webpack_require__(136);\nvar setInnerHTML = __webpack_require__(97);\n\nvar createMicrosoftUnsafeLocalFunction = __webpack_require__(143);\nvar setTextContent = __webpack_require__(292);\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\n/**\n * In IE (8-11) and Edge, appending nodes with no children is dramatically\n * faster than appending a full subtree, so we essentially queue up the\n * .appendChild calls here and apply them so each node is added to its parent\n * before any children are added.\n *\n * In other browsers, doing so is slower or neutral compared to the other order\n * (in Firefox, twice as slow) so we only do this inversion in IE.\n *\n * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.\n */\nvar enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\\bEdge\\/\\d/.test(navigator.userAgent);\n\nfunction insertTreeChildren(tree) {\n if (!enableLazy) {\n return;\n }\n var node = tree.node;\n var children = tree.children;\n if (children.length) {\n for (var i = 0; i < children.length; i++) {\n insertTreeBefore(node, children[i], null);\n }\n } else if (tree.html != null) {\n setInnerHTML(node, tree.html);\n } else if (tree.text != null) {\n setTextContent(node, tree.text);\n }\n}\n\nvar insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {\n // DocumentFragments aren't actually part of the DOM after insertion so\n // appending children won't update the DOM. We need to ensure the fragment\n // is properly populated first, breaking out of our lazy approach for just\n // this level. Also, some